valueSetValue: iriRange | literalRange | languageRange | 
            '.' (iriExclusion+ | literalExclusion+ | languageExclusion+)

def visitValueSetValue(self, ctx: ShExDocParser.ValueSetValueContext):
        """ valueSetValue: iriRange | literalRange | languageRange | 
            '.' (iriExclusion+ | literalExclusion+ | languageExclusion+) """
        if ctx.iriRange() or ctx.literalRange() or ctx.languageRange():
            self.visitChildren(ctx)
        else:                               # '.' branch - wild card with exclusions
            if ctx.iriExclusion():
                vs_value = IriStemRange(Wildcard(), [])
                self._iri_exclusions(vs_value, ctx.iriExclusion())
            elif ctx.literalExclusion():
                vs_value = LiteralStemRange(Wildcard(), [])
                self._literal_exclusions(vs_value, ctx.literalExclusion())
            else:
                vs_value = LanguageStemRange(Wildcard(), [])
                self._language_exclusions(vs_value, ctx.languageExclusion())
            self.nodeconstraint.values.append(vs_value)