public Parser functionSpecifier() {
        if (functionSpecifierParser == null) {
           FutureParser future = scoped("functionSpecifier");
           functionSpecifierParser = future;
           future.setParser(
               sequence(
                   token("FUNCTION"),
                   choice(
                       sequence(
                           choice(
                               token("ALL"),
                               functionName()
                           ),
                           token("INTRINSIC")
                       ),
                       sequence(
                           functionName(),
                           optional(
                               sequence(
                                   token("AS"),
                                   literal()
                               )
                           )
                       )
                   )
               )
           );
        }

        return functionSpecifierParser;
    }