def visitLanguageRange(self, ctx: ShExDocParser.LanguageRangeContext):
        """ ShExC: languageRange : LANGTAG (STEM_MARK languagExclusion*)? 
            ShExJ: valueSetValue = objectValue | LanguageStem | LanguageStemRange """
        baselang = ctx.LANGTAG().getText()
        if not ctx.STEM_MARK():                 # valueSetValue = objectValue / objectValue = ObjectLiteral
            vsvalue = Language()
            vsvalue.languageTag = baselang[1:]
        else:
            if ctx.languageExclusion():
                vsvalue = LanguageStemRange(LANGTAG(baselang[1:]), exclusions=[])
                self._language_exclusions(vsvalue, ctx.languageExclusion())
            else:
                vsvalue = LanguageStem(LANGTAG(baselang[1:]))
        self.nodeconstraint.values.append(vsvalue)
ShExC: languageRange : LANGTAG (STEM_MARK languagExclusion*)? 
            ShExJ: valueSetValue = objectValue | LanguageStem | LanguageStemRange