public override Tree VisitPrimary(PrimaryContext primary)
        {
            var expressionContext = primary.parenthesized;

            if (expressionContext != null)
            {
                return((Expression)VisitExpression(expressionContext));
            }
            LiteralContext literal = primary.literal();

            if (literal != null)
            {
                return((Expression)VisitLiteral(literal));
            }
            ITerminalNode identifier = primary.Identifier();

            if (identifier != null)
            {
                return(makeIdentifier(identifier));
            }
            return(new This(primary.start.Line, primary.start.Column, primary.stop.Line, primary.stop.Column));
        }