public Parser divisionStart() {
        if (divisionStartParser == null) {
           FutureParser future = scoped("divisionStart");
           divisionStartParser = future;
           future.setParser(
               sequence(
                   choice(
                       sequence(
                           token("IDENTIFICATION"),
                           token("DIVISION")
                       ),
                       sequence(
                           token("ENVIRONMENT"),
                           token("DIVISION")
                       ),
                       sequence(
                           token("DATA"),
                           token("DIVISION")
                       ),
                       sequence(
                           token("PROCEDURE"),
                           token("DIVISION"),
                           optional(
                               usingOrChainingPhrase()
                           ),
                           optional(
                               returningProcedurePhrase()
                           )
                       )
                   ),
                   token(".")
               )
           );
        }

        return divisionStartParser;
    }