public Parser stopStatement() {
        if (stopStatementParser == null) {
           FutureParser future = scoped("stopStatement");
           stopStatementParser = future;
           future.setParser(
               choice(
                   sequence(
                       token("STOP"),
                       literal()
                   ),
                   sequence(
                       token("STOP"),
                       token("RUN"),
                       optional(
                           sequence(
                               choice(
                                   token("GIVING"),
                                   token("RETURNING")
                               ),
                               choice(
                                   sequence(
                                       optional(
                                           sequence(
                                               token("ADDRESS"),
                                               token("OF")
                                           )
                                       ),
                                       identifier()
                                   ),
                                   sequence(
                                       integer(),
                                       optional(
                                           sequence(
                                               token("SIZE"),
                                               optional(
                                                   token("IS")
                                               ),
                                               integer()
                                           )
                                       )
                                   )
                               )
                           )
                       )
                   ),
                   sequence(
                       token("STOP"),
                       token("ITERATOR")
                   )
               )
           );
        }

        return stopStatementParser;
    }