public Parser dataDivision() {
        if (dataDivisionParser == null) {
           FutureParser future = scoped("dataDivision");
           dataDivisionParser = future;
           future.setParser(
               choice(
                   sequence(
                       token("DATA"),
                       token("DIVISION"),
                       token("."),
                       optional(
                           dataDivisionBody()
                       )
                   ),
                   dataDivisionBody()
               )
           );
        }

        return dataDivisionParser;
    }