public Parser statement() {
        if (statementParser == null) {
           FutureParser future = scoped("statement");
           statementParser = future;
           future.setParser(
               choice(
                   acceptStatement(),
                   addStatement(),
                   alterStatement(),
                   callStatement(),
                   chainStatement(),
                   cancelStatement(),
                   closeStatement(),
                   commitStatement(),
                   computeStatement(),
                   continueStatement(),
                   deleteFileStatement(),
                   deleteStatement(),
                   disableStatement(),
                   divideStatement(),
                   enableStatement(),
                   entryStatement(),
                   evaluateStatement(),
                   examineStatement(),
                   execStatement(),
                   exhibitStatement(),
                   exitStatement(),
                   generateStatement(),
                   gobackStatement(),
                   goToStatement(),
                   identifiedByStatement(),
                   ifStatement(),
                   initiateStatement(),
                   invokeStatement(),
                   mergeStatement(),
                   moveStatement(),
                   multiplyStatement(),
                   nextSentenceStatement(),
                   onStatement(),
                   openStatement(),
                   performStatement(),
                   raiseStatement(),
                   readStatement(),
                   readyTraceStatement(),
                   receiveStatement(),
                   releaseStatement(),
                   resetTraceStatement(),
                   returnStatement(),
                   rewriteStatement(),
                   rollbackStatement(),
                   purgeStatement(),
                   searchStatement(),
                   sendStatement(),
                   serviceStatement(),
                   sortStatement(),
                   startStatement(),
                   stopStatement(),
                   stringStatement(),
                   subtractStatement(),
                   suppressStatement(),
                   terminateStatement(),
                   transformStatement(),
                   unlockStatement(),
                   unstringStatement(),
                   waitStatement(),
                   writeStatement(),
                   xmlGenerateStatement(),
                   xmlParseStatement(),
                   setStatement(),
                   initializeStatement(),
                   displayStatement(),
                   inspectStatement(),
                   allocateStatement(),
                   freeStatement(),
                   sequence(
                       verb(),
                       optional(
                           skipto(
                               choice(
                                   token("."),
                                   endOfStatement(),
                                   verb(),
                                   subStatementMarker()
                               )
                           )
                       )
                   )
               )
           );
        }

        return statementParser;
    }