public static GATNode _statement(this LL1Processor ll1)
        {
            var node = new GATNode();
            var next = WordContainer.GetWordType();

            if (ExpressionStmtProc.first.Contains(next))
            {
                var expressionStmt = ll1._expressionStmt();
                node.AddChild(expressionStmt);
                node.generator = Statement1;
                return(node);
            }
            var offset = 0;

            switch (WordContainer.GetWordType(offset))
            {
            case WordType.BRACE_L:
            {
                var compoundStmt = ll1._compoundStmt();
                node.AddChild(compoundStmt);
                node.generator = Statement2;
                break;
            }

            case WordType.IF:
            {
                var selectionStmt = ll1._selectionStmt();
                node.AddChild(selectionStmt);
                node.generator = Statement3;
                break;
            }

            case WordType.WHILE:
            {
                var iterationStmt = ll1._iterationStmt();
                node.AddChild(iterationStmt);
                node.generator = Statement4;
                break;
            }

            case WordType.RETURN:
            {
                var returnStmt = ll1._returnStmt();
                node.AddChild(returnStmt);
                node.generator = Statement5;
                break;
            }

            default:
            {
                throw new BNFException();
            }
            }
            return(node);
        }