public Parser integer() {
        if (integerParser == null) {
           FutureParser future = scoped("integer");
           integerParser = future;
           future.setParser(
               choice(
                   integerLiteral(),
                   integerConstant()
               )
           );
        }

        return integerParser;
    }