public Parser diskClause() {
        if (diskClauseParser == null) {
           FutureParser future = scoped("diskClause");
           diskClauseParser = future;
           future.setParser(
               choice(
                   sequence(
                       token("DISK"),
                       token("FROM"),
                       dataName()
                   ),
                   sequence(
                       token("LINE"),
                       token("ADVANCING"),
                       optional(
                           token("FILE")
                       ),
                       plus(
                           choice(
                               dataName(),
                               literal()
                           )
                       )
                   ),
                   sequence(
                       optional(
                           token("MULTIPLE")
                       ),
                       choice(
                           token("REEL"),
                           token("UNIT")
                       ),
                       optional(
                           token("FILE")
                       ),
                       plus(
                           choice(
                               dataName(),
                               literal()
                           )
                       )
                   ),
                   sequence(
                       optional(
                           token("DISK")
                       ),
                       token("FILE"),
                       plus(
                           choice(
                               dataName(),
                               literal()
                           )
                       )
                   ),
                   sequence(
                       choice(
                           token("DISK"),
                           token("PRINTER")
                       ),
                       token("DISPLAY")
                   ),
                   sequence(
                       optional(
                           choice(
                               token("DISK"),
                               token("KEYBOARD"),
                               token("DISPLAY"),
                               token("PRINTER"),
                               token("PRINTER-1")
                           )
                       ),
                       star(
                           choice(
                               dataName(),
                               literal()
                           )
                       )
                   )
               )
           );
        }

        return diskClauseParser;
    }