public void if_statement(Block container)
 {
     IToken token = null;
     IToken token2 = null;
     try
     {
         IfStatement statement2;
         Block block;
         token = this.LT(1);
         this.match(0x15);
         Expression expression = this.paren_expression();
         if (base.inputState.guessing == 0)
         {
             IfStatement statement;
             Block block2;
             IfStatement statement1 = statement = new IfStatement(ToLexicalInfo(token));
             statement.set_Condition(expression);
             statement2 = statement;
             statement2.set_TrueBlock(block2 = new Block());
             block = block2;
             container.Add(statement2);
         }
         this.compound_or_single_stmt(block);
         if ((this.LA(1) == 11) && tokenSet_2_.member(this.LA(2)))
         {
             token2 = this.LT(1);
             this.match(11);
             if (base.inputState.guessing == 0)
             {
                 Block block3;
                 statement2.set_FalseBlock(block3 = new Block(ToLexicalInfo(token2)));
                 block = block3;
             }
             this.compound_or_single_stmt(block);
         }
         else if (!tokenSet_15_.member(this.LA(1)) || !tokenSet_20_.member(this.LA(2)))
         {
             throw new NoViableAltException(this.LT(1), this.getFilename());
         }
     }
     catch (RecognitionException exception)
     {
         if (base.inputState.guessing != 0)
         {
             throw;
         }
         this.reportError(exception);
         this.recover(exception, tokenSet_15_);
     }
 }