public Parser examineStatement() {
        if (examineStatementParser == null) {
           FutureParser future = scoped("examineStatement");
           examineStatementParser = future;
           future.setParser(
               sequence(
                   token("EXAMINE"),
                   identifier(),
                   choice(
                       sequence(
                           token("TALLYING"),
                           choice(
                               sequence(
                                   token("UNTIL"),
                                   token("FIRST")
                               ),
                               token("ALL"),
                               token("LEADING")
                           ),
                           literal(),
                           optional(
                               sequence(
                                   token("REPLACING"),
                                   token("BY"),
                                   literal()
                               )
                           )
                       ),
                       sequence(
                           token("REPLACING"),
                           choice(
                               token("ALL"),
                               token("LEADING"),
                               token("FIRST"),
                               sequence(
                                   token("UNTIL"),
                                   token("FIRST")
                               )
                           ),
                           literal(),
                           token("BY"),
                           literal()
                       )
                   )
               )
           );
        }

        return examineStatementParser;
    }