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