public Parser labelDeclarative() {
        if (labelDeclarativeParser == null) {
           FutureParser future = scoped("labelDeclarative");
           labelDeclarativeParser = future;
           future.setParser(
               sequence(
                   optional(
                       token("GLOBAL")
                   ),
                   token("AFTER"),
                   optional(
                       token("STANDARD")
                   ),
                   optional(
                       choice(
                           token("BEGINNING"),
                           token("ENDING")
                       )
                   ),
                   optional(
                       choice(
                           token("FILE"),
                           token("REEL"),
                           token("UNIT")
                       )
                   ),
                   token("LABEL"),
                   token("PROCEDURE"),
                   optional(
                       token("ON")
                   ),
                   choice(
                       token("INPUT"),
                       token("OUTPUT"),
                       token("I-O"),
                       token("EXTEND"),
                       star(
                           fileName()
                       )
                   )
               )
           );
        }

        return labelDeclarativeParser;
    }