public override IExpression VisitCcIfBlock([NotNull] VBAConditionalCompilationParser.CcIfBlockContext context)
        {
            var ifCondTokens         = new ConstantExpression(new TokensValue(context.ccIf().GetTokens(_tokenStream)));
            var ifCond               = Visit(context.ccIf().ccExpression());
            var ifBlock              = Visit(context.ccBlock());
            var elseIfCodeCondBlocks = context
                                       .ccElseIfBlock()
                                       .Select(elseIf =>
                                               Tuple.Create <IExpression, IExpression, IExpression>(
                                                   new ConstantExpression(new TokensValue(elseIf.ccElseIf().GetTokens(_tokenStream))),
                                                   Visit(elseIf.ccElseIf().ccExpression()),
                                                   Visit(elseIf.ccBlock())))
                                       .ToList();

            IExpression elseCondTokens = null;
            IExpression elseBlock      = null;

            if (context.ccElseBlock() != null)
            {
                elseCondTokens = new ConstantExpression(new TokensValue(context.ccElseBlock().ccElse().GetTokens(_tokenStream)));
                elseBlock      = Visit(context.ccElseBlock().ccBlock());
            }
            var endIfTokens = new ConstantExpression(new TokensValue(context.ccEndIf().GetTokens(_tokenStream)));

            return(new ConditionalCompilationIfExpression(
                       ifCondTokens,
                       ifCond,
                       ifBlock,
                       elseIfCodeCondBlocks,
                       elseCondTokens,
                       elseBlock,
                       endIfTokens));
        }
        public override IExpression VisitCcIfBlock([NotNull] VBAConditionalCompilationParser.CcIfBlockContext context)
        {
            var ifCondCode           = new ConstantExpression(new StringValue(ParserRuleContextHelper.GetText(context.ccIf(), _stream)));
            var ifCond               = Visit(context.ccIf().ccExpression());
            var ifBlock              = Visit(context.ccBlock());
            var elseIfCodeCondBlocks = context
                                       .ccElseIfBlock()
                                       .Select(elseIf =>
                                               Tuple.Create <IExpression, IExpression, IExpression>(
                                                   new ConstantExpression(new StringValue(ParserRuleContextHelper.GetText(elseIf.ccElseIf(), _stream))),
                                                   Visit(elseIf.ccElseIf().ccExpression()),
                                                   Visit(elseIf.ccBlock()))).ToList();

            IExpression elseCondCode = null;
            IExpression elseBlock    = null;

            if (context.ccElseBlock() != null)
            {
                elseCondCode = new ConstantExpression(new StringValue(ParserRuleContextHelper.GetText(context.ccElseBlock().ccElse(), _stream)));
                elseBlock    = Visit(context.ccElseBlock().ccBlock());
            }
            IExpression endIf = new ConstantExpression(new StringValue(ParserRuleContextHelper.GetText(context.ccEndIf(), _stream)));

            return(new ConditionalCompilationIfExpression(
                       ifCondCode,
                       ifCond,
                       ifBlock,
                       elseIfCodeCondBlocks,
                       elseCondCode,
                       elseBlock,
                       endIf));
        }