public Parser methodIdParagraph() {
        if (methodIdParagraphParser == null) {
           FutureParser future = scoped("methodIdParagraph");
           methodIdParagraphParser = future;
           future.setParser(
               sequence(
                   token("METHOD-ID"),
                   optional(
                       token(".")
                   ),
                   choice(
                       methodName(),
                       sequence(
                           choice(
                               token("GET"),
                               token("SET")
                           ),
                           token("PROPERTY"),
                           propertyName()
                       )
                   ),
                   optional(
                       sequence(
                           token("AS"),
                           literal()
                       )
                   ),
                   optional(
                       token("SYNC")
                   ),
                   optional(
                       sequence(
                           optional(
                               token("IS")
                           ),
                           choice(
                               token("STATIC"),
                               sequence(
                                   optional(
                                       token("STATIC")
                                   ),
                                   token("EXTENSION")
                               )
                           )
                       )
                   ),
                   optional(
                       sequence(
                           optional(
                               token("IS")
                           ),
                           choice(
                               token("PUBLIC"),
                               token("PRIVATE"),
                               token("PROTECTED"),
                               token("INTERNAL")
                           )
                       )
                   ),
                   optional(
                       choice(
                           token("OVERRIDE"),
                           token("REDEFINE")
                       )
                   ),
                   optional(
                       sequence(
                           optional(
                               token("IS")
                           ),
                           choice(
                               token("FINAL"),
                               token("ABSTRACT")
                           )
                       )
                   ),
                   optional(
                       sequence(
                           token("FOR"),
                           interfaceName()
                       )
                   ),
                   optional(
                       attributeClause()
                   ),
                   optional(
                       sequence(
                           token("USING"),
                           plus(
                               parameterName()
                           )
                       )
                   ),
                   optional(
                       token(".")
                   )
               )
           );
        }

        return methodIdParagraphParser;
    }