public Parser computeStatement() {
        if (computeStatementParser == null) {
           FutureParser future = scoped("computeStatement");
           computeStatementParser = future;
           future.setParser(
               sequence(
                   token("COMPUTE"),
                   plus(
                       sequence(
                           qualifiedDataName(),
                           optional(
                               token("ROUNDED")
                           )
                       )
                   ),
                   choice(
                       token("="),
                       token("EQUAL")
                   ),
                   arithmeticExpression(),
                   optional(
                       sequence(
                           optional(
                               token("ON")
                           ),
                           token("SIZE"),
                           token("ERROR"),
                           nestedStatements()
                       )
                   ),
                   optional(
                       sequence(
                           token("NOT"),
                           optional(
                               token("ON")
                           ),
                           token("SIZE"),
                           token("ERROR"),
                           nestedStatements()
                       )
                   ),
                   optional(
                       token("END-COMPUTE")
                   )
               )
           );
        }

        return computeStatementParser;
    }