public Parser retryPhrase() {
        if (retryPhraseParser == null) {
           FutureParser future = scoped("retryPhrase");
           retryPhraseParser = future;
           future.setParser(
               sequence(
                   token("RETRY"),
                   choice(
                       sequence(
                           choice(
                               identifier(),
                               integer()
                           ),
                           token("TIMES")
                       ),
                       sequence(
                           token("FOR"),
                           choice(
                               identifier(),
                               integer()
                           ),
                           token("SECONDS")
                       ),
                       token("FOREVER")
                   )
               )
           );
        }

        return retryPhraseParser;
    }