public Parser environmentDivision() {
        if (environmentDivisionParser == null) {
           FutureParser future = scoped("environmentDivision");
           environmentDivisionParser = future;
           future.setParser(
               choice(
                   sequence(
                       token("ENVIRONMENT"),
                       token("DIVISION"),
                       token("."),
                       optional(
                           environmentDivisionBody()
                       )
                   ),
                   environmentDivisionBody(),
                   sequence(
                       configurationSectionBody(),
                       optional(
                           ioSection()
                       ),
                       optional(
                           skipto(
                               choice(
                                   paragraphStart(),
                                   sectionStart(),
                                   divisionStart()
                               )
                           )
                       )
                   ),
                   sequence(
                       ioSectionBody(),
                       optional(
                           configurationSection()
                       ),
                       optional(
                           skipto(
                               choice(
                                   paragraphStart(),
                                   sectionStart(),
                                   divisionStart()
                               )
                           )
                       )
                   )
               )
           );
        }

        return environmentDivisionParser;
    }