parser: extends grammar to support annotations
authorJean Privat <jean@pryen.org>
Tue, 16 Jul 2013 19:50:31 +0000 (15:50 -0400)
committerJean Privat <jean@pryen.org>
Thu, 25 Jul 2013 17:33:16 +0000 (13:33 -0400)
Signed-off-by: Jean Privat <jean@pryen.org>

src/parser/lexer.nit
src/parser/nit.sablecc3xx
src/parser/parser.nit
src/parser/parser_abs.nit
src/parser/parser_nodes.nit
src/parser/parser_prod.nit
src/parser/tables_nit.c

index 3c975a6..588180e 100644 (file)
@@ -968,7 +968,7 @@ redef class TBang
     end
 end
 
     end
 end
 
-redef class TClassid
+redef class TAt
     redef fun parser_index: Int
     do
        return 79
     redef fun parser_index: Int
     do
        return 79
@@ -980,7 +980,7 @@ redef class TClassid
     end
 end
 
     end
 end
 
-redef class TId
+redef class TClassid
     redef fun parser_index: Int
     do
        return 80
     redef fun parser_index: Int
     do
        return 80
@@ -992,7 +992,7 @@ redef class TId
     end
 end
 
     end
 end
 
-redef class TAttrid
+redef class TId
     redef fun parser_index: Int
     do
        return 81
     redef fun parser_index: Int
     do
        return 81
@@ -1004,7 +1004,7 @@ redef class TAttrid
     end
 end
 
     end
 end
 
-redef class TNumber
+redef class TAttrid
     redef fun parser_index: Int
     do
        return 82
     redef fun parser_index: Int
     do
        return 82
@@ -1016,7 +1016,7 @@ redef class TNumber
     end
 end
 
     end
 end
 
-redef class TFloat
+redef class TNumber
     redef fun parser_index: Int
     do
        return 83
     redef fun parser_index: Int
     do
        return 83
@@ -1028,7 +1028,7 @@ redef class TFloat
     end
 end
 
     end
 end
 
-redef class TChar
+redef class TFloat
     redef fun parser_index: Int
     do
        return 84
     redef fun parser_index: Int
     do
        return 84
@@ -1040,7 +1040,7 @@ redef class TChar
     end
 end
 
     end
 end
 
-redef class TString
+redef class TChar
     redef fun parser_index: Int
     do
        return 85
     redef fun parser_index: Int
     do
        return 85
@@ -1052,7 +1052,7 @@ redef class TString
     end
 end
 
     end
 end
 
-redef class TStartString
+redef class TString
     redef fun parser_index: Int
     do
        return 86
     redef fun parser_index: Int
     do
        return 86
@@ -1064,7 +1064,7 @@ redef class TStartString
     end
 end
 
     end
 end
 
-redef class TMidString
+redef class TStartString
     redef fun parser_index: Int
     do
        return 87
     redef fun parser_index: Int
     do
        return 87
@@ -1076,7 +1076,7 @@ redef class TMidString
     end
 end
 
     end
 end
 
-redef class TEndString
+redef class TMidString
     redef fun parser_index: Int
     do
        return 88
     redef fun parser_index: Int
     do
        return 88
@@ -1088,7 +1088,7 @@ redef class TEndString
     end
 end
 
     end
 end
 
-redef class TBadChar
+redef class TEndString
     redef fun parser_index: Int
     do
        return 89
     redef fun parser_index: Int
     do
        return 89
@@ -1100,7 +1100,7 @@ redef class TBadChar
     end
 end
 
     end
 end
 
-redef class TBadString
+redef class TBadChar
     redef fun parser_index: Int
     do
        return 90
     redef fun parser_index: Int
     do
        return 90
@@ -1112,7 +1112,7 @@ redef class TBadString
     end
 end
 
     end
 end
 
-redef class TExternCodeSegment
+redef class TBadString
     redef fun parser_index: Int
     do
        return 91
     redef fun parser_index: Int
     do
        return 91
@@ -1124,11 +1124,23 @@ redef class TExternCodeSegment
     end
 end
 
     end
 end
 
+redef class TExternCodeSegment
+    redef fun parser_index: Int
+    do
+       return 92
+    end
+
+    init init_tk(loc: Location)
+    do
+               _location = loc
+    end
+end
+
 
 redef class EOF
     redef fun parser_index: Int
     do
 
 redef class EOF
     redef fun parser_index: Int
     do
-       return 92
+       return 93
     end
 
     init(loc: Location)
     end
 
     init(loc: Location)
@@ -1540,42 +1552,45 @@ class Lexer
                                                return new TBang.init_tk(location)
                                        end
                                        if accept_token == 80 then
                                                return new TBang.init_tk(location)
                                        end
                                        if accept_token == 80 then
-                                               return new TClassid.init_tk(location)
+                                               return new TAt.init_tk(location)
                                        end
                                        if accept_token == 81 then
                                        end
                                        if accept_token == 81 then
-                                               return new TId.init_tk(location)
+                                               return new TClassid.init_tk(location)
                                        end
                                        if accept_token == 82 then
                                        end
                                        if accept_token == 82 then
-                                               return new TAttrid.init_tk(location)
+                                               return new TId.init_tk(location)
                                        end
                                        if accept_token == 83 then
                                        end
                                        if accept_token == 83 then
-                                               return new TNumber.init_tk(location)
+                                               return new TAttrid.init_tk(location)
                                        end
                                        if accept_token == 84 then
                                        end
                                        if accept_token == 84 then
-                                               return new TFloat.init_tk(location)
+                                               return new TNumber.init_tk(location)
                                        end
                                        if accept_token == 85 then
                                        end
                                        if accept_token == 85 then
-                                               return new TChar.init_tk(location)
+                                               return new TFloat.init_tk(location)
                                        end
                                        if accept_token == 86 then
                                        end
                                        if accept_token == 86 then
-                                               return new TString.init_tk(location)
+                                               return new TChar.init_tk(location)
                                        end
                                        if accept_token == 87 then
                                        end
                                        if accept_token == 87 then
-                                               return new TStartString.init_tk(location)
+                                               return new TString.init_tk(location)
                                        end
                                        if accept_token == 88 then
                                        end
                                        if accept_token == 88 then
-                                               return new TMidString.init_tk(location)
+                                               return new TStartString.init_tk(location)
                                        end
                                        if accept_token == 89 then
                                        end
                                        if accept_token == 89 then
-                                               return new TEndString.init_tk(location)
+                                               return new TMidString.init_tk(location)
                                        end
                                        if accept_token == 90 then
                                        end
                                        if accept_token == 90 then
-                                               return new TBadChar.init_tk(location)
+                                               return new TEndString.init_tk(location)
                                        end
                                        if accept_token == 91 then
                                        end
                                        if accept_token == 91 then
-                                               return new TBadString.init_tk(location)
+                                               return new TBadChar.init_tk(location)
                                        end
                                        if accept_token == 92 then
                                        end
                                        if accept_token == 92 then
+                                               return new TBadString.init_tk(location)
+                                       end
+                                       if accept_token == 93 then
                                                return new TExternCodeSegment.init_tk(location)
                                        end
                                else
                                                return new TExternCodeSegment.init_tk(location)
                                        end
                                else
index 9731e2a..d6c8059 100644 (file)
@@ -142,6 +142,7 @@ ge = '>=';
 gg = '>>';
 starship = '<=>';
 bang='!';
 gg = '>>';
 starship = '<=>';
 bang='!';
+at='@';
 
 classid = uppercase letter*;
 id = lowercase letter*;
 
 classid = uppercase letter*;
 id = lowercase letter*;
@@ -174,10 +175,10 @@ module
        = moduledecl? [imports]:import* [extern_bodies]:extern_code_body* [classdefs]:classdef* implicit_top_class? implicit_main_class? {-> New module(moduledecl, [imports.import], [extern_bodies.extern_code_block], [classdefs.classdef,implicit_top_class.classdef,implicit_main_class.classdef])};
 
 moduledecl
        = moduledecl? [imports]:import* [extern_bodies]:extern_code_body* [classdefs]:classdef* implicit_top_class? implicit_main_class? {-> New module(moduledecl, [imports.import], [extern_bodies.extern_code_block], [classdefs.classdef,implicit_top_class.classdef,implicit_main_class.classdef])};
 
 moduledecl
-       = [doc]:no kwmodule no module_name [n2]:n1 {-> New moduledecl(doc.doc, kwmodule, module_name)};
+       = [doc]:no kwmodule no module_name annotation_withend? [n2]:n1 {-> New moduledecl(doc.doc, kwmodule, module_name, annotation_withend.annotations)};
 
 import
 
 import
-       = {std} [doc]:no visibility kwimport no module_name [n2]:n1 {-> New import.std(visibility, kwimport, module_name)}
+       = {std} [doc]:no visibility kwimport no module_name annotation_withend? [n2]:n1 {-> New import.std(visibility, kwimport, module_name, annotation_withend.annotations)}
        | {no} [doc]:no visibility kwimport no kwend [n2]:n1 {-> New import.no(visibility, kwimport, kwend)}
        ;
 
        | {no} [doc]:no visibility kwimport no kwend [n2]:n1 {-> New import.no(visibility, kwimport, kwend)}
        ;
 
@@ -195,7 +196,7 @@ implicit_main_meth {-> propdef}
 
 /* CLASSES *******************************************************************/
 classdef
 
 /* CLASSES *******************************************************************/
 classdef
-       = [doc]:no redef visibility classkind no classid formaldefs? extern_code_block? [superclasses]:superclass* propdefs* [n2]:no kwend {-> New classdef.std(doc.doc, redef.kwredef, visibility, classkind, classid, [formaldefs.formaldef], extern_code_block, [superclasses.superclass], [propdefs.propdef], kwend)};
+       = [doc]:no redef visibility classkind no classid formaldefs? line_annotations_forclass? extern_code_block? [superclasses]:superclass* propdefs* [n2]:no kwend {-> New classdef.std(doc.doc, redef.kwredef, visibility, classkind, classid, [formaldefs.formaldef], line_annotations_forclass.annotations, extern_code_block, [superclasses.superclass], [propdefs.propdef], kwend)};
 redef {-> kwredef?}
        = kwredef? {-> kwredef};
 classkind
 redef {-> kwredef?}
        = kwredef? {-> kwredef};
 classkind
@@ -211,31 +212,40 @@ formaldefs {-> formaldef*}
 formaldefs_tail {-> formaldef}
        = comma no formaldef {-> formaldef};
 formaldef
 formaldefs_tail {-> formaldef}
        = comma no formaldef {-> formaldef};
 formaldef
-       = classid typing? {-> New formaldef(classid, typing.type)};
+       = classid annotations? typing? {-> New formaldef(classid, typing.type, annotations)};
 
 superclass {-> superclass}
 
 superclass {-> superclass}
-       = {super} no kwsuper [n2]:no type {-> New superclass(kwsuper, type)}
+       = {super} no kwsuper [n2]:no type annotation_withend? {-> New superclass(kwsuper, type, annotation_withend.annotations)}
        ;
 
 propdefs~toplevel {-> propdef}
        = propdef~toplevel n1 {-> propdef~toplevel.propdef}
        ;
 propdef~toplevel {-> propdef}
        ;
 
 propdefs~toplevel {-> propdef}
        = propdef~toplevel n1 {-> propdef~toplevel.propdef}
        ;
 propdef~toplevel {-> propdef}
-       = {meth} [doc]:no redef visibility kwmeth methid signature kwdo stmtso kwend? {-> New propdef.concrete_meth(doc.doc, redef.kwredef, visibility, kwmeth, methid, signature, stmtso.expr)}
-       | {assign_return} [doc]:no redef visibility kwmeth methid signature_withret assign no assign_return {-> New propdef.concrete_meth(doc.doc, redef.kwredef, visibility, kwmeth, methid, signature_withret.signature, assign_return.expr)}
-!toplevel| {deferred} [doc]:no redef visibility kwmeth methid signature kwis kwabstract {-> New propdef.deferred_meth(doc.doc, redef.kwredef, visibility, kwmeth, methid, signature.signature)}
+       = {meth} [doc]:no redef visibility kwmeth methid signature annotation_noend? kwdo stmtso kwend? {-> New propdef.concrete_meth(doc.doc, redef.kwredef, visibility, kwmeth, methid, signature, annotation_noend.annotations, stmtso.expr)}
+       | {assign_return} [doc]:no redef visibility kwmeth methid signature_withret assign no assign_return {-> New propdef.concrete_meth(doc.doc, redef.kwredef, visibility, kwmeth, methid, signature_withret.signature, Null, assign_return.expr)}
+       | {nobody} [doc]:no redef visibility kwmeth methid signature annotation_withend {-> New propdef.deferred_meth(doc.doc, redef.kwredef, visibility, kwmeth, methid, signature.signature, annotation_withend.annotations)}
+!toplevel| {deferred} [doc]:no redef visibility kwmeth methid signature kwis kwabstract {-> New propdef.deferred_meth(doc.doc, redef.kwredef, visibility, kwmeth, methid, signature.signature, Null)}
 !toplevel| {intern} [doc]:no redef visibility kwmeth methid signature kwis kwintern {-> New propdef.intern_meth(doc.doc, redef.kwredef, visibility, kwmeth, methid, signature.signature)}
        | {extern} [doc]:no redef visibility kwmeth methid signature kwis kwextern string? extern_calls? extern_code_block? {-> New propdef.extern_meth(doc.doc, redef.kwredef, visibility, kwmeth, methid, signature.signature, string, extern_calls, extern_code_block)}
        | {extern_implicit} [doc]:no redef visibility kwmeth methid signature extern_calls? extern_code_block {-> New propdef.extern_meth(doc.doc, redef.kwredef, visibility, kwmeth, methid, signature.signature, Null, extern_calls, extern_code_block)}
 !toplevel| {intern} [doc]:no redef visibility kwmeth methid signature kwis kwintern {-> New propdef.intern_meth(doc.doc, redef.kwredef, visibility, kwmeth, methid, signature.signature)}
        | {extern} [doc]:no redef visibility kwmeth methid signature kwis kwextern string? extern_calls? extern_code_block? {-> New propdef.extern_meth(doc.doc, redef.kwredef, visibility, kwmeth, methid, signature.signature, string, extern_calls, extern_code_block)}
        | {extern_implicit} [doc]:no redef visibility kwmeth methid signature extern_calls? extern_code_block {-> New propdef.extern_meth(doc.doc, redef.kwredef, visibility, kwmeth, methid, signature.signature, Null, extern_calls, extern_code_block)}
-!toplevel| {var} [doc]:no readable? writable? redef visibility kwvar attrid typing? {-> New propdef.attr(doc.doc, readable.able, writable.able, redef.kwredef, visibility, kwvar, attrid, Null, typing.type, Null)}
-!toplevel| {var2} [doc]:no readable? writable? redef visibility kwvar attrid typing? assign [n2]:no expr {-> New propdef.attr(doc.doc, readable.able, writable.able, redef.kwredef, visibility, kwvar, attrid, Null, typing.type, expr)}
-!toplevel| {var3} [doc]:no redef visibility kwvar id typing? writable2? {-> New propdef.attr(doc.doc, Null, writable2.able, redef.kwredef, visibility, kwvar, Null, id, typing.type, Null)}
-!toplevel| {var4} [doc]:no redef visibility kwvar id typing? writable2? assign [n2]:no expr {-> New propdef.attr(doc.doc, Null, writable2.able, redef.kwredef, visibility, kwvar, Null, id, typing.type, expr)}
-!toplevel| {init} [doc]:no redef visibility kwinit methid? signature kwdo stmtso kwend? {-> New propdef.concrete_init(doc.doc, redef.kwredef, visibility, kwinit, methid, signature, stmtso.expr)}
-!toplevel| {type} [doc]:no redef visibility kwtype classid typing {-> New propdef.type(doc.doc, redef.kwredef, visibility, kwtype, classid, typing.type)}
+!toplevel| {var} [doc]:no readable? writable? redef visibility kwvar attrid typing? {-> New propdef.attr(doc.doc, readable.able, writable.able, redef.kwredef, visibility, kwvar, attrid, Null, typing.type, Null, Null)}
+!toplevel| {var2} [doc]:no readable? writable? redef visibility kwvar attrid typing? assign [n2]:no expr {-> New propdef.attr(doc.doc, readable.able, writable.able, redef.kwredef, visibility, kwvar, attrid, Null, typing.type, Null, expr)}
+!toplevel| {var3} [doc]:no redef visibility kwvar id typing? writable2? annotation_withend? {-> New propdef.attr(doc.doc, Null, writable2.able, redef.kwredef, visibility, kwvar, Null, id, typing.type, annotation_withend.annotations, Null)}
+!toplevel| {var4} [doc]:no redef visibility kwvar id typing? writable2? assign [n2]:no expr_nois annotation_withend? {-> New propdef.attr(doc.doc, Null, writable2.able, redef.kwredef, visibility, kwvar, Null, id, typing.type, annotation_withend.annotations, expr_nois.expr)}
+!toplevel| {init} [doc]:no redef visibility kwinit methid? signature annotation_noend? kwdo stmtso kwend? {-> New propdef.concrete_init(doc.doc, redef.kwredef, visibility, kwinit, methid, signature, annotation_noend.annotations, stmtso.expr)}
+!toplevel| {type} [doc]:no redef visibility kwtype classid typing annotation_withend? {-> New propdef.type(doc.doc, redef.kwredef, visibility, kwtype, classid, typing.type, annotation_withend.annotations)}
 !toplevel| {extern_init} [doc]:no redef visibility kwnew methid? signature kwis kwextern string? extern_calls? extern_code_block? {-> New propdef.extern_init(doc.doc, redef.kwredef, visibility, kwnew, methid, signature, string, extern_calls, extern_code_block)}
 !toplevel| {extern_init_implicit} [doc]:no redef visibility kwnew methid? signature string? extern_calls? extern_code_block {-> New propdef.extern_init(doc.doc, redef.kwredef, visibility, kwnew, methid, signature, string, extern_calls, extern_code_block)}
        ;
 !toplevel| {extern_init} [doc]:no redef visibility kwnew methid? signature kwis kwextern string? extern_calls? extern_code_block? {-> New propdef.extern_init(doc.doc, redef.kwredef, visibility, kwnew, methid, signature, string, extern_calls, extern_code_block)}
 !toplevel| {extern_init_implicit} [doc]:no redef visibility kwnew methid? signature string? extern_calls? extern_code_block {-> New propdef.extern_init(doc.doc, redef.kwredef, visibility, kwnew, methid, signature, string, extern_calls, extern_code_block)}
        ;
+annotation_withend {-> annotations}
+       = {oneliner} kwis many_annotations {-> many_annotations.annotations}
+       | {more} kwis n1 line_annotations kwend {-> line_annotations.annotations}
+       ;
+annotation_noend {-> annotations}
+       = {oneliner} kwis many_annotations {-> many_annotations.annotations}
+       | {more} kwis n1 line_annotations {-> line_annotations.annotations}
+       ;
 readable {-> able}
        = redef kwreadable {-> New able.read(redef.kwredef, kwreadable)}
        ;
 readable {-> able}
        = redef kwreadable {-> New able.read(redef.kwredef, kwreadable)}
        ;
@@ -292,8 +302,8 @@ params {-> param*}
 params_tail {-> param}
        = comma no param {-> param};
 param
 params_tail {-> param}
        = comma no param {-> param};
 param
-       = {untyped} id {-> New param(id, Null, Null)}
-       | id typing dotdotdot? {-> New param(id, typing.type, dotdotdot)}
+       = {untyped} id annotations? {-> New param(id, Null, Null, annotations)}
+       | id annotations? typing dotdotdot? {-> New param(id, typing.type, dotdotdot, annotations)}
        ;
 
 closure_decls {->closure_decl*}
        ;
 
 closure_decls {->closure_decl*}
@@ -334,9 +344,9 @@ extern_code_block = in_language? extern_code_segment;
 extern_code_body {-> extern_code_block} = no extern_code_block {-> extern_code_block};
 
 /* TYPES *********************************************************************/
 extern_code_body {-> extern_code_block} = no extern_code_block {-> extern_code_block};
 
 /* TYPES *********************************************************************/
-type~nobra {-> type}
-       = {simple} kwnullable? classid {-> New type(kwnullable, classid, [])}
-!nobra | {generic} kwnullable? classid obra no types [n2]:no cbra {-> New type(kwnullable, classid, [types.type])}
+type~nobra~nopar {-> type}
+       = {simple} kwnullable? classid annotations~nopar? {-> New type(kwnullable, classid, [], annotations~nopar.annotations)}
+!nobra | {generic} kwnullable? classid obra no types [n2]:no cbra annotations~nopar? {-> New type(kwnullable, classid, [types.type], annotations~nopar.annotations)}
        ;
 types {-> type*} 
        = type types_tail* {-> [type, types_tail.type]};
        ;
 types {-> type*} 
        = type types_tail* {-> [type, types_tail.type]};
@@ -360,22 +370,22 @@ stmtsnend {-> expr}
        = stmt stmts_tail* n kwend {-> New expr.block([stmt.expr, stmts_tail.expr], kwend)};
 stmts_tail {-> expr}
        = n stmt {-> stmt.expr};
        = stmt stmts_tail* n kwend {-> New expr.block([stmt.expr, stmts_tail.expr], kwend)};
 stmts_tail {-> expr}
        = n stmt {-> stmt.expr};
-stmt~withelse {-> expr}
+stmt~withelse~noexpr~nopar {-> expr}
        = {vardecl} vardecl~withelse {-> vardecl~withelse.expr}
        = {vardecl} vardecl~withelse {-> vardecl~withelse.expr}
-       | {assign} assignment~withelse {-> assignment~withelse.expr}
+       | {assign} assignment~withelse~nopar {-> assignment~withelse~nopar.expr}
        | {return} kwreturn expr_final~withelse? {-> New expr.return(kwreturn, expr_final~withelse.expr)}
        | {break} kwbreak label? expr_final~withelse? {-> New expr.break(kwbreak, label, expr_final~withelse.expr)}
        | {abort} kwabort {-> New expr.abort(kwabort)}
        | {continue} kwcontinue label? expr_final~withelse? {-> New expr.continue(kwcontinue, label, expr_final~withelse.expr)}
        | {do} do~withelse {-> do~withelse.expr}
        | {return} kwreturn expr_final~withelse? {-> New expr.return(kwreturn, expr_final~withelse.expr)}
        | {break} kwbreak label? expr_final~withelse? {-> New expr.break(kwbreak, label, expr_final~withelse.expr)}
        | {abort} kwabort {-> New expr.abort(kwabort)}
        | {continue} kwcontinue label? expr_final~withelse? {-> New expr.continue(kwcontinue, label, expr_final~withelse.expr)}
        | {do} do~withelse {-> do~withelse.expr}
-       | {if} if~withelse {-> if~withelse.expr}
+!noexpr        | {if} if~withelse {-> if~withelse.expr}
        | {while} while~withelse {-> while~withelse.expr}
        | {loop} loop~withelse {-> loop~withelse.expr}
        | {for} for~withelse {-> for~withelse.expr}
        | {assert} assert~withelse {-> assert~withelse.expr}
        | {while} while~withelse {-> while~withelse.expr}
        | {loop} loop~withelse {-> loop~withelse.expr}
        | {for} for~withelse {-> for~withelse.expr}
        | {assert} assert~withelse {-> assert~withelse.expr}
-       | {call} recv id args_nopar closure_defs~withelse? {-> New expr.call(recv.expr, id, args_nopar.exprs, [closure_defs~withelse.closure_def])}
-       | {super} qualified? kwsuper args_nopar {-> New expr.super(qualified, kwsuper, args_nopar.exprs)}
-       | {init} recv kwinit args_nopar {-> New expr.init(recv.expr, kwinit, args_nopar.exprs)}
+!noexpr        | {call} recv id args_nopar closure_defs~withelse? {-> New expr.call(recv.expr, id, args_nopar.exprs, [closure_defs~withelse.closure_def])}
+!noexpr        | {super} qualified? kwsuper args_nopar {-> New expr.super(qualified, kwsuper, args_nopar.exprs)}
+!noexpr        | {init} recv kwinit args_nopar {-> New expr.init(recv.expr, kwinit, args_nopar.exprs)}
        | {debug_type_is} kwdebug kwtype type column expr_final~withelse {-> New expr.debug_type(kwdebug, kwtype, expr_final~withelse.expr, type) }
        ;
 
        | {debug_type_is} kwdebug kwtype type column expr_final~withelse {-> New expr.debug_type(kwdebug, kwtype, expr_final~withelse.expr, type) }
        ;
 
@@ -406,17 +416,17 @@ assign_continue~withelse{-> expr}
        ;
 
 vardecl~withelse{-> expr}
        ;
 
 vardecl~withelse{-> expr}
-       = kwvar id typing? {-> New expr.vardecl(kwvar, id, typing.type, Null, Null)}
-       | {assign} kwvar id typing? assign no expr_final~withelse {-> New expr.vardecl(kwvar, id, typing.type, assign, expr_final~withelse.expr)}
+       = kwvar id annotations? typing? {-> New expr.vardecl(kwvar, id, typing.type, Null, Null, annotations)}
+       | {assign} kwvar id annotations? typing? assign no expr_final~withelse {-> New expr.vardecl(kwvar, id, typing.type, assign, expr_final~withelse.expr, annotations)}
        ;
 
        ;
 
-assignment~withelse {-> expr}
-       = {attr} recv attrid assign expr_final~withelse {-> New expr.attr_assign(recv.expr, attrid, assign, expr_final~withelse.expr)}
-       | {call} recv id args assign expr_final~withelse {-> New expr.call_assign(recv.expr, id, args.exprs, assign,  expr_final~withelse.expr)}
-       | {bra} expr_atom braargs assign expr_final~withelse {-> New expr.bra_assign(expr_atom.expr, braargs.exprs, assign,  expr_final~withelse.expr)}
-       | {attr_re} recv attrid assign_op expr_final~withelse {-> New expr.attr_reassign(recv.expr, attrid, assign_op,  expr_final~withelse.expr)}
-       | {call_re} recv id args assign_op expr_final~withelse {-> New expr.call_reassign(recv.expr, id, args.exprs, assign_op,  expr_final~withelse.expr)}
-       | {bra_re} expr_atom braargs assign_op expr_final~withelse {-> New expr.bra_reassign(expr_atom.expr, braargs.exprs, assign_op,  expr_final~withelse.expr)}
+assignment~withelse~nopar {-> expr}
+       = {attr} recv~nopar attrid assign expr_final~withelse {-> New expr.attr_assign(recv~nopar.expr, attrid, assign, expr_final~withelse.expr)}
+       | {call} recv~nopar id args assign expr_final~withelse {-> New expr.call_assign(recv~nopar.expr, id, args.exprs, assign,  expr_final~withelse.expr)}
+       | {bra} expr_atom~nopar braargs assign expr_final~withelse {-> New expr.bra_assign(expr_atom~nopar.expr, braargs.exprs, assign,  expr_final~withelse.expr)}
+       | {attr_re} recv~nopar attrid assign_op expr_final~withelse {-> New expr.attr_reassign(recv~nopar.expr, attrid, assign_op,  expr_final~withelse.expr)}
+       | {call_re} recv~nopar id args assign_op expr_final~withelse {-> New expr.call_reassign(recv~nopar.expr, id, args.exprs, assign_op,  expr_final~withelse.expr)}
+       | {bra_re} expr_atom~nopar braargs assign_op expr_final~withelse {-> New expr.bra_reassign(expr_atom~nopar.expr, braargs.exprs, assign_op,  expr_final~withelse.expr)}
        ;
 assign_op
        = {plus} pluseq
        ;
 assign_op
        = {plus} pluseq
@@ -468,34 +478,34 @@ expr_final~nopar~withelse~nobra {-> expr}
 !nobra!nopar   | {closure_bra} expr_atom braargs closure_defs~withelse {-> New expr.bra(expr_atom.expr, braargs.exprs, [closure_defs~withelse.closure_def])}
        ;
 
 !nobra!nopar   | {closure_bra} expr_atom braargs closure_defs~withelse {-> New expr.bra(expr_atom.expr, braargs.exprs, [closure_defs~withelse.closure_def])}
        ;
 
-expr~nopar~nobra {-> expr}
-       = expr_and~nopar~nobra {-> expr_and~nopar~nobra.expr}
-       | {ifexpr} kwif [n1]:no expr [n2]:no kwthen [n3]:no [then]:expr [n4]:no kwelse [n5]:no [else]:expr~nopar~nobra {-> New expr.ifexpr(kwif, expr, kwthen, then, kwelse, else.expr)}
+expr~nopar~nobra~nois {-> expr}
+       = expr_and~nopar~nobra~nois {-> expr_and~nopar~nobra~nois.expr}
+       | {ifexpr} kwif [n1]:no expr [n2]:no kwthen [n3]:no [then]:expr [n4]:no kwelse [n5]:no [else]:expr~nopar~nobra~nois {-> New expr.ifexpr(kwif, expr, kwthen, then, kwelse, else.expr)}
        ;
 
        ;
 
-expr_and~nopar~nobra {-> expr}
-       = expr_not~nopar~nobra {-> expr_not~nopar~nobra.expr}
-       | {:or} expr_and~nopar~nobra :kwor :no expr_not~nopar~nobra
-       | {:and} expr_and~nopar~nobra :kwand :no expr_not~nopar~nobra
-       | {:or_else} expr_and~nopar~nobra :kwor :kwelse :no expr_not~nopar~nobra
+expr_and~nopar~nobra~nois {-> expr}
+       = expr_not~nopar~nobra~nois {-> expr_not~nopar~nobra~nois.expr}
+       | {:or} expr_and~nopar~nobra~nois :kwor :no expr_not~nopar~nobra~nois
+       | {:and} expr_and~nopar~nobra~nois :kwand :no expr_not~nopar~nobra~nois
+       | {:or_else} expr_and~nopar~nobra~nois :kwor :kwelse :no expr_not~nopar~nobra~nois
        ;
 
        ;
 
-expr_not~nopar~nobra {-> expr}
-       = expr_eq~nopar~nobra {-> expr_eq~nopar~nobra.expr}
-       | {not} kwnot no expr_not~nopar~nobra {-> New expr.not(kwnot, expr_not~nopar~nobra.expr)}
+expr_not~nopar~nobra~nois {-> expr}
+       = expr_eq~nopar~nobra~nois {-> expr_eq~nopar~nobra~nois.expr}
+       | {not} kwnot no expr_not~nopar~nobra~nois {-> New expr.not(kwnot, expr_not~nopar~nobra~nois.expr)}
        ;
 
        ;
 
-expr_eq~nopar~nobra {-> expr}
+expr_eq~nopar~nobra~nois {-> expr}
        = expr_add~nopar~nobra {-> expr_add~nopar~nobra.expr}
        | {:eq} expr_add~nopar~nobra :eq :no [expr2]:expr_add~nopar~nobra
        = expr_add~nopar~nobra {-> expr_add~nopar~nobra.expr}
        | {:eq} expr_add~nopar~nobra :eq :no [expr2]:expr_add~nopar~nobra
-       | {:ee} expr_add~nopar~nobra :kwis :no [expr2]:expr_add~nopar~nobra
+!nois  | {ee} [expr]:expr_add~nopar~nobra kwis no [expr2]:expr_add~nopar~nobra {-> New expr.ee(expr.expr, expr2.expr)}
        | {:ne} expr_add~nopar~nobra :ne :no [expr2]:expr_add~nopar~nobra
        | {:lt} expr_add~nopar~nobra :lt :no [expr2]:expr_add~nopar~nobra
        | {:le} expr_add~nopar~nobra :le :no [expr2]:expr_add~nopar~nobra
        | {:ne} expr_add~nopar~nobra :ne :no [expr2]:expr_add~nopar~nobra
        | {:lt} expr_add~nopar~nobra :lt :no [expr2]:expr_add~nopar~nobra
        | {:le} expr_add~nopar~nobra :le :no [expr2]:expr_add~nopar~nobra
-       | {:ll} expr_eq~nopar~nobra :ll :no [expr2]:expr_add~nopar~nobra
+       | {:ll} expr_eq~nopar~nobra~nois :ll :no [expr2]:expr_add~nopar~nobra
        | {:gt} expr_add~nopar~nobra :gt :no [expr2]:expr_add~nopar~nobra
        | {:ge} expr_add~nopar~nobra :ge :no [expr2]:expr_add~nopar~nobra
        | {:gt} expr_add~nopar~nobra :gt :no [expr2]:expr_add~nopar~nobra
        | {:ge} expr_add~nopar~nobra :ge :no [expr2]:expr_add~nopar~nobra
-       | {:gg} expr_eq~nopar~nobra :gg :no [expr2]:expr_add~nopar~nobra
+       | {:gg} expr_eq~nopar~nobra~nois :gg :no [expr2]:expr_add~nopar~nobra
        | {:starship} expr_add~nopar~nobra :starship :no [expr2]:expr_add~nopar~nobra
        | {:isa} expr_add~nopar~nobra :kwisa :no type~nobra
        ;
        | {:starship} expr_add~nopar~nobra :starship :no [expr2]:expr_add~nopar~nobra
        | {:isa} expr_add~nopar~nobra :kwisa :no type~nobra
        ;
@@ -521,7 +531,7 @@ expr_minus~nopar~nobra {-> expr}
 
 expr_new~nopar~nobra {-> expr}
        = expr_atom~nopar~nobra {-> expr_atom~nopar~nobra.expr}
 
 expr_new~nopar~nobra {-> expr}
        = expr_atom~nopar~nobra {-> expr_atom~nopar~nobra.expr}
-       | {new} kwnew no type~nobra args {-> New expr.new(kwnew, type~nobra.type, Null, args.exprs)}
+       | {new} kwnew no type~nobra_nopar args {-> New expr.new(kwnew, type~nobra_nopar.type, Null, args.exprs)}
        | {isset_attr} kwisset recv~nopar~nobra attrid {-> New expr.isset_attr(kwisset, recv~nopar~nobra.expr, attrid)}
        ;
 
        | {isset_attr} kwisset recv~nopar~nobra attrid {-> New expr.isset_attr(kwisset, recv~nopar~nobra.expr, attrid)}
        ;
 
@@ -531,27 +541,27 @@ expr_atom~nopar~nobra {-> expr}
        | {super} qualified? kwsuper args {-> New expr.super(qualified, kwsuper, args.exprs)}
        | {init} recv~nopar~nobra kwinit args {-> New expr.init(recv~nopar~nobra.expr, kwinit, args.exprs)}
 !nobra | {bra} expr_atom~nopar braargs {-> New expr.bra(expr_atom~nopar.expr, braargs.exprs, [])}
        | {super} qualified? kwsuper args {-> New expr.super(qualified, kwsuper, args.exprs)}
        | {init} recv~nopar~nobra kwinit args {-> New expr.init(recv~nopar~nobra.expr, kwinit, args.exprs)}
 !nobra | {bra} expr_atom~nopar braargs {-> New expr.bra(expr_atom~nopar.expr, braargs.exprs, [])}
-       | {new} kwnew no type~nobra dot [n2]:no id args {-> New expr.new(kwnew, type~nobra.type, id, args.exprs)}
+       | {new} kwnew no type~nobra_nopar dot [n2]:no id args {-> New expr.new(kwnew, type~nobra_nopar.type, id, args.exprs)}
 // !nopar to unambiguise 'foo[5].bar' between '(foo[5]).bar' and 'foo([5].bar),
 // !nopar to unambiguise 'foo[5].bar' between '(foo[5]).bar' and 'foo([5].bar),
-!nobra!nopar   | {range} obra no expr [n2]:no dotdot [n3]:no [expr2]:expr_nobra [n4]:no cbra {-> New expr.crange(obra, expr, expr2.expr, cbra)}
-!nobra!nopar   | {orange} obra no expr [n2]:no dotdot [n3]:no [expr2]:expr_nobra [n4]:no [cbra]:obra  {-> New expr.orange(obra, expr, expr2.expr, cbra)}
-!nobra!nopar   | {array} braargs {-> New expr.array(braargs.exprs)}
-       | {:self} kwself
-       | {:true} kwtrue
-       | {:false} kwfalse
-       | {:null} kwnull
-       | {:int} number
-       | {:float} float
-       | {:char} char
-       | {:string} string
+!nobra!nopar   | {range} obra no expr [n2]:no dotdot [n3]:no [expr2]:expr_nobra [n4]:no cbra annotations? {-> New expr.crange(obra, expr, expr2.expr, cbra, annotations)}
+!nobra!nopar   | {orange} obra no expr [n2]:no dotdot [n3]:no [expr2]:expr_nobra [n4]:no [cbra]:obra annotations? {-> New expr.orange(obra, expr, expr2.expr, cbra, annotations)}
+!nobra!nopar   | {array} braargs annotations? {-> New expr.array(braargs.exprs, annotations)}
+       | {self} kwself annotations? {-> New expr.self(kwself, annotations)}
+       | {true} kwtrue annotations? {-> New expr.true(kwtrue, annotations)}
+       | {false} kwfalse annotations? {-> New expr.false(kwfalse, annotations)}
+       | {null} kwnull annotations? {-> New expr.null(kwnull, annotations)}
+       | {int} number annotations? {-> New expr.int(number, annotations)}
+       | {float} float annotations? {-> New expr.float(float, annotations)}
+       | {char} char annotations? {-> New expr.char(char, annotations)}
+       | {string} string annotations? {-> New expr.string(string, annotations)}
        | {superstring} superstring  {-> superstring.expr}
        | {superstring} superstring  {-> superstring.expr}
-!nopar | {par} opar expr cpar {-> New expr.par(opar, expr, cpar)}
+!nopar | {par} opar expr cpar annotations? {-> New expr.par(opar, expr, cpar, annotations)}
         | {as_cast} expr_atom~nopar~nobra dot no kwas [n2]:no opar [n3]:no type [n4]:no cpar {-> New expr.as_cast(expr_atom~nopar~nobra.expr, kwas, opar, type, cpar)}
         | {as_notnull} expr_atom~nopar~nobra dot no kwas [n2]:no opar [n3]:no kwnot [n4]:no kwnull [n5]:no cpar {-> New expr.as_notnull(expr_atom~nopar~nobra.expr, kwas, opar, kwnot, kwnull, cpar)}
        ;
 
 superstring {-> expr} 
         | {as_cast} expr_atom~nopar~nobra dot no kwas [n2]:no opar [n3]:no type [n4]:no cpar {-> New expr.as_cast(expr_atom~nopar~nobra.expr, kwas, opar, type, cpar)}
         | {as_notnull} expr_atom~nopar~nobra dot no kwas [n2]:no opar [n3]:no kwnot [n4]:no kwnull [n5]:no cpar {-> New expr.as_notnull(expr_atom~nopar~nobra.expr, kwas, opar, kwnot, kwnull, cpar)}
        ;
 
 superstring {-> expr} 
-       = superstring_start superstring_middle* superstring_end {-> New expr.superstring([superstring_start.expr, superstring_middle.expr, superstring_end.expr])};
+       = superstring_start superstring_middle* superstring_end annotations? {-> New expr.superstring([superstring_start.expr, superstring_middle.expr, superstring_end.expr], annotations)};
 superstring_start {-> expr*}
        = start_string_p no expr [n2]:no {-> [start_string_p.expr, expr]};
 start_string_p {-> expr}
 superstring_start {-> expr*}
        = start_string_p no expr [n2]:no {-> [start_string_p.expr, expr]};
 start_string_p {-> expr}
@@ -563,6 +573,64 @@ mid_string_p {-> expr}
 superstring_end {-> expr}
        = end_string {-> New expr.end_string(end_string)};
 
 superstring_end {-> expr}
        = end_string {-> New expr.end_string(end_string)};
 
+/* ANNOTATIONS *******************************************************************/
+
+annotations~nopar {-> annotations}
+       = {one} at one_annotation~nopar {-> New annotations(at, Null, [one_annotation~nopar.annotation], Null)}
+       | {many} at opar annotation_list cpar {-> New annotations(at, opar, [annotation_list.annotation], cpar)}
+       ;
+
+one_annotation~nopar {-> annotation}
+       = {alone} atid annotations~nopar? {-> New annotation(atid, Null, [], Null, annotations~nopar.annotations)}
+// !nopar to unambiguise 'new T@foo(bar)' between 'new T@(foo(bar))' and 'new (T@foo)(bar)'
+!nopar | {args} atid opar at_args cpar annotations~nopar? {-> New annotation(atid, opar, [at_args.at_arg], cpar, annotations~nopar.annotations)}
+       ;
+
+many_annotations {-> annotations}
+       = {many} annotation_list {-> New annotations(Null, Null, [annotation_list.annotation], Null)}
+       ;
+
+annotation_list {-> annotation*}
+       = {many} one_annotation annotations_tail* {-> [one_annotation.annotation, annotations_tail.annotation] }
+       ;
+
+line_annotations~forclass {-> annotations}
+       = line_annotation~forclass+ {-> New annotations(Null, Null, [line_annotation~forclass.annotation], Null) }
+       ;
+line_annotation~forclass {-> annotation}
+       = [doc]:no atid~forclass annotations? n1 {-> New annotation(atid~forclass.atid, Null, [], Null, annotations)}
+       | {args} [doc]:no atid~forclass opar at_args cpar annotations? n1 {-> New annotation(atid~forclass.atid, opar, [at_args.at_arg], cpar, annotations)}
+       | {nopar} [doc]:no atid~forclass at_args_nopar n1 {-> New annotation(atid~forclass.atid, Null, [at_args_nopar.at_arg], Null, Null)}
+       ;
+
+annotations_tail {-> annotation}
+       = comma no one_annotation {-> one_annotation.annotation}
+       ;
+
+at_args~nopar {-> at_arg* }
+       = {many} at_arg~nopar at_args_tail* {-> [at_arg~nopar.at_arg, at_args_tail.at_arg]}
+       ;
+
+at_args_tail {-> at_arg}
+       = comma no at_arg {-> at_arg}
+       ;
+
+at_arg~nopar {-> at_arg}
+       = {type} type {-> New at_arg.type(type)}
+       | {expr} expr~nopar {-> New at_arg.expr(expr~nopar.expr)}
+       | {stmt} stmt_noexpr~nopar {-> New at_arg.expr(stmt_noexpr~nopar.expr)}
+!nopar | {at} annotations {-> New at_arg.at(annotations.annotations)}
+       ;
+
+atid~forclass {-> atid}
+       = {id} id {-> New atid.id(id)}
+//!forclass    | {kwextern} kwextern {-> New atid.kwextern(kwextern)}
+//!forclass    | {kwintern} kwintern {-> New atid.kwintern(kwintern)}
+!forclass      | {kwreadable} kwreadable {-> New atid.kwreadable(kwreadable)}
+!forclass      | {kwwritable} kwwritable {-> New atid.kwwritable(kwwritable)}
+       | {kwimport} kwimport {-> New atid.kwimport(kwimport)}
+       ;
+
 /* MISC **********************************************************************/
 
 recv~nopar~nobra {-> expr}
 /* MISC **********************************************************************/
 
 recv~nopar~nobra {-> expr}
@@ -632,9 +700,9 @@ Abstract Syntax Tree
 module = moduledecl? [imports]:import* [extern_code_blocks]:extern_code_block* [classdefs]:classdef*;
 
 moduledecl
 module = moduledecl? [imports]:import* [extern_code_blocks]:extern_code_block* [classdefs]:classdef*;
 
 moduledecl
-       = doc? kwmodule [name]:module_name;
+       = doc? kwmodule [name]:module_name annotations?;
 
 
-import = {std} visibility kwimport [name]:module_name
+import = {std} visibility kwimport [name]:module_name annotations?
        | {no} visibility kwimport kwend
        ;
 
        | {no} visibility kwimport kwend
        ;
 
@@ -645,7 +713,7 @@ visibility
        | {intrude} kwintrude
        ;
 
        | {intrude} kwintrude
        ;
 
-classdef= {std} doc? kwredef? visibility classkind [id]:classid? [formaldefs]:formaldef* extern_code_block? [superclasses]:superclass* [propdefs]:propdef* kwend
+classdef= {std} doc? kwredef? visibility classkind [id]:classid? [formaldefs]:formaldef* annotations? extern_code_block? [superclasses]:superclass* [propdefs]:propdef* kwend
        | {top} [propdefs]:propdef*
        | {main} [propdefs]:propdef*
        ;
        | {top} [propdefs]:propdef*
        | {main} [propdefs]:propdef*
        ;
@@ -656,20 +724,21 @@ classkind
        | {enum} kwenum
        | {extern} kwextern kwclass?
        ;
        | {enum} kwenum
        | {extern} kwextern kwclass?
        ;
-formaldef = [id]:classid type?;
-superclass = kwsuper type;
+formaldef = [id]:classid type? annotations?;
+superclass = kwsuper type annotations?;
 
 
 
 
-propdef = {attr} doc? [readable]:able? [writable]:able? kwredef? visibility kwvar [id]:attrid? [id2]:id? type? expr?
+propdef = {attr} doc? [readable]:able? [writable]:able? kwredef? visibility kwvar [id]:attrid? [id2]:id? type? annotations? expr?
        | {meth} doc? kwredef? visibility methid signature
        | {meth} doc? kwredef? visibility methid signature
-       | {deferred_meth} doc? kwredef? visibility kwmeth methid signature
+       | {deferred_meth} doc? kwredef? visibility kwmeth methid signature annotations?
        | {intern_meth} doc? kwredef? visibility kwmeth methid signature
        | {extern_meth} doc? kwredef? visibility kwmeth methid signature [extern]:string? extern_calls? extern_code_block?
        | {intern_meth} doc? kwredef? visibility kwmeth methid signature
        | {extern_meth} doc? kwredef? visibility kwmeth methid signature [extern]:string? extern_calls? extern_code_block?
-       | {concrete_meth} doc? kwredef? visibility kwmeth methid signature [block]:expr?
-       | {concrete_init} doc? kwredef? visibility kwinit methid? signature [block]:expr?
+       | {concrete_meth} doc? kwredef? visibility kwmeth methid signature annotations? [block]:expr?
+       | {concrete_init} doc? kwredef? visibility kwinit methid? signature annotations? [block]:expr?
+       //| {concrete_new} doc? kwredef? visibility kwnew methid? signature [block]:expr?
        | {extern_init} doc? kwredef? visibility kwnew methid? signature [extern]:string? extern_calls? extern_code_block?
        | {main_meth} kwredef? [block]:expr?
        | {extern_init} doc? kwredef? visibility kwnew methid? signature [extern]:string? extern_calls? extern_code_block?
        | {main_meth} kwredef? [block]:expr?
-       | {type} doc? kwredef? visibility kwtype [id]:classid type
+       | {type} doc? kwredef? visibility kwtype [id]:classid type annotations?
        ;
 
 able   = {read} kwredef? kwreadable
        ;
 
 able   = {read} kwredef? kwreadable
@@ -680,18 +749,18 @@ methid = {id} id | {plus} plus | {minus} minus | {star} star | {slash} slash | {
 
 signature = opar? [params]:param* cpar? type? [closure_decls]:closure_decl*;
 
 
 signature = opar? [params]:param* cpar? type? [closure_decls]:closure_decl*;
 
-param  = id type? dotdotdot?
+param  = id type? dotdotdot? annotations?
        ;
 
 closure_decl = kwbreak? bang id signature expr?
        ;
 
        ;
 
 closure_decl = kwbreak? bang id signature expr?
        ;
 
-type   = kwnullable? [id]:classid [types]:type*;
+type   = kwnullable? [id]:classid [types]:type* annotations?;
 
 label = kwlabel id;
 
 expr   = {block} expr* kwend? 
 
 label = kwlabel id;
 
 expr   = {block} expr* kwend? 
-       | {vardecl} kwvar id type? assign? expr? 
+       | {vardecl} kwvar id type? assign? expr? annotations?
        | {return} kwreturn? expr?
        | {break} kwbreak label? expr?
        | {abort} kwabort
        | {return} kwreturn? expr?
        | {break} kwbreak label? expr?
        | {abort} kwabort
@@ -743,24 +812,24 @@ expr      = {block} expr* kwend?
        | {var} id
        | {var_assign} id assign [value]:expr 
        | {var_reassign} id assign_op [value]:expr 
        | {var} id
        | {var_assign} id assign [value]:expr 
        | {var_reassign} id assign_op [value]:expr 
-       | {range} expr [expr2]:expr 
-       | {crange} obra expr [expr2]:expr cbra
-       | {orange} obra expr [expr2]:expr [cbra]:obra
-       | {array} [exprs]:exprs
-       | {self} kwself 
+       | {range} expr [expr2]:expr annotations?
+       | {crange} obra expr [expr2]:expr cbra annotations?
+       | {orange} obra expr [expr2]:expr [cbra]:obra annotations?
+       | {array} [exprs]:exprs annotations?
+       | {self} kwself annotations?
        | {implicit_self} 
        | {implicit_self} 
-       | {true} kwtrue 
-       | {false} kwfalse 
-       | {null} kwnull
-       | {int} number
-       | {float} float
-       | {char} char
-       | {string} string 
+       | {true} kwtrue annotations?
+       | {false} kwfalse annotations?
+       | {null} kwnull annotations?
+       | {int} number annotations?
+       | {float} float annotations?
+       | {char} char annotations?
+       | {string} string annotations?
        | {start_string} [string]:start_string 
        | {mid_string} [string]:mid_string 
        | {end_string} [string]:end_string 
        | {start_string} [string]:start_string 
        | {mid_string} [string]:mid_string 
        | {end_string} [string]:end_string 
-       | {superstring} [exprs]:expr*
-       | {par} opar expr cpar
+       | {superstring} [exprs]:expr* annotations?
+       | {par} opar expr cpar annotations?
         | {as_cast} expr kwas opar type cpar
         | {as_notnull} expr kwas opar kwnot kwnull cpar
        | {isset_attr} kwisset expr [id]:attrid
         | {as_cast} expr kwas opar type cpar
         | {as_notnull} expr kwas opar kwnot kwnull cpar
        | {isset_attr} kwisset expr [id]:attrid
@@ -803,5 +872,16 @@ qualified = id* classid? ;
 
 doc = comment+;
 
 
 doc = comment+;
 
+annotations = at? opar? [items]:annotation* cpar?;
+
+annotation = atid opar? [args]:at_arg* cpar? annotations?;
+
+at_arg
+       = {type} type
+       | {expr} expr
+       | {at} annotations
+       ;
+atid = {id} id | {kwextern} [id]:kwextern | {kwintern} [id]:kwintern | {kwreadable} [id]:kwreadable | {kwwritable} [id]:kwwritable | {kwimport} [id]:kwimport;
+
 /*****************************************************************************/
 
 /*****************************************************************************/
 
index f709698..437c33a 100644 (file)
@@ -217,14 +217,14 @@ class Parser
                        new ReduceAction62(0),
                        new ReduceAction63(0),
                        new ReduceAction64(1),
                        new ReduceAction62(0),
                        new ReduceAction63(0),
                        new ReduceAction64(1),
-                       new ReduceAction65(2),
+                       new ReduceAction65(1),
                        new ReduceAction66(2),
                        new ReduceAction66(2),
-                       new ReduceAction67(3),
-                       new ReduceAction68(3),
-                       new ReduceAction69(4),
-                       new ReduceAction69(4),
-                       new ReduceAction71(5),
-                       new ReduceAction72(5),
+                       new ReduceAction67(2),
+                       new ReduceAction68(2),
+                       new ReduceAction69(3),
+                       new ReduceAction70(3),
+                       new ReduceAction71(4),
+                       new ReduceAction71(4),
                        new ReduceAction73(5),
                        new ReduceAction74(5),
                        new ReduceAction75(5),
                        new ReduceAction73(5),
                        new ReduceAction74(5),
                        new ReduceAction75(5),
@@ -255,56 +255,56 @@ class Parser
                        new ReduceAction100(5),
                        new ReduceAction101(5),
                        new ReduceAction102(5),
                        new ReduceAction100(5),
                        new ReduceAction101(5),
                        new ReduceAction102(5),
-                       new ReduceAction103(6),
-                       new ReduceAction104(6),
-                       new ReduceAction105(6),
-                       new ReduceAction106(6),
-                       new ReduceAction107(6),
-                       new ReduceAction108(6),
-                       new ReduceAction109(7),
-                       new ReduceAction110(7),
-                       new ReduceAction111(8),
-                       new ReduceAction112(9),
-                       new ReduceAction113(9),
-                       new ReduceAction114(10),
-                       new ReduceAction115(11),
-                       new ReduceAction116(12),
-                       new ReduceAction117(12),
-                       new ReduceAction118(12),
-                       new ReduceAction119(12),
-                       new ReduceAction120(12),
-                       new ReduceAction121(12),
-                       new ReduceAction122(12),
-                       new ReduceAction123(12),
-                       new ReduceAction124(12),
-                       new ReduceAction125(12),
-                       new ReduceAction126(12),
-                       new ReduceAction127(12),
-                       new ReduceAction128(12),
-                       new ReduceAction129(12),
-                       new ReduceAction130(12),
-                       new ReduceAction131(12),
-                       new ReduceAction132(12),
-                       new ReduceAction133(12),
-                       new ReduceAction134(12),
-                       new ReduceAction135(12),
-                       new ReduceAction136(12),
-                       new ReduceAction137(12),
-                       new ReduceAction138(12),
-                       new ReduceAction139(12),
-                       new ReduceAction140(12),
-                       new ReduceAction141(12),
-                       new ReduceAction142(12),
-                       new ReduceAction143(12),
-                       new ReduceAction144(12),
-                       new ReduceAction145(12),
-                       new ReduceAction146(12),
-                       new ReduceAction147(12),
-                       new ReduceAction148(12),
-                       new ReduceAction149(12),
-                       new ReduceAction150(12),
-                       new ReduceAction151(12),
-                       new ReduceAction152(12),
+                       new ReduceAction103(5),
+                       new ReduceAction104(5),
+                       new ReduceAction105(5),
+                       new ReduceAction106(5),
+                       new ReduceAction107(5),
+                       new ReduceAction108(5),
+                       new ReduceAction109(5),
+                       new ReduceAction110(5),
+                       new ReduceAction111(5),
+                       new ReduceAction112(5),
+                       new ReduceAction113(5),
+                       new ReduceAction114(5),
+                       new ReduceAction115(5),
+                       new ReduceAction116(5),
+                       new ReduceAction117(5),
+                       new ReduceAction118(5),
+                       new ReduceAction119(5),
+                       new ReduceAction120(5),
+                       new ReduceAction121(5),
+                       new ReduceAction122(5),
+                       new ReduceAction123(5),
+                       new ReduceAction124(5),
+                       new ReduceAction125(5),
+                       new ReduceAction126(5),
+                       new ReduceAction127(5),
+                       new ReduceAction128(5),
+                       new ReduceAction129(5),
+                       new ReduceAction130(5),
+                       new ReduceAction131(5),
+                       new ReduceAction132(5),
+                       new ReduceAction133(5),
+                       new ReduceAction134(5),
+                       new ReduceAction135(5),
+                       new ReduceAction136(5),
+                       new ReduceAction137(6),
+                       new ReduceAction138(6),
+                       new ReduceAction139(6),
+                       new ReduceAction140(6),
+                       new ReduceAction141(6),
+                       new ReduceAction142(6),
+                       new ReduceAction143(7),
+                       new ReduceAction144(7),
+                       new ReduceAction145(8),
+                       new ReduceAction146(9),
+                       new ReduceAction147(9),
+                       new ReduceAction148(9),
+                       new ReduceAction149(9),
+                       new ReduceAction150(10),
+                       new ReduceAction151(10),
+                       new ReduceAction152(11),
                        new ReduceAction153(12),
                        new ReduceAction154(12),
                        new ReduceAction155(12),
                        new ReduceAction153(12),
                        new ReduceAction154(12),
                        new ReduceAction155(12),
@@ -404,620 +404,1046 @@ class Parser
                        new ReduceAction249(12),
                        new ReduceAction250(12),
                        new ReduceAction251(12),
                        new ReduceAction249(12),
                        new ReduceAction250(12),
                        new ReduceAction251(12),
-                       new ReduceAction252(13),
-                       new ReduceAction253(13),
-                       new ReduceAction254(14),
-                       new ReduceAction255(14),
-                       new ReduceAction256(15),
-                       new ReduceAction257(15),
-                       new ReduceAction258(16),
-                       new ReduceAction259(16),
-                       new ReduceAction260(16),
-                       new ReduceAction261(16),
-                       new ReduceAction262(17),
-                       new ReduceAction263(17),
-                       new ReduceAction264(17),
-                       new ReduceAction265(17),
-                       new ReduceAction266(17),
-                       new ReduceAction267(17),
-                       new ReduceAction268(17),
-                       new ReduceAction269(17),
-                       new ReduceAction270(17),
-                       new ReduceAction271(17),
-                       new ReduceAction272(17),
-                       new ReduceAction273(17),
-                       new ReduceAction274(17),
-                       new ReduceAction275(17),
-                       new ReduceAction276(17),
-                       new ReduceAction277(17),
-                       new ReduceAction278(17),
-                       new ReduceAction279(17),
-                       new ReduceAction280(18),
-                       new ReduceAction281(18),
-                       new ReduceAction282(18),
-                       new ReduceAction283(18),
-                       new ReduceAction284(18),
-                       new ReduceAction285(18),
-                       new ReduceAction286(18),
-                       new ReduceAction287(18),
-                       new ReduceAction288(18),
-                       new ReduceAction289(18),
-                       new ReduceAction290(18),
-                       new ReduceAction291(18),
-                       new ReduceAction292(19),
-                       new ReduceAction293(19),
-                       new ReduceAction294(19),
-                       new ReduceAction295(19),
-                       new ReduceAction296(19),
-                       new ReduceAction297(19),
-                       new ReduceAction298(20),
-                       new ReduceAction299(20),
-                       new ReduceAction300(21),
-                       new ReduceAction301(22),
-                       new ReduceAction302(22),
-                       new ReduceAction303(22),
-                       new ReduceAction304(23),
-                       new ReduceAction305(24),
-                       new ReduceAction306(24),
-                       new ReduceAction307(24),
-                       new ReduceAction308(24),
-                       new ReduceAction309(24),
-                       new ReduceAction310(24),
-                       new ReduceAction311(25),
-                       new ReduceAction312(26),
-                       new ReduceAction313(26),
-                       new ReduceAction314(27),
-                       new ReduceAction315(28),
-                       new ReduceAction315(28),
-                       new ReduceAction317(28),
-                       new ReduceAction318(29),
-                       new ReduceAction319(29),
-                       new ReduceAction320(29),
-                       new ReduceAction321(30),
-                       new ReduceAction322(30),
-                       new ReduceAction323(30),
-                       new ReduceAction324(31),
-                       new ReduceAction325(32),
-                       new ReduceAction326(32),
-                       new ReduceAction327(33),
-                       new ReduceAction328(34),
-                       new ReduceAction329(34),
-                       new ReduceAction330(34),
-                       new ReduceAction331(34),
-                       new ReduceAction332(35),
-                       new ReduceAction333(35),
-                       new ReduceAction334(36),
-                       new ReduceAction334(37),
-                       new ReduceAction336(38),
-                       new ReduceAction337(38),
-                       new ReduceAction338(38),
-                       new ReduceAction339(38),
-                       new ReduceAction340(39),
-                       new ReduceAction341(39),
-                       new ReduceAction342(40),
-                       new ReduceAction343(40),
-                       new ReduceAction344(41),
-                       new ReduceAction345(41),
-                       new ReduceAction336(42),
-                       new ReduceAction339(43),
-                       new ReduceAction339(43),
-                       new ReduceAction349(43),
-                       new ReduceAction350(43),
-                       new ReduceAction351(43),
-                       new ReduceAction352(43),
-                       new ReduceAction353(43),
-                       new ReduceAction354(43),
-                       new ReduceAction355(43),
-                       new ReduceAction356(43),
-                       new ReduceAction357(43),
-                       new ReduceAction358(43),
-                       new ReduceAction359(43),
-                       new ReduceAction339(43),
-                       new ReduceAction339(43),
-                       new ReduceAction339(43),
-                       new ReduceAction339(43),
-                       new ReduceAction339(43),
-                       new ReduceAction339(43),
-                       new ReduceAction366(43),
-                       new ReduceAction367(43),
-                       new ReduceAction368(43),
-                       new ReduceAction369(43),
-                       new ReduceAction370(43),
-                       new ReduceAction371(43),
-                       new ReduceAction372(43),
-                       new ReduceAction373(43),
-                       new ReduceAction374(43),
-                       new ReduceAction375(44),
-                       new ReduceAction376(45),
-                       new ReduceAction377(45),
-                       new ReduceAction378(46),
-                       new ReduceAction379(46),
-                       new ReduceAction380(46),
-                       new ReduceAction381(46),
-                       new ReduceAction382(46),
-                       new ReduceAction383(46),
-                       new ReduceAction384(46),
-                       new ReduceAction385(46),
-                       new ReduceAction386(46),
-                       new ReduceAction387(47),
-                       new ReduceAction388(47),
-                       new ReduceAction389(47),
-                       new ReduceAction390(47),
-                       new ReduceAction391(47),
-                       new ReduceAction392(47),
-                       new ReduceAction393(48),
-                       new ReduceAction394(48),
-                       new ReduceAction395(49),
-                       new ReduceAction396(50),
-                       new ReduceAction397(50),
-                       new ReduceAction398(50),
-                       new ReduceAction399(50),
-                       new ReduceAction400(51),
-                       new ReduceAction401(51),
-                       new ReduceAction402(51),
-                       new ReduceAction403(51),
-                       new ReduceAction404(51),
-                       new ReduceAction405(51),
-                       new ReduceAction406(51),
-                       new ReduceAction407(51),
-                       new ReduceAction408(51),
-                       new ReduceAction409(51),
-                       new ReduceAction410(52),
-                       new ReduceAction411(52),
-                       new ReduceAction412(53),
-                       new ReduceAction413(53),
-                       new ReduceAction414(54),
-                       new ReduceAction415(54),
-                       new ReduceAction416(54),
-                       new ReduceAction417(54),
-                       new ReduceAction418(54),
-                       new ReduceAction336(55),
-                       new ReduceAction338(55),
-                       new ReduceAction421(56),
-                       new ReduceAction422(56),
-                       new ReduceAction423(57),
-                       new ReduceAction424(57),
-                       new ReduceAction425(58),
-                       new ReduceAction426(58),
-                       new ReduceAction427(58),
-                       new ReduceAction428(58),
-                       new ReduceAction429(59),
-                       new ReduceAction430(59),
-                       new ReduceAction431(59),
-                       new ReduceAction432(59),
-                       new ReduceAction433(60),
-                       new ReduceAction339(61),
-                       new ReduceAction368(61),
-                       new ReduceAction369(61),
-                       new ReduceAction437(61),
-                       new ReduceAction339(62),
-                       new ReduceAction439(62),
-                       new ReduceAction339(63),
-                       new ReduceAction441(63),
-                       new ReduceAction442(63),
-                       new ReduceAction443(63),
-                       new ReduceAction339(64),
-                       new ReduceAction445(64),
-                       new ReduceAction339(65),
-                       new ReduceAction447(65),
-                       new ReduceAction448(65),
-                       new ReduceAction449(65),
-                       new ReduceAction450(65),
-                       new ReduceAction451(65),
-                       new ReduceAction452(65),
-                       new ReduceAction453(65),
-                       new ReduceAction454(65),
-                       new ReduceAction455(65),
-                       new ReduceAction456(65),
-                       new ReduceAction457(65),
-                       new ReduceAction339(66),
-                       new ReduceAction459(66),
-                       new ReduceAction460(66),
-                       new ReduceAction339(67),
-                       new ReduceAction462(67),
-                       new ReduceAction463(67),
-                       new ReduceAction464(67),
-                       new ReduceAction339(68),
-                       new ReduceAction466(68),
-                       new ReduceAction467(68),
-                       new ReduceAction339(69),
-                       new ReduceAction469(69),
-                       new ReduceAction470(69),
-                       new ReduceAction471(69),
-                       new ReduceAction472(70),
-                       new ReduceAction473(70),
-                       new ReduceAction366(70),
-                       new ReduceAction367(70),
-                       new ReduceAction370(70),
-                       new ReduceAction371(70),
-                       new ReduceAction372(70),
-                       new ReduceAction373(70),
-                       new ReduceAction480(70),
-                       new ReduceAction481(70),
-                       new ReduceAction482(70),
-                       new ReduceAction483(70),
-                       new ReduceAction484(70),
-                       new ReduceAction485(70),
-                       new ReduceAction486(70),
-                       new ReduceAction487(70),
-                       new ReduceAction488(70),
-                       new ReduceAction489(70),
-                       new ReduceAction490(70),
-                       new ReduceAction491(70),
-                       new ReduceAction492(70),
-                       new ReduceAction339(70),
-                       new ReduceAction494(70),
-                       new ReduceAction495(70),
-                       new ReduceAction496(70),
-                       new ReduceAction497(71),
-                       new ReduceAction498(71),
-                       new ReduceAction499(72),
-                       new ReduceAction500(73),
-                       new ReduceAction499(74),
-                       new ReduceAction502(75),
-                       new ReduceAction503(76),
-                       new ReduceAction504(77),
-                       new ReduceAction505(77),
-                       new ReduceAction506(77),
-                       new ReduceAction504(78),
-                       new ReduceAction508(78),
-                       new ReduceAction505(78),
-                       new ReduceAction506(78),
-                       new ReduceAction511(79),
-                       new ReduceAction512(80),
-                       new ReduceAction513(80),
-                       new ReduceAction514(81),
-                       new ReduceAction515(82),
-                       new ReduceAction516(82),
-                       new ReduceAction517(83),
-                       new ReduceAction518(83),
-                       new ReduceAction519(83),
-                       new ReduceAction520(83),
-                       new ReduceAction521(84),
-                       new ReduceAction522(84),
-                       new ReduceAction523(84),
-                       new ReduceAction524(85),
-                       new ReduceAction525(86),
-                       new ReduceAction526(87),
-                       new ReduceAction526(87),
-                       new ReduceAction528(88),
-                       new ReduceAction529(88),
-                       new ReduceAction68(88),
-                       new ReduceAction531(89),
-                       new ReduceAction532(89),
-                       new ReduceAction533(90),
-                       new ReduceAction534(90),
-                       new ReduceAction526(90),
-                       new ReduceAction115(91),
-                       new ReduceAction116(92),
-                       new ReduceAction117(92),
-                       new ReduceAction118(92),
-                       new ReduceAction119(92),
-                       new ReduceAction120(92),
-                       new ReduceAction121(92),
-                       new ReduceAction126(92),
-                       new ReduceAction127(92),
-                       new ReduceAction128(92),
-                       new ReduceAction129(92),
-                       new ReduceAction130(92),
-                       new ReduceAction131(92),
-                       new ReduceAction132(92),
-                       new ReduceAction133(92),
-                       new ReduceAction134(92),
-                       new ReduceAction135(92),
-                       new ReduceAction136(92),
-                       new ReduceAction137(92),
-                       new ReduceAction138(92),
-                       new ReduceAction139(92),
-                       new ReduceAction140(92),
-                       new ReduceAction141(92),
-                       new ReduceAction142(92),
-                       new ReduceAction143(92),
-                       new ReduceAction144(92),
-                       new ReduceAction145(92),
-                       new ReduceAction280(93),
-                       new ReduceAction281(93),
-                       new ReduceAction282(93),
-                       new ReduceAction283(93),
-                       new ReduceAction288(93),
-                       new ReduceAction289(93),
-                       new ReduceAction328(94),
-                       new ReduceAction329(94),
-                       new ReduceAction339(95),
-                       new ReduceAction368(95),
-                       new ReduceAction369(95),
-                       new ReduceAction339(96),
-                       new ReduceAction439(96),
-                       new ReduceAction339(97),
-                       new ReduceAction441(97),
-                       new ReduceAction442(97),
-                       new ReduceAction443(97),
-                       new ReduceAction339(98),
-                       new ReduceAction445(98),
-                       new ReduceAction339(99),
-                       new ReduceAction447(99),
-                       new ReduceAction448(99),
-                       new ReduceAction449(99),
-                       new ReduceAction450(99),
-                       new ReduceAction451(99),
-                       new ReduceAction452(99),
-                       new ReduceAction453(99),
-                       new ReduceAction454(99),
-                       new ReduceAction455(99),
-                       new ReduceAction456(99),
-                       new ReduceAction457(99),
-                       new ReduceAction339(100),
-                       new ReduceAction459(100),
-                       new ReduceAction460(100),
-                       new ReduceAction339(101),
-                       new ReduceAction462(101),
-                       new ReduceAction463(101),
-                       new ReduceAction464(101),
-                       new ReduceAction339(102),
-                       new ReduceAction466(102),
-                       new ReduceAction467(102),
-                       new ReduceAction339(103),
-                       new ReduceAction469(103),
-                       new ReduceAction470(103),
-                       new ReduceAction471(103),
-                       new ReduceAction472(104),
-                       new ReduceAction473(104),
-                       new ReduceAction366(104),
-                       new ReduceAction367(104),
-                       new ReduceAction370(104),
-                       new ReduceAction371(104),
-                       new ReduceAction372(104),
-                       new ReduceAction373(104),
-                       new ReduceAction481(104),
-                       new ReduceAction485(104),
-                       new ReduceAction486(104),
-                       new ReduceAction487(104),
-                       new ReduceAction488(104),
-                       new ReduceAction489(104),
-                       new ReduceAction490(104),
-                       new ReduceAction491(104),
-                       new ReduceAction492(104),
-                       new ReduceAction339(104),
-                       new ReduceAction494(104),
-                       new ReduceAction495(104),
-                       new ReduceAction496(104),
-                       new ReduceAction336(105),
-                       new ReduceAction337(105),
-                       new ReduceAction338(105),
-                       new ReduceAction339(105),
-                       new ReduceAction339(106),
-                       new ReduceAction339(106),
-                       new ReduceAction349(106),
-                       new ReduceAction350(106),
-                       new ReduceAction351(106),
-                       new ReduceAction352(106),
+                       new ReduceAction252(12),
+                       new ReduceAction253(12),
+                       new ReduceAction254(12),
+                       new ReduceAction255(12),
+                       new ReduceAction256(12),
+                       new ReduceAction257(12),
+                       new ReduceAction258(12),
+                       new ReduceAction259(12),
+                       new ReduceAction260(12),
+                       new ReduceAction261(12),
+                       new ReduceAction262(12),
+                       new ReduceAction263(12),
+                       new ReduceAction264(12),
+                       new ReduceAction265(12),
+                       new ReduceAction266(12),
+                       new ReduceAction267(12),
+                       new ReduceAction268(12),
+                       new ReduceAction269(12),
+                       new ReduceAction270(12),
+                       new ReduceAction271(12),
+                       new ReduceAction272(12),
+                       new ReduceAction273(12),
+                       new ReduceAction274(12),
+                       new ReduceAction275(12),
+                       new ReduceAction276(12),
+                       new ReduceAction277(12),
+                       new ReduceAction278(12),
+                       new ReduceAction279(12),
+                       new ReduceAction280(12),
+                       new ReduceAction281(12),
+                       new ReduceAction282(12),
+                       new ReduceAction283(12),
+                       new ReduceAction284(12),
+                       new ReduceAction285(12),
+                       new ReduceAction286(12),
+                       new ReduceAction287(12),
+                       new ReduceAction288(12),
+                       new ReduceAction289(12),
+                       new ReduceAction290(12),
+                       new ReduceAction291(12),
+                       new ReduceAction292(12),
+                       new ReduceAction293(12),
+                       new ReduceAction294(12),
+                       new ReduceAction295(12),
+                       new ReduceAction296(12),
+                       new ReduceAction297(12),
+                       new ReduceAction298(12),
+                       new ReduceAction299(12),
+                       new ReduceAction300(12),
+                       new ReduceAction301(12),
+                       new ReduceAction302(12),
+                       new ReduceAction303(12),
+                       new ReduceAction304(12),
+                       new ReduceAction305(12),
+                       new ReduceAction306(12),
+                       new ReduceAction307(12),
+                       new ReduceAction308(12),
+                       new ReduceAction309(12),
+                       new ReduceAction310(12),
+                       new ReduceAction311(12),
+                       new ReduceAction312(12),
+                       new ReduceAction313(12),
+                       new ReduceAction314(12),
+                       new ReduceAction315(12),
+                       new ReduceAction316(12),
+                       new ReduceAction317(12),
+                       new ReduceAction318(12),
+                       new ReduceAction319(12),
+                       new ReduceAction320(12),
+                       new ReduceAction321(13),
+                       new ReduceAction322(13),
+                       new ReduceAction321(14),
+                       new ReduceAction324(14),
+                       new ReduceAction325(15),
+                       new ReduceAction326(15),
+                       new ReduceAction327(16),
+                       new ReduceAction328(16),
+                       new ReduceAction329(17),
+                       new ReduceAction330(17),
+                       new ReduceAction331(18),
+                       new ReduceAction332(18),
+                       new ReduceAction333(18),
+                       new ReduceAction334(18),
+                       new ReduceAction335(19),
+                       new ReduceAction336(19),
+                       new ReduceAction337(19),
+                       new ReduceAction338(19),
+                       new ReduceAction339(19),
+                       new ReduceAction340(19),
+                       new ReduceAction341(19),
+                       new ReduceAction342(19),
+                       new ReduceAction343(19),
+                       new ReduceAction344(19),
+                       new ReduceAction345(19),
+                       new ReduceAction346(19),
+                       new ReduceAction347(19),
+                       new ReduceAction348(19),
+                       new ReduceAction349(19),
+                       new ReduceAction350(19),
+                       new ReduceAction351(19),
+                       new ReduceAction352(19),
+                       new ReduceAction353(20),
+                       new ReduceAction354(20),
+                       new ReduceAction355(20),
+                       new ReduceAction356(20),
+                       new ReduceAction357(20),
+                       new ReduceAction358(20),
+                       new ReduceAction359(20),
+                       new ReduceAction360(20),
+                       new ReduceAction361(20),
+                       new ReduceAction362(20),
+                       new ReduceAction363(20),
+                       new ReduceAction364(20),
+                       new ReduceAction365(21),
+                       new ReduceAction366(21),
+                       new ReduceAction367(21),
+                       new ReduceAction368(21),
+                       new ReduceAction369(21),
+                       new ReduceAction370(21),
+                       new ReduceAction371(22),
+                       new ReduceAction372(22),
+                       new ReduceAction373(23),
+                       new ReduceAction374(24),
+                       new ReduceAction375(24),
+                       new ReduceAction376(24),
+                       new ReduceAction377(24),
+                       new ReduceAction378(24),
+                       new ReduceAction379(24),
+                       new ReduceAction380(25),
+                       new ReduceAction381(26),
+                       new ReduceAction382(26),
+                       new ReduceAction383(26),
+                       new ReduceAction384(26),
+                       new ReduceAction385(26),
+                       new ReduceAction386(26),
+                       new ReduceAction387(27),
+                       new ReduceAction388(28),
+                       new ReduceAction389(28),
+                       new ReduceAction390(29),
+                       new ReduceAction391(30),
+                       new ReduceAction391(30),
+                       new ReduceAction393(30),
+                       new ReduceAction394(31),
+                       new ReduceAction395(31),
+                       new ReduceAction396(31),
+                       new ReduceAction397(32),
+                       new ReduceAction398(32),
+                       new ReduceAction399(32),
+                       new ReduceAction400(33),
+                       new ReduceAction401(34),
+                       new ReduceAction402(34),
+                       new ReduceAction403(35),
+                       new ReduceAction404(36),
+                       new ReduceAction405(36),
+                       new ReduceAction406(36),
+                       new ReduceAction407(36),
+                       new ReduceAction408(36),
+                       new ReduceAction409(36),
+                       new ReduceAction410(36),
+                       new ReduceAction411(36),
+                       new ReduceAction412(37),
+                       new ReduceAction413(37),
+                       new ReduceAction414(38),
+                       new ReduceAction414(39),
+                       new ReduceAction416(40),
+                       new ReduceAction417(40),
+                       new ReduceAction418(40),
+                       new ReduceAction419(40),
+                       new ReduceAction420(41),
+                       new ReduceAction421(41),
+                       new ReduceAction422(42),
+                       new ReduceAction423(42),
+                       new ReduceAction424(43),
+                       new ReduceAction425(43),
+                       new ReduceAction416(44),
+                       new ReduceAction419(45),
+                       new ReduceAction419(45),
+                       new ReduceAction429(45),
+                       new ReduceAction430(45),
+                       new ReduceAction431(45),
+                       new ReduceAction432(45),
+                       new ReduceAction433(45),
+                       new ReduceAction434(45),
+                       new ReduceAction435(45),
+                       new ReduceAction436(45),
+                       new ReduceAction437(45),
+                       new ReduceAction438(45),
+                       new ReduceAction439(45),
+                       new ReduceAction419(45),
+                       new ReduceAction419(45),
+                       new ReduceAction419(45),
+                       new ReduceAction419(45),
+                       new ReduceAction419(45),
+                       new ReduceAction419(45),
+                       new ReduceAction446(45),
+                       new ReduceAction447(45),
+                       new ReduceAction448(45),
+                       new ReduceAction449(45),
+                       new ReduceAction450(45),
+                       new ReduceAction451(45),
+                       new ReduceAction452(45),
+                       new ReduceAction453(45),
+                       new ReduceAction454(45),
+                       new ReduceAction455(46),
+                       new ReduceAction456(47),
+                       new ReduceAction457(47),
+                       new ReduceAction458(48),
+                       new ReduceAction459(48),
+                       new ReduceAction460(48),
+                       new ReduceAction461(48),
+                       new ReduceAction462(48),
+                       new ReduceAction463(48),
+                       new ReduceAction464(48),
+                       new ReduceAction465(48),
+                       new ReduceAction466(48),
+                       new ReduceAction467(49),
+                       new ReduceAction468(49),
+                       new ReduceAction469(49),
+                       new ReduceAction470(49),
+                       new ReduceAction471(49),
+                       new ReduceAction472(49),
+                       new ReduceAction473(50),
+                       new ReduceAction474(50),
+                       new ReduceAction475(51),
+                       new ReduceAction476(52),
+                       new ReduceAction477(52),
+                       new ReduceAction478(52),
+                       new ReduceAction479(52),
+                       new ReduceAction480(52),
+                       new ReduceAction481(52),
+                       new ReduceAction482(52),
+                       new ReduceAction483(52),
+                       new ReduceAction484(53),
+                       new ReduceAction485(53),
+                       new ReduceAction486(53),
+                       new ReduceAction487(53),
+                       new ReduceAction488(53),
+                       new ReduceAction489(53),
+                       new ReduceAction490(53),
+                       new ReduceAction491(53),
+                       new ReduceAction492(53),
+                       new ReduceAction493(53),
+                       new ReduceAction494(54),
+                       new ReduceAction495(54),
+                       new ReduceAction496(55),
+                       new ReduceAction497(55),
+                       new ReduceAction498(56),
+                       new ReduceAction499(56),
+                       new ReduceAction500(56),
+                       new ReduceAction501(56),
+                       new ReduceAction502(56),
+                       new ReduceAction416(57),
+                       new ReduceAction418(57),
+                       new ReduceAction505(58),
+                       new ReduceAction506(58),
+                       new ReduceAction507(59),
+                       new ReduceAction508(59),
+                       new ReduceAction509(60),
+                       new ReduceAction510(60),
+                       new ReduceAction511(60),
+                       new ReduceAction512(60),
+                       new ReduceAction513(61),
+                       new ReduceAction514(61),
+                       new ReduceAction515(61),
+                       new ReduceAction516(61),
+                       new ReduceAction517(62),
+                       new ReduceAction419(63),
+                       new ReduceAction448(63),
+                       new ReduceAction449(63),
+                       new ReduceAction521(63),
+                       new ReduceAction419(64),
+                       new ReduceAction523(64),
+                       new ReduceAction419(65),
+                       new ReduceAction525(65),
+                       new ReduceAction526(65),
+                       new ReduceAction527(65),
+                       new ReduceAction419(66),
+                       new ReduceAction529(66),
+                       new ReduceAction419(67),
+                       new ReduceAction531(67),
+                       new ReduceAction532(67),
+                       new ReduceAction533(67),
+                       new ReduceAction534(67),
+                       new ReduceAction535(67),
+                       new ReduceAction536(67),
+                       new ReduceAction537(67),
+                       new ReduceAction538(67),
+                       new ReduceAction539(67),
+                       new ReduceAction540(67),
+                       new ReduceAction541(67),
+                       new ReduceAction419(68),
+                       new ReduceAction543(68),
+                       new ReduceAction544(68),
+                       new ReduceAction419(69),
+                       new ReduceAction546(69),
+                       new ReduceAction547(69),
+                       new ReduceAction548(69),
+                       new ReduceAction419(70),
+                       new ReduceAction550(70),
+                       new ReduceAction551(70),
+                       new ReduceAction419(71),
+                       new ReduceAction553(71),
+                       new ReduceAction554(71),
+                       new ReduceAction555(71),
+                       new ReduceAction556(72),
+                       new ReduceAction557(72),
+                       new ReduceAction446(72),
+                       new ReduceAction447(72),
+                       new ReduceAction450(72),
+                       new ReduceAction451(72),
+                       new ReduceAction452(72),
+                       new ReduceAction453(72),
+                       new ReduceAction564(72),
+                       new ReduceAction565(72),
+                       new ReduceAction566(72),
+                       new ReduceAction567(72),
+                       new ReduceAction568(72),
+                       new ReduceAction569(72),
+                       new ReduceAction570(72),
+                       new ReduceAction571(72),
+                       new ReduceAction572(72),
+                       new ReduceAction573(72),
+                       new ReduceAction574(72),
+                       new ReduceAction575(72),
+                       new ReduceAction576(72),
+                       new ReduceAction577(72),
+                       new ReduceAction578(72),
+                       new ReduceAction579(72),
+                       new ReduceAction580(72),
+                       new ReduceAction581(72),
+                       new ReduceAction582(72),
+                       new ReduceAction583(72),
+                       new ReduceAction584(72),
+                       new ReduceAction585(72),
+                       new ReduceAction586(72),
+                       new ReduceAction587(72),
+                       new ReduceAction419(72),
+                       new ReduceAction589(72),
+                       new ReduceAction590(72),
+                       new ReduceAction591(72),
+                       new ReduceAction592(72),
+                       new ReduceAction593(73),
+                       new ReduceAction594(73),
+                       new ReduceAction595(73),
+                       new ReduceAction596(73),
+                       new ReduceAction597(74),
+                       new ReduceAction598(75),
+                       new ReduceAction597(76),
+                       new ReduceAction600(77),
+                       new ReduceAction601(78),
+                       new ReduceAction602(79),
+                       new ReduceAction603(79),
+                       new ReduceAction604(80),
+                       new ReduceAction605(80),
+                       new ReduceAction606(80),
+                       new ReduceAction607(80),
+                       new ReduceAction608(81),
+                       new ReduceAction609(82),
+                       new ReduceAction610(82),
+                       new ReduceAction608(83),
+                       new ReduceAction612(84),
+                       new ReduceAction613(84),
+                       new ReduceAction614(84),
+                       new ReduceAction615(84),
+                       new ReduceAction616(84),
+                       new ReduceAction617(85),
+                       new ReduceAction618(86),
+                       new ReduceAction619(86),
+                       new ReduceAction620(87),
+                       new ReduceAction621(88),
+                       new ReduceAction622(88),
+                       new ReduceAction622(88),
+                       new ReduceAction624(88),
+                       new ReduceAction625(89),
+                       new ReduceAction626(89),
+                       new ReduceAction627(89),
+                       new ReduceAction628(89),
+                       new ReduceAction629(90),
+                       new ReduceAction630(90),
+                       new ReduceAction631(90),
+                       new ReduceAction629(91),
+                       new ReduceAction633(91),
+                       new ReduceAction630(91),
+                       new ReduceAction631(91),
+                       new ReduceAction636(92),
+                       new ReduceAction637(93),
+                       new ReduceAction638(93),
+                       new ReduceAction639(94),
+                       new ReduceAction640(95),
+                       new ReduceAction641(95),
+                       new ReduceAction642(96),
+                       new ReduceAction643(96),
+                       new ReduceAction644(96),
+                       new ReduceAction645(96),
+                       new ReduceAction646(97),
+                       new ReduceAction647(97),
+                       new ReduceAction648(97),
+                       new ReduceAction649(98),
+                       new ReduceAction650(99),
+                       new ReduceAction651(100),
+                       new ReduceAction651(100),
+                       new ReduceAction653(101),
+                       new ReduceAction654(101),
+                       new ReduceAction70(101),
+                       new ReduceAction656(102),
+                       new ReduceAction657(102),
+                       new ReduceAction658(103),
+                       new ReduceAction659(103),
+                       new ReduceAction651(103),
+                       new ReduceAction152(104),
+                       new ReduceAction153(105),
+                       new ReduceAction154(105),
+                       new ReduceAction155(105),
+                       new ReduceAction156(105),
+                       new ReduceAction157(105),
+                       new ReduceAction158(105),
+                       new ReduceAction159(105),
+                       new ReduceAction160(105),
+                       new ReduceAction161(105),
+                       new ReduceAction162(105),
+                       new ReduceAction163(105),
+                       new ReduceAction164(105),
+                       new ReduceAction169(105),
+                       new ReduceAction170(105),
+                       new ReduceAction171(105),
+                       new ReduceAction172(105),
+                       new ReduceAction173(105),
+                       new ReduceAction174(105),
+                       new ReduceAction175(105),
+                       new ReduceAction176(105),
+                       new ReduceAction177(105),
+                       new ReduceAction178(105),
+                       new ReduceAction179(105),
+                       new ReduceAction180(105),
+                       new ReduceAction181(105),
+                       new ReduceAction182(105),
+                       new ReduceAction183(105),
+                       new ReduceAction184(105),
+                       new ReduceAction185(105),
+                       new ReduceAction186(105),
+                       new ReduceAction187(105),
+                       new ReduceAction188(105),
                        new ReduceAction353(106),
                        new ReduceAction354(106),
                        new ReduceAction355(106),
                        new ReduceAction356(106),
                        new ReduceAction353(106),
                        new ReduceAction354(106),
                        new ReduceAction355(106),
                        new ReduceAction356(106),
-                       new ReduceAction357(106),
-                       new ReduceAction358(106),
-                       new ReduceAction359(106),
-                       new ReduceAction339(106),
-                       new ReduceAction339(106),
-                       new ReduceAction339(106),
-                       new ReduceAction339(106),
-                       new ReduceAction339(106),
-                       new ReduceAction339(106),
-                       new ReduceAction366(106),
-                       new ReduceAction367(106),
-                       new ReduceAction368(106),
-                       new ReduceAction369(106),
-                       new ReduceAction370(106),
-                       new ReduceAction371(106),
-                       new ReduceAction372(106),
-                       new ReduceAction373(106),
-                       new ReduceAction374(106),
-                       new ReduceAction376(107),
-                       new ReduceAction377(107),
-                       new ReduceAction378(108),
-                       new ReduceAction379(108),
-                       new ReduceAction380(108),
-                       new ReduceAction381(108),
-                       new ReduceAction382(108),
-                       new ReduceAction383(108),
-                       new ReduceAction384(108),
-                       new ReduceAction385(108),
-                       new ReduceAction386(108),
-                       new ReduceAction395(109),
-                       new ReduceAction396(110),
-                       new ReduceAction397(110),
-                       new ReduceAction398(110),
-                       new ReduceAction399(110),
-                       new ReduceAction400(111),
-                       new ReduceAction401(111),
-                       new ReduceAction402(111),
-                       new ReduceAction403(111),
-                       new ReduceAction404(111),
-                       new ReduceAction405(111),
-                       new ReduceAction406(111),
-                       new ReduceAction407(111),
-                       new ReduceAction408(111),
-                       new ReduceAction409(111),
-                       new ReduceAction412(112),
-                       new ReduceAction413(112),
-                       new ReduceAction414(113),
-                       new ReduceAction421(114),
-                       new ReduceAction422(114),
-                       new ReduceAction423(115),
-                       new ReduceAction424(115),
-                       new ReduceAction425(116),
-                       new ReduceAction426(116),
-                       new ReduceAction427(116),
-                       new ReduceAction428(116),
-                       new ReduceAction429(117),
-                       new ReduceAction430(117),
-                       new ReduceAction339(118),
-                       new ReduceAction368(118),
-                       new ReduceAction369(118),
-                       new ReduceAction437(118),
-                       new ReduceAction339(119),
-                       new ReduceAction368(119),
-                       new ReduceAction369(119),
-                       new ReduceAction336(120),
-                       new ReduceAction337(120),
-                       new ReduceAction338(120),
-                       new ReduceAction336(121),
-                       new ReduceAction337(121),
-                       new ReduceAction338(121),
-                       new ReduceAction339(122),
-                       new ReduceAction368(122),
-                       new ReduceAction369(122),
-                       new ReduceAction339(123),
-                       new ReduceAction439(123),
-                       new ReduceAction339(124),
-                       new ReduceAction441(124),
-                       new ReduceAction442(124),
-                       new ReduceAction443(124),
-                       new ReduceAction339(125),
-                       new ReduceAction445(125),
-                       new ReduceAction339(126),
-                       new ReduceAction447(126),
-                       new ReduceAction448(126),
-                       new ReduceAction449(126),
-                       new ReduceAction450(126),
-                       new ReduceAction451(126),
-                       new ReduceAction452(126),
-                       new ReduceAction453(126),
-                       new ReduceAction454(126),
-                       new ReduceAction455(126),
-                       new ReduceAction456(126),
-                       new ReduceAction457(126),
-                       new ReduceAction339(127),
-                       new ReduceAction459(127),
-                       new ReduceAction460(127),
-                       new ReduceAction339(128),
-                       new ReduceAction462(128),
-                       new ReduceAction463(128),
-                       new ReduceAction464(128),
-                       new ReduceAction339(129),
-                       new ReduceAction466(129),
-                       new ReduceAction467(129),
-                       new ReduceAction339(130),
-                       new ReduceAction469(130),
-                       new ReduceAction470(130),
-                       new ReduceAction471(130),
-                       new ReduceAction472(131),
-                       new ReduceAction473(131),
-                       new ReduceAction366(131),
-                       new ReduceAction367(131),
-                       new ReduceAction370(131),
-                       new ReduceAction371(131),
-                       new ReduceAction372(131),
-                       new ReduceAction373(131),
-                       new ReduceAction480(131),
-                       new ReduceAction481(131),
-                       new ReduceAction485(131),
-                       new ReduceAction486(131),
-                       new ReduceAction487(131),
-                       new ReduceAction488(131),
-                       new ReduceAction489(131),
-                       new ReduceAction490(131),
-                       new ReduceAction491(131),
-                       new ReduceAction492(131),
-                       new ReduceAction339(131),
-                       new ReduceAction495(131),
-                       new ReduceAction496(131),
-                       new ReduceAction339(132),
-                       new ReduceAction368(132),
-                       new ReduceAction369(132),
-                       new ReduceAction339(133),
-                       new ReduceAction439(133),
-                       new ReduceAction339(134),
-                       new ReduceAction441(134),
-                       new ReduceAction442(134),
-                       new ReduceAction443(134),
-                       new ReduceAction339(135),
-                       new ReduceAction445(135),
-                       new ReduceAction339(136),
-                       new ReduceAction447(136),
+                       new ReduceAction361(106),
+                       new ReduceAction362(106),
+                       new ReduceAction404(107),
+                       new ReduceAction405(107),
+                       new ReduceAction406(107),
+                       new ReduceAction407(107),
+                       new ReduceAction419(108),
+                       new ReduceAction448(108),
+                       new ReduceAction449(108),
+                       new ReduceAction419(109),
+                       new ReduceAction523(109),
+                       new ReduceAction419(110),
+                       new ReduceAction525(110),
+                       new ReduceAction526(110),
+                       new ReduceAction527(110),
+                       new ReduceAction419(111),
+                       new ReduceAction529(111),
+                       new ReduceAction419(112),
+                       new ReduceAction531(112),
+                       new ReduceAction532(112),
+                       new ReduceAction533(112),
+                       new ReduceAction534(112),
+                       new ReduceAction535(112),
+                       new ReduceAction536(112),
+                       new ReduceAction537(112),
+                       new ReduceAction538(112),
+                       new ReduceAction539(112),
+                       new ReduceAction540(112),
+                       new ReduceAction541(112),
+                       new ReduceAction419(113),
+                       new ReduceAction543(113),
+                       new ReduceAction544(113),
+                       new ReduceAction419(114),
+                       new ReduceAction546(114),
+                       new ReduceAction547(114),
+                       new ReduceAction548(114),
+                       new ReduceAction419(115),
+                       new ReduceAction550(115),
+                       new ReduceAction551(115),
+                       new ReduceAction419(116),
+                       new ReduceAction553(116),
+                       new ReduceAction554(116),
+                       new ReduceAction555(116),
+                       new ReduceAction556(117),
+                       new ReduceAction557(117),
+                       new ReduceAction446(117),
+                       new ReduceAction447(117),
+                       new ReduceAction450(117),
+                       new ReduceAction451(117),
+                       new ReduceAction452(117),
+                       new ReduceAction453(117),
+                       new ReduceAction565(117),
+                       new ReduceAction572(117),
+                       new ReduceAction573(117),
+                       new ReduceAction574(117),
+                       new ReduceAction575(117),
+                       new ReduceAction576(117),
+                       new ReduceAction577(117),
+                       new ReduceAction578(117),
+                       new ReduceAction579(117),
+                       new ReduceAction580(117),
+                       new ReduceAction581(117),
+                       new ReduceAction582(117),
+                       new ReduceAction583(117),
+                       new ReduceAction584(117),
+                       new ReduceAction585(117),
+                       new ReduceAction586(117),
+                       new ReduceAction587(117),
+                       new ReduceAction419(117),
+                       new ReduceAction589(117),
+                       new ReduceAction590(117),
+                       new ReduceAction591(117),
+                       new ReduceAction592(117),
+                       new ReduceAction404(118),
+                       new ReduceAction405(118),
+                       new ReduceAction406(118),
+                       new ReduceAction407(118),
+                       new ReduceAction408(118),
+                       new ReduceAction409(118),
+                       new ReduceAction410(118),
+                       new ReduceAction411(118),
+                       new ReduceAction419(119),
+                       new ReduceAction419(119),
+                       new ReduceAction429(119),
+                       new ReduceAction430(119),
+                       new ReduceAction431(119),
+                       new ReduceAction432(119),
+                       new ReduceAction433(119),
+                       new ReduceAction434(119),
+                       new ReduceAction435(119),
+                       new ReduceAction436(119),
+                       new ReduceAction437(119),
+                       new ReduceAction438(119),
+                       new ReduceAction439(119),
+                       new ReduceAction419(119),
+                       new ReduceAction419(119),
+                       new ReduceAction419(119),
+                       new ReduceAction419(119),
+                       new ReduceAction419(119),
+                       new ReduceAction419(119),
+                       new ReduceAction446(119),
+                       new ReduceAction447(119),
+                       new ReduceAction448(119),
+                       new ReduceAction449(119),
+                       new ReduceAction450(119),
+                       new ReduceAction451(119),
+                       new ReduceAction452(119),
+                       new ReduceAction453(119),
+                       new ReduceAction454(119),
+                       new ReduceAction484(120),
+                       new ReduceAction485(120),
+                       new ReduceAction486(120),
+                       new ReduceAction487(120),
+                       new ReduceAction488(120),
+                       new ReduceAction489(120),
+                       new ReduceAction490(120),
+                       new ReduceAction491(120),
+                       new ReduceAction492(120),
+                       new ReduceAction493(120),
+                       new ReduceAction419(121),
+                       new ReduceAction448(121),
+                       new ReduceAction449(121),
+                       new ReduceAction419(122),
+                       new ReduceAction523(122),
+                       new ReduceAction419(123),
+                       new ReduceAction525(123),
+                       new ReduceAction526(123),
+                       new ReduceAction527(123),
+                       new ReduceAction419(124),
+                       new ReduceAction529(124),
+                       new ReduceAction419(125),
+                       new ReduceAction531(125),
+                       new ReduceAction532(125),
+                       new ReduceAction533(125),
+                       new ReduceAction534(125),
+                       new ReduceAction535(125),
+                       new ReduceAction536(125),
+                       new ReduceAction537(125),
+                       new ReduceAction538(125),
+                       new ReduceAction539(125),
+                       new ReduceAction540(125),
+                       new ReduceAction541(125),
+                       new ReduceAction419(126),
+                       new ReduceAction543(126),
+                       new ReduceAction544(126),
+                       new ReduceAction419(127),
+                       new ReduceAction546(127),
+                       new ReduceAction547(127),
+                       new ReduceAction548(127),
+                       new ReduceAction419(128),
+                       new ReduceAction550(128),
+                       new ReduceAction551(128),
+                       new ReduceAction419(129),
+                       new ReduceAction553(129),
+                       new ReduceAction554(129),
+                       new ReduceAction555(129),
+                       new ReduceAction556(130),
+                       new ReduceAction557(130),
+                       new ReduceAction446(130),
+                       new ReduceAction447(130),
+                       new ReduceAction450(130),
+                       new ReduceAction451(130),
+                       new ReduceAction452(130),
+                       new ReduceAction453(130),
+                       new ReduceAction564(130),
+                       new ReduceAction565(130),
+                       new ReduceAction572(130),
+                       new ReduceAction573(130),
+                       new ReduceAction574(130),
+                       new ReduceAction575(130),
+                       new ReduceAction576(130),
+                       new ReduceAction577(130),
+                       new ReduceAction578(130),
+                       new ReduceAction579(130),
+                       new ReduceAction580(130),
+                       new ReduceAction581(130),
+                       new ReduceAction582(130),
+                       new ReduceAction583(130),
+                       new ReduceAction584(130),
+                       new ReduceAction585(130),
+                       new ReduceAction586(130),
+                       new ReduceAction587(130),
+                       new ReduceAction419(130),
+                       new ReduceAction591(130),
+                       new ReduceAction592(130),
+                       new ReduceAction602(131),
+                       new ReduceAction603(131),
+                       new ReduceAction604(132),
+                       new ReduceAction605(132),
+                       new ReduceAction618(133),
+                       new ReduceAction619(133),
+                       new ReduceAction621(134),
+                       new ReduceAction622(134),
+                       new ReduceAction622(134),
+                       new ReduceAction404(135),
+                       new ReduceAction405(135),
+                       new ReduceAction406(135),
+                       new ReduceAction407(135),
+                       new ReduceAction419(136),
                        new ReduceAction448(136),
                        new ReduceAction449(136),
                        new ReduceAction448(136),
                        new ReduceAction449(136),
-                       new ReduceAction450(136),
-                       new ReduceAction451(136),
-                       new ReduceAction452(136),
-                       new ReduceAction453(136),
-                       new ReduceAction454(136),
-                       new ReduceAction455(136),
-                       new ReduceAction456(136),
-                       new ReduceAction457(136),
-                       new ReduceAction339(137),
-                       new ReduceAction459(137),
-                       new ReduceAction460(137),
-                       new ReduceAction339(138),
-                       new ReduceAction462(138),
-                       new ReduceAction463(138),
-                       new ReduceAction464(138),
-                       new ReduceAction339(139),
-                       new ReduceAction466(139),
-                       new ReduceAction467(139),
-                       new ReduceAction339(140),
-                       new ReduceAction469(140),
-                       new ReduceAction806(140),
-                       new ReduceAction807(141),
-                       new ReduceAction808(141),
-                       new ReduceAction370(141),
-                       new ReduceAction371(141),
-                       new ReduceAction811(141),
-                       new ReduceAction481(141),
-                       new ReduceAction485(141),
-                       new ReduceAction486(141),
-                       new ReduceAction487(141),
-                       new ReduceAction488(141),
-                       new ReduceAction489(141),
-                       new ReduceAction490(141),
-                       new ReduceAction491(141),
-                       new ReduceAction492(141),
-                       new ReduceAction339(141),
-                       new ReduceAction495(141),
-                       new ReduceAction496(141),
-                       new ReduceAction824(142),
-                       new ReduceAction825(142),
-                       new ReduceAction339(143),
-                       new ReduceAction368(143),
-                       new ReduceAction369(143),
-                       new ReduceAction339(144),
-                       new ReduceAction368(144),
-                       new ReduceAction369(144),
-                       new ReduceAction832(145),
-                       new ReduceAction833(145),
-                       new ReduceAction834(146),
-                       new ReduceAction835(146),
-                       new ReduceAction836(147),
-                       new ReduceAction837(147),
-                       new ReduceAction838(148),
-                       new ReduceAction839(148),
-                       new ReduceAction840(149),
-                       new ReduceAction841(149),
-                       new ReduceAction838(150),
-                       new ReduceAction839(150),
-                       new ReduceAction844(151),
-                       new ReduceAction845(151),
-                       new ReduceAction846(152),
-                       new ReduceAction847(152),
-                       new ReduceAction848(153),
-                       new ReduceAction849(153),
-                       new ReduceAction850(154),
-                       new ReduceAction851(154),
-                       new ReduceAction332(155),
-                       new ReduceAction853(155),
-                       new ReduceAction854(156),
-                       new ReduceAction855(156),
-                       new ReduceAction304(157),
-                       new ReduceAction857(157),
-                       new ReduceAction854(158),
-                       new ReduceAction855(158),
-                       new ReduceAction515(159),
-                       new ReduceAction861(159),
-                       new ReduceAction862(160),
-                       new ReduceAction863(160),
-                       new ReduceAction864(161),
-                       new ReduceAction865(161)
+                       new ReduceAction419(137),
+                       new ReduceAction523(137),
+                       new ReduceAction419(138),
+                       new ReduceAction525(138),
+                       new ReduceAction526(138),
+                       new ReduceAction527(138),
+                       new ReduceAction419(139),
+                       new ReduceAction529(139),
+                       new ReduceAction419(140),
+                       new ReduceAction531(140),
+                       new ReduceAction532(140),
+                       new ReduceAction533(140),
+                       new ReduceAction534(140),
+                       new ReduceAction535(140),
+                       new ReduceAction536(140),
+                       new ReduceAction537(140),
+                       new ReduceAction538(140),
+                       new ReduceAction539(140),
+                       new ReduceAction540(140),
+                       new ReduceAction541(140),
+                       new ReduceAction419(141),
+                       new ReduceAction543(141),
+                       new ReduceAction544(141),
+                       new ReduceAction419(142),
+                       new ReduceAction546(142),
+                       new ReduceAction547(142),
+                       new ReduceAction548(142),
+                       new ReduceAction419(143),
+                       new ReduceAction550(143),
+                       new ReduceAction551(143),
+                       new ReduceAction419(144),
+                       new ReduceAction553(144),
+                       new ReduceAction931(144),
+                       new ReduceAction932(145),
+                       new ReduceAction933(145),
+                       new ReduceAction450(145),
+                       new ReduceAction451(145),
+                       new ReduceAction936(145),
+                       new ReduceAction565(145),
+                       new ReduceAction572(145),
+                       new ReduceAction573(145),
+                       new ReduceAction574(145),
+                       new ReduceAction575(145),
+                       new ReduceAction576(145),
+                       new ReduceAction577(145),
+                       new ReduceAction578(145),
+                       new ReduceAction579(145),
+                       new ReduceAction580(145),
+                       new ReduceAction581(145),
+                       new ReduceAction582(145),
+                       new ReduceAction583(145),
+                       new ReduceAction584(145),
+                       new ReduceAction585(145),
+                       new ReduceAction586(145),
+                       new ReduceAction587(145),
+                       new ReduceAction419(145),
+                       new ReduceAction591(145),
+                       new ReduceAction592(145),
+                       new ReduceAction957(146),
+                       new ReduceAction958(146),
+                       new ReduceAction416(147),
+                       new ReduceAction417(147),
+                       new ReduceAction418(147),
+                       new ReduceAction419(147),
+                       new ReduceAction419(148),
+                       new ReduceAction419(148),
+                       new ReduceAction429(148),
+                       new ReduceAction430(148),
+                       new ReduceAction431(148),
+                       new ReduceAction432(148),
+                       new ReduceAction433(148),
+                       new ReduceAction434(148),
+                       new ReduceAction435(148),
+                       new ReduceAction436(148),
+                       new ReduceAction437(148),
+                       new ReduceAction438(148),
+                       new ReduceAction439(148),
+                       new ReduceAction419(148),
+                       new ReduceAction419(148),
+                       new ReduceAction419(148),
+                       new ReduceAction419(148),
+                       new ReduceAction419(148),
+                       new ReduceAction419(148),
+                       new ReduceAction446(148),
+                       new ReduceAction447(148),
+                       new ReduceAction448(148),
+                       new ReduceAction449(148),
+                       new ReduceAction450(148),
+                       new ReduceAction451(148),
+                       new ReduceAction452(148),
+                       new ReduceAction453(148),
+                       new ReduceAction454(148),
+                       new ReduceAction456(149),
+                       new ReduceAction457(149),
+                       new ReduceAction458(150),
+                       new ReduceAction459(150),
+                       new ReduceAction460(150),
+                       new ReduceAction461(150),
+                       new ReduceAction462(150),
+                       new ReduceAction463(150),
+                       new ReduceAction464(150),
+                       new ReduceAction465(150),
+                       new ReduceAction466(150),
+                       new ReduceAction475(151),
+                       new ReduceAction476(152),
+                       new ReduceAction477(152),
+                       new ReduceAction478(152),
+                       new ReduceAction479(152),
+                       new ReduceAction480(152),
+                       new ReduceAction481(152),
+                       new ReduceAction482(152),
+                       new ReduceAction483(152),
+                       new ReduceAction484(153),
+                       new ReduceAction485(153),
+                       new ReduceAction486(153),
+                       new ReduceAction487(153),
+                       new ReduceAction488(153),
+                       new ReduceAction489(153),
+                       new ReduceAction490(153),
+                       new ReduceAction491(153),
+                       new ReduceAction492(153),
+                       new ReduceAction493(153),
+                       new ReduceAction496(154),
+                       new ReduceAction497(154),
+                       new ReduceAction498(155),
+                       new ReduceAction505(156),
+                       new ReduceAction506(156),
+                       new ReduceAction507(157),
+                       new ReduceAction508(157),
+                       new ReduceAction509(158),
+                       new ReduceAction510(158),
+                       new ReduceAction511(158),
+                       new ReduceAction512(158),
+                       new ReduceAction513(159),
+                       new ReduceAction514(159),
+                       new ReduceAction419(160),
+                       new ReduceAction448(160),
+                       new ReduceAction449(160),
+                       new ReduceAction521(160),
+                       new ReduceAction419(161),
+                       new ReduceAction448(161),
+                       new ReduceAction449(161),
+                       new ReduceAction419(162),
+                       new ReduceAction419(162),
+                       new ReduceAction429(162),
+                       new ReduceAction430(162),
+                       new ReduceAction431(162),
+                       new ReduceAction432(162),
+                       new ReduceAction433(162),
+                       new ReduceAction434(162),
+                       new ReduceAction435(162),
+                       new ReduceAction436(162),
+                       new ReduceAction437(162),
+                       new ReduceAction438(162),
+                       new ReduceAction439(162),
+                       new ReduceAction419(162),
+                       new ReduceAction419(162),
+                       new ReduceAction419(162),
+                       new ReduceAction419(162),
+                       new ReduceAction419(162),
+                       new ReduceAction419(162),
+                       new ReduceAction446(162),
+                       new ReduceAction447(162),
+                       new ReduceAction448(162),
+                       new ReduceAction449(162),
+                       new ReduceAction450(162),
+                       new ReduceAction451(162),
+                       new ReduceAction452(162),
+                       new ReduceAction453(162),
+                       new ReduceAction454(162),
+                       new ReduceAction484(163),
+                       new ReduceAction485(163),
+                       new ReduceAction486(163),
+                       new ReduceAction487(163),
+                       new ReduceAction488(163),
+                       new ReduceAction489(163),
+                       new ReduceAction490(163),
+                       new ReduceAction491(163),
+                       new ReduceAction492(163),
+                       new ReduceAction493(163),
+                       new ReduceAction419(164),
+                       new ReduceAction448(164),
+                       new ReduceAction449(164),
+                       new ReduceAction419(165),
+                       new ReduceAction448(165),
+                       new ReduceAction449(165),
+                       new ReduceAction416(166),
+                       new ReduceAction417(166),
+                       new ReduceAction418(166),
+                       new ReduceAction416(167),
+                       new ReduceAction417(167),
+                       new ReduceAction418(167),
+                       new ReduceAction419(168),
+                       new ReduceAction419(168),
+                       new ReduceAction429(168),
+                       new ReduceAction430(168),
+                       new ReduceAction431(168),
+                       new ReduceAction432(168),
+                       new ReduceAction433(168),
+                       new ReduceAction434(168),
+                       new ReduceAction435(168),
+                       new ReduceAction436(168),
+                       new ReduceAction437(168),
+                       new ReduceAction438(168),
+                       new ReduceAction439(168),
+                       new ReduceAction419(168),
+                       new ReduceAction419(168),
+                       new ReduceAction419(168),
+                       new ReduceAction419(168),
+                       new ReduceAction419(168),
+                       new ReduceAction454(168),
+                       new ReduceAction419(169),
+                       new ReduceAction419(169),
+                       new ReduceAction429(169),
+                       new ReduceAction430(169),
+                       new ReduceAction431(169),
+                       new ReduceAction432(169),
+                       new ReduceAction433(169),
+                       new ReduceAction434(169),
+                       new ReduceAction435(169),
+                       new ReduceAction436(169),
+                       new ReduceAction437(169),
+                       new ReduceAction438(169),
+                       new ReduceAction439(169),
+                       new ReduceAction419(169),
+                       new ReduceAction419(169),
+                       new ReduceAction419(169),
+                       new ReduceAction419(169),
+                       new ReduceAction419(169),
+                       new ReduceAction454(169),
+                       new ReduceAction419(170),
+                       new ReduceAction419(170),
+                       new ReduceAction429(170),
+                       new ReduceAction430(170),
+                       new ReduceAction431(170),
+                       new ReduceAction432(170),
+                       new ReduceAction433(170),
+                       new ReduceAction434(170),
+                       new ReduceAction435(170),
+                       new ReduceAction436(170),
+                       new ReduceAction437(170),
+                       new ReduceAction438(170),
+                       new ReduceAction439(170),
+                       new ReduceAction419(170),
+                       new ReduceAction419(170),
+                       new ReduceAction419(170),
+                       new ReduceAction419(170),
+                       new ReduceAction419(170),
+                       new ReduceAction454(170),
+                       new ReduceAction419(171),
+                       new ReduceAction419(171),
+                       new ReduceAction429(171),
+                       new ReduceAction430(171),
+                       new ReduceAction431(171),
+                       new ReduceAction432(171),
+                       new ReduceAction433(171),
+                       new ReduceAction434(171),
+                       new ReduceAction435(171),
+                       new ReduceAction436(171),
+                       new ReduceAction437(171),
+                       new ReduceAction438(171),
+                       new ReduceAction439(171),
+                       new ReduceAction419(171),
+                       new ReduceAction419(171),
+                       new ReduceAction419(171),
+                       new ReduceAction419(171),
+                       new ReduceAction419(171),
+                       new ReduceAction454(171),
+                       new ReduceAction419(172),
+                       new ReduceAction523(172),
+                       new ReduceAction419(173),
+                       new ReduceAction525(173),
+                       new ReduceAction526(173),
+                       new ReduceAction527(173),
+                       new ReduceAction419(174),
+                       new ReduceAction529(174),
+                       new ReduceAction419(175),
+                       new ReduceAction531(175),
+                       new ReduceAction533(175),
+                       new ReduceAction534(175),
+                       new ReduceAction535(175),
+                       new ReduceAction536(175),
+                       new ReduceAction537(175),
+                       new ReduceAction538(175),
+                       new ReduceAction539(175),
+                       new ReduceAction540(175),
+                       new ReduceAction541(175),
+                       new ReduceAction419(176),
+                       new ReduceAction523(176),
+                       new ReduceAction419(177),
+                       new ReduceAction525(177),
+                       new ReduceAction526(177),
+                       new ReduceAction527(177),
+                       new ReduceAction419(178),
+                       new ReduceAction529(178),
+                       new ReduceAction419(179),
+                       new ReduceAction531(179),
+                       new ReduceAction533(179),
+                       new ReduceAction534(179),
+                       new ReduceAction535(179),
+                       new ReduceAction536(179),
+                       new ReduceAction537(179),
+                       new ReduceAction538(179),
+                       new ReduceAction539(179),
+                       new ReduceAction540(179),
+                       new ReduceAction541(179),
+                       new ReduceAction419(180),
+                       new ReduceAction523(180),
+                       new ReduceAction419(181),
+                       new ReduceAction525(181),
+                       new ReduceAction526(181),
+                       new ReduceAction527(181),
+                       new ReduceAction419(182),
+                       new ReduceAction529(182),
+                       new ReduceAction419(183),
+                       new ReduceAction531(183),
+                       new ReduceAction533(183),
+                       new ReduceAction534(183),
+                       new ReduceAction535(183),
+                       new ReduceAction536(183),
+                       new ReduceAction537(183),
+                       new ReduceAction538(183),
+                       new ReduceAction539(183),
+                       new ReduceAction540(183),
+                       new ReduceAction541(183),
+                       new ReduceAction419(184),
+                       new ReduceAction523(184),
+                       new ReduceAction419(185),
+                       new ReduceAction525(185),
+                       new ReduceAction526(185),
+                       new ReduceAction527(185),
+                       new ReduceAction419(186),
+                       new ReduceAction529(186),
+                       new ReduceAction419(187),
+                       new ReduceAction531(187),
+                       new ReduceAction533(187),
+                       new ReduceAction534(187),
+                       new ReduceAction535(187),
+                       new ReduceAction536(187),
+                       new ReduceAction537(187),
+                       new ReduceAction538(187),
+                       new ReduceAction539(187),
+                       new ReduceAction540(187),
+                       new ReduceAction541(187),
+                       new ReduceAction612(188),
+                       new ReduceAction613(188),
+                       new ReduceAction614(188),
+                       new ReduceAction615(188),
+                       new ReduceAction616(188),
+                       new ReduceAction625(189),
+                       new ReduceAction628(189),
+                       new ReduceAction1250(190),
+                       new ReduceAction1251(190),
+                       new ReduceAction1252(191),
+                       new ReduceAction1253(191),
+                       new ReduceAction1254(192),
+                       new ReduceAction1255(192),
+                       new ReduceAction1256(193),
+                       new ReduceAction1257(193),
+                       new ReduceAction1258(194),
+                       new ReduceAction1259(194),
+                       new ReduceAction1256(195),
+                       new ReduceAction1257(195),
+                       new ReduceAction1262(196),
+                       new ReduceAction1263(196),
+                       new ReduceAction1264(197),
+                       new ReduceAction1265(197),
+                       new ReduceAction1266(198),
+                       new ReduceAction1267(198),
+                       new ReduceAction1268(199),
+                       new ReduceAction1269(199),
+                       new ReduceAction412(200),
+                       new ReduceAction1271(200),
+                       new ReduceAction1272(201),
+                       new ReduceAction1273(201),
+                       new ReduceAction380(202),
+                       new ReduceAction1275(202),
+                       new ReduceAction609(203),
+                       new ReduceAction1277(203),
+                       new ReduceAction609(204),
+                       new ReduceAction1277(204),
+                       new ReduceAction618(205),
+                       new ReduceAction1281(205),
+                       new ReduceAction1272(206),
+                       new ReduceAction1273(206),
+                       new ReduceAction640(207),
+                       new ReduceAction1285(207),
+                       new ReduceAction1286(208),
+                       new ReduceAction1287(208),
+                       new ReduceAction1288(209),
+                       new ReduceAction1289(209),
+                       new ReduceAction609(210),
+                       new ReduceAction1277(210)
                )
        end
 end
                )
        end
 end
@@ -3335,7 +3761,8 @@ private class ReduceAction64
                                        var pmoduledeclnode1: nullable AModuledecl = new AModuledecl.init_amoduledecl(
                                                pdocnode2,
                                                tkwmodulenode3,
                                        var pmoduledeclnode1: nullable AModuledecl = new AModuledecl.init_amoduledecl(
                                                pdocnode2,
                                                tkwmodulenode3,
-                                               pmodulenamenode4
+                                               pmodulenamenode4,
+                                               null
                                        )
                                        node_list = pmoduledeclnode1
                                        p.push(p.go_to(_goto), node_list)
                                        )
                                        node_list = pmoduledeclnode1
                                        p.push(p.go_to(_goto), node_list)
@@ -3352,6 +3779,35 @@ private class ReduceAction65
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwmodulenode3 = nodearraylist2
+                                       assert tkwmodulenode3 isa nullable TKwmodule
+                                       var pmodulenamenode4 = nodearraylist4
+                                       assert pmodulenamenode4 isa nullable AModuleName
+                                       var pannotationsnode5 = nodearraylist5
+                                       assert pannotationsnode5 isa nullable AAnnotations
+                                       var pmoduledeclnode1: nullable AModuledecl = new AModuledecl.init_amoduledecl(
+                                               pdocnode2,
+                                               tkwmodulenode3,
+                                               pmodulenamenode4,
+                                               pannotationsnode5
+                                       )
+                                       node_list = pmoduledeclnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction66
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
                                        var pvisibilitynode2 = nodearraylist2
                                        assert pvisibilitynode2 isa nullable AVisibility
                                        var tkwimportnode3 = nodearraylist3
                                        var pvisibilitynode2 = nodearraylist2
                                        assert pvisibilitynode2 isa nullable AVisibility
                                        var tkwimportnode3 = nodearraylist3
@@ -3361,13 +3817,44 @@ private class ReduceAction65
                                        var pimportnode1: nullable AStdImport = new AStdImport.init_astdimport(
                                                pvisibilitynode2,
                                                tkwimportnode3,
                                        var pimportnode1: nullable AStdImport = new AStdImport.init_astdimport(
                                                pvisibilitynode2,
                                                tkwimportnode3,
-                                               pmodulenamenode4
+                                               pmodulenamenode4,
+                                               null
                                        )
                                        node_list = pimportnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pimportnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction66
+private class ReduceAction67
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pvisibilitynode2 = nodearraylist2
+                                       assert pvisibilitynode2 isa nullable AVisibility
+                                       var tkwimportnode3 = nodearraylist3
+                                       assert tkwimportnode3 isa nullable TKwimport
+                                       var pmodulenamenode4 = nodearraylist5
+                                       assert pmodulenamenode4 isa nullable AModuleName
+                                       var pannotationsnode5 = nodearraylist6
+                                       assert pannotationsnode5 isa nullable AAnnotations
+                                       var pimportnode1: nullable AStdImport = new AStdImport.init_astdimport(
+                                               pvisibilitynode2,
+                                               tkwimportnode3,
+                                               pmodulenamenode4,
+                                               pannotationsnode5
+                                       )
+                                       node_list = pimportnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction68
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -3393,7 +3880,7 @@ private class ReduceAction66
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction67
+private class ReduceAction69
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -3412,7 +3899,7 @@ private class ReduceAction67
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction68
+private class ReduceAction70
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -3422,7 +3909,7 @@ private class ReduceAction68
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction69
+private class ReduceAction71
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -3439,7 +3926,7 @@ private class ReduceAction69
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction71
+private class ReduceAction73
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -3452,8 +3939,8 @@ private class ReduceAction71
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode7 = new Array[Object]
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode7 = new Array[Object]
-                                       var listnode9 = new Array[Object]
                                        var listnode10 = new Array[Object]
                                        var listnode10 = new Array[Object]
+                                       var listnode11 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode4 = nodearraylist2
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode4 = nodearraylist2
@@ -3462,8 +3949,8 @@ private class ReduceAction71
                                        assert pclasskindnode5 isa nullable AClasskind
                                        var tclassidnode6 = nodearraylist5
                                        assert tclassidnode6 isa nullable TClassid
                                        assert pclasskindnode5 isa nullable AClasskind
                                        var tclassidnode6 = nodearraylist5
                                        assert tclassidnode6 isa nullable TClassid
-                                       var tkwendnode11 = nodearraylist7
-                                       assert tkwendnode11 isa nullable TKwend
+                                       var tkwendnode12 = nodearraylist7
+                                       assert tkwendnode12 isa nullable TKwend
                                        var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                null,
                                        var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                null,
@@ -3472,15 +3959,16 @@ private class ReduceAction71
                                                tclassidnode6,
                                                listnode7,
                                                null,
                                                tclassidnode6,
                                                listnode7,
                                                null,
-                                               listnode9,
+                                               null,
                                                listnode10,
                                                listnode10,
-                                               tkwendnode11
+                                               listnode11,
+                                               tkwendnode12
                                        )
                                        node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction72
+private class ReduceAction74
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -3494,8 +3982,8 @@ private class ReduceAction72
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode7 = new Array[Object]
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode7 = new Array[Object]
-                                       var listnode9 = new Array[Object]
                                        var listnode10 = new Array[Object]
                                        var listnode10 = new Array[Object]
+                                       var listnode11 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
@@ -3506,8 +3994,8 @@ private class ReduceAction72
                                        assert pclasskindnode5 isa nullable AClasskind
                                        var tclassidnode6 = nodearraylist6
                                        assert tclassidnode6 isa nullable TClassid
                                        assert pclasskindnode5 isa nullable AClasskind
                                        var tclassidnode6 = nodearraylist6
                                        assert tclassidnode6 isa nullable TClassid
-                                       var tkwendnode11 = nodearraylist8
-                                       assert tkwendnode11 isa nullable TKwend
+                                       var tkwendnode12 = nodearraylist8
+                                       assert tkwendnode12 isa nullable TKwend
                                        var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                        var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
@@ -3516,15 +4004,16 @@ private class ReduceAction72
                                                tclassidnode6,
                                                listnode7,
                                                null,
                                                tclassidnode6,
                                                listnode7,
                                                null,
-                                               listnode9,
+                                               null,
                                                listnode10,
                                                listnode10,
-                                               tkwendnode11
+                                               listnode11,
+                                               tkwendnode12
                                        )
                                        node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction73
+private class ReduceAction75
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -3538,8 +4027,8 @@ private class ReduceAction73
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode8 = new Array[Object]
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode8 = new Array[Object]
-                                       var listnode10 = new Array[Object]
                                        var listnode11 = new Array[Object]
                                        var listnode11 = new Array[Object]
+                                       var listnode12 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode4 = nodearraylist2
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode4 = nodearraylist2
@@ -3551,8 +4040,8 @@ private class ReduceAction73
                                        var listnode7 = nodearraylist6
                                        assert listnode7 isa Array[Object]
                                        listnode8 = concat(listnode8, listnode7)
                                        var listnode7 = nodearraylist6
                                        assert listnode7 isa Array[Object]
                                        listnode8 = concat(listnode8, listnode7)
-                                       var tkwendnode12 = nodearraylist8
-                                       assert tkwendnode12 isa nullable TKwend
+                                       var tkwendnode13 = nodearraylist8
+                                       assert tkwendnode13 isa nullable TKwend
                                        var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                null,
                                        var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                null,
@@ -3561,15 +4050,16 @@ private class ReduceAction73
                                                tclassidnode6,
                                                listnode8,
                                                null,
                                                tclassidnode6,
                                                listnode8,
                                                null,
-                                               listnode10,
+                                               null,
                                                listnode11,
                                                listnode11,
-                                               tkwendnode12
+                                               listnode12,
+                                               tkwendnode13
                                        )
                                        node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction74
+private class ReduceAction76
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -3584,8 +4074,8 @@ private class ReduceAction74
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode8 = new Array[Object]
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode8 = new Array[Object]
-                                       var listnode10 = new Array[Object]
                                        var listnode11 = new Array[Object]
                                        var listnode11 = new Array[Object]
+                                       var listnode12 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
@@ -3599,8 +4089,8 @@ private class ReduceAction74
                                        var listnode7 = nodearraylist7
                                        assert listnode7 isa Array[Object]
                                        listnode8 = concat(listnode8, listnode7)
                                        var listnode7 = nodearraylist7
                                        assert listnode7 isa Array[Object]
                                        listnode8 = concat(listnode8, listnode7)
-                                       var tkwendnode12 = nodearraylist9
-                                       assert tkwendnode12 isa nullable TKwend
+                                       var tkwendnode13 = nodearraylist9
+                                       assert tkwendnode13 isa nullable TKwend
                                        var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                        var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
@@ -3609,15 +4099,16 @@ private class ReduceAction74
                                                tclassidnode6,
                                                listnode8,
                                                null,
                                                tclassidnode6,
                                                listnode8,
                                                null,
-                                               listnode10,
+                                               null,
                                                listnode11,
                                                listnode11,
-                                               tkwendnode12
+                                               listnode12,
+                                               tkwendnode13
                                        )
                                        node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction75
+private class ReduceAction77
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -3631,8 +4122,8 @@ private class ReduceAction75
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode7 = new Array[Object]
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode7 = new Array[Object]
-                                       var listnode9 = new Array[Object]
-                                       var listnode10 = new Array[Object]
+                                       var listnode15 = new Array[Object]
+                                       var listnode16 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode4 = nodearraylist2
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode4 = nodearraylist2
@@ -3641,10 +4132,18 @@ private class ReduceAction75
                                        assert pclasskindnode5 isa nullable AClasskind
                                        var tclassidnode6 = nodearraylist5
                                        assert tclassidnode6 isa nullable TClassid
                                        assert pclasskindnode5 isa nullable AClasskind
                                        var tclassidnode6 = nodearraylist5
                                        assert tclassidnode6 isa nullable TClassid
-                                       var pexterncodeblocknode8 = nodearraylist6
-                                       assert pexterncodeblocknode8 isa nullable AExternCodeBlock
-                                       var tkwendnode11 = nodearraylist8
-                                       assert tkwendnode11 isa nullable TKwend
+                                       var listnode12 = new Array[Object]
+                                       var listnode11 = nodearraylist6
+                                       assert listnode11 isa Array[Object]
+                                       listnode12 = concat(listnode12, listnode11)
+                                       var pannotationsnode8: nullable AAnnotations = new AAnnotations.init_aannotations(
+                                               null,
+                                               null,
+                                               listnode12,
+                                               null
+                                       )
+                                       var tkwendnode17 = nodearraylist8
+                                       assert tkwendnode17 isa nullable TKwend
                                        var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                null,
                                        var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                null,
@@ -3652,16 +4151,17 @@ private class ReduceAction75
                                                pclasskindnode5,
                                                tclassidnode6,
                                                listnode7,
                                                pclasskindnode5,
                                                tclassidnode6,
                                                listnode7,
-                                               pexterncodeblocknode8,
-                                               listnode9,
-                                               listnode10,
-                                               tkwendnode11
+                                               pannotationsnode8,
+                                               null,
+                                               listnode15,
+                                               listnode16,
+                                               tkwendnode17
                                        )
                                        node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction76
+private class ReduceAction78
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -3676,8 +4176,8 @@ private class ReduceAction76
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode7 = new Array[Object]
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode7 = new Array[Object]
-                                       var listnode9 = new Array[Object]
-                                       var listnode10 = new Array[Object]
+                                       var listnode15 = new Array[Object]
+                                       var listnode16 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
@@ -3688,10 +4188,18 @@ private class ReduceAction76
                                        assert pclasskindnode5 isa nullable AClasskind
                                        var tclassidnode6 = nodearraylist6
                                        assert tclassidnode6 isa nullable TClassid
                                        assert pclasskindnode5 isa nullable AClasskind
                                        var tclassidnode6 = nodearraylist6
                                        assert tclassidnode6 isa nullable TClassid
-                                       var pexterncodeblocknode8 = nodearraylist7
-                                       assert pexterncodeblocknode8 isa nullable AExternCodeBlock
-                                       var tkwendnode11 = nodearraylist9
-                                       assert tkwendnode11 isa nullable TKwend
+                                       var listnode12 = new Array[Object]
+                                       var listnode11 = nodearraylist7
+                                       assert listnode11 isa Array[Object]
+                                       listnode12 = concat(listnode12, listnode11)
+                                       var pannotationsnode8: nullable AAnnotations = new AAnnotations.init_aannotations(
+                                               null,
+                                               null,
+                                               listnode12,
+                                               null
+                                       )
+                                       var tkwendnode17 = nodearraylist9
+                                       assert tkwendnode17 isa nullable TKwend
                                        var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                        var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
@@ -3699,16 +4207,17 @@ private class ReduceAction76
                                                pclasskindnode5,
                                                tclassidnode6,
                                                listnode7,
                                                pclasskindnode5,
                                                tclassidnode6,
                                                listnode7,
-                                               pexterncodeblocknode8,
-                                               listnode9,
-                                               listnode10,
-                                               tkwendnode11
+                                               pannotationsnode8,
+                                               null,
+                                               listnode15,
+                                               listnode16,
+                                               tkwendnode17
                                        )
                                        node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction77
+private class ReduceAction79
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -3723,8 +4232,8 @@ private class ReduceAction77
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode8 = new Array[Object]
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode8 = new Array[Object]
-                                       var listnode10 = new Array[Object]
-                                       var listnode11 = new Array[Object]
+                                       var listnode16 = new Array[Object]
+                                       var listnode17 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode4 = nodearraylist2
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode4 = nodearraylist2
@@ -3736,10 +4245,18 @@ private class ReduceAction77
                                        var listnode7 = nodearraylist6
                                        assert listnode7 isa Array[Object]
                                        listnode8 = concat(listnode8, listnode7)
                                        var listnode7 = nodearraylist6
                                        assert listnode7 isa Array[Object]
                                        listnode8 = concat(listnode8, listnode7)
-                                       var pexterncodeblocknode9 = nodearraylist7
-                                       assert pexterncodeblocknode9 isa nullable AExternCodeBlock
-                                       var tkwendnode12 = nodearraylist9
-                                       assert tkwendnode12 isa nullable TKwend
+                                       var listnode13 = new Array[Object]
+                                       var listnode12 = nodearraylist7
+                                       assert listnode12 isa Array[Object]
+                                       listnode13 = concat(listnode13, listnode12)
+                                       var pannotationsnode9: nullable AAnnotations = new AAnnotations.init_aannotations(
+                                               null,
+                                               null,
+                                               listnode13,
+                                               null
+                                       )
+                                       var tkwendnode18 = nodearraylist9
+                                       assert tkwendnode18 isa nullable TKwend
                                        var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                null,
                                        var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                null,
@@ -3747,16 +4264,17 @@ private class ReduceAction77
                                                pclasskindnode5,
                                                tclassidnode6,
                                                listnode8,
                                                pclasskindnode5,
                                                tclassidnode6,
                                                listnode8,
-                                               pexterncodeblocknode9,
-                                               listnode10,
-                                               listnode11,
-                                               tkwendnode12
+                                               pannotationsnode9,
+                                               null,
+                                               listnode16,
+                                               listnode17,
+                                               tkwendnode18
                                        )
                                        node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction78
+private class ReduceAction80
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -3772,8 +4290,8 @@ private class ReduceAction78
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode8 = new Array[Object]
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode8 = new Array[Object]
-                                       var listnode10 = new Array[Object]
-                                       var listnode11 = new Array[Object]
+                                       var listnode16 = new Array[Object]
+                                       var listnode17 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
@@ -3787,10 +4305,18 @@ private class ReduceAction78
                                        var listnode7 = nodearraylist7
                                        assert listnode7 isa Array[Object]
                                        listnode8 = concat(listnode8, listnode7)
                                        var listnode7 = nodearraylist7
                                        assert listnode7 isa Array[Object]
                                        listnode8 = concat(listnode8, listnode7)
-                                       var pexterncodeblocknode9 = nodearraylist8
-                                       assert pexterncodeblocknode9 isa nullable AExternCodeBlock
-                                       var tkwendnode12 = nodearraylist10
-                                       assert tkwendnode12 isa nullable TKwend
+                                       var listnode13 = new Array[Object]
+                                       var listnode12 = nodearraylist8
+                                       assert listnode12 isa Array[Object]
+                                       listnode13 = concat(listnode13, listnode12)
+                                       var pannotationsnode9: nullable AAnnotations = new AAnnotations.init_aannotations(
+                                               null,
+                                               null,
+                                               listnode13,
+                                               null
+                                       )
+                                       var tkwendnode18 = nodearraylist10
+                                       assert tkwendnode18 isa nullable TKwend
                                        var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                        var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
@@ -3798,16 +4324,17 @@ private class ReduceAction78
                                                pclasskindnode5,
                                                tclassidnode6,
                                                listnode8,
                                                pclasskindnode5,
                                                tclassidnode6,
                                                listnode8,
-                                               pexterncodeblocknode9,
-                                               listnode10,
-                                               listnode11,
-                                               tkwendnode12
+                                               pannotationsnode9,
+                                               null,
+                                               listnode16,
+                                               listnode17,
+                                               tkwendnode18
                                        )
                                        node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction79
+private class ReduceAction81
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -3831,9 +4358,8 @@ private class ReduceAction79
                                        assert pclasskindnode5 isa nullable AClasskind
                                        var tclassidnode6 = nodearraylist5
                                        assert tclassidnode6 isa nullable TClassid
                                        assert pclasskindnode5 isa nullable AClasskind
                                        var tclassidnode6 = nodearraylist5
                                        assert tclassidnode6 isa nullable TClassid
-                                       var listnode9 = nodearraylist6
-                                       assert listnode9 isa Array[Object]
-                                       listnode10 = concat(listnode10, listnode9)
+                                       var pexterncodeblocknode9 = nodearraylist6
+                                       assert pexterncodeblocknode9 isa nullable AExternCodeBlock
                                        var tkwendnode12 = nodearraylist8
                                        assert tkwendnode12 isa nullable TKwend
                                        var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                        var tkwendnode12 = nodearraylist8
                                        assert tkwendnode12 isa nullable TKwend
                                        var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
@@ -3844,6 +4370,7 @@ private class ReduceAction79
                                                tclassidnode6,
                                                listnode7,
                                                null,
                                                tclassidnode6,
                                                listnode7,
                                                null,
+                                               pexterncodeblocknode9,
                                                listnode10,
                                                listnode11,
                                                tkwendnode12
                                                listnode10,
                                                listnode11,
                                                tkwendnode12
@@ -3852,7 +4379,7 @@ private class ReduceAction79
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction80
+private class ReduceAction82
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -3879,9 +4406,8 @@ private class ReduceAction80
                                        assert pclasskindnode5 isa nullable AClasskind
                                        var tclassidnode6 = nodearraylist6
                                        assert tclassidnode6 isa nullable TClassid
                                        assert pclasskindnode5 isa nullable AClasskind
                                        var tclassidnode6 = nodearraylist6
                                        assert tclassidnode6 isa nullable TClassid
-                                       var listnode9 = nodearraylist7
-                                       assert listnode9 isa Array[Object]
-                                       listnode10 = concat(listnode10, listnode9)
+                                       var pexterncodeblocknode9 = nodearraylist7
+                                       assert pexterncodeblocknode9 isa nullable AExternCodeBlock
                                        var tkwendnode12 = nodearraylist9
                                        assert tkwendnode12 isa nullable TKwend
                                        var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                        var tkwendnode12 = nodearraylist9
                                        assert tkwendnode12 isa nullable TKwend
                                        var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
@@ -3892,6 +4418,7 @@ private class ReduceAction80
                                                tclassidnode6,
                                                listnode7,
                                                null,
                                                tclassidnode6,
                                                listnode7,
                                                null,
+                                               pexterncodeblocknode9,
                                                listnode10,
                                                listnode11,
                                                tkwendnode12
                                                listnode10,
                                                listnode11,
                                                tkwendnode12
@@ -3900,7 +4427,7 @@ private class ReduceAction80
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction81
+private class ReduceAction83
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -3928,9 +4455,8 @@ private class ReduceAction81
                                        var listnode7 = nodearraylist6
                                        assert listnode7 isa Array[Object]
                                        listnode8 = concat(listnode8, listnode7)
                                        var listnode7 = nodearraylist6
                                        assert listnode7 isa Array[Object]
                                        listnode8 = concat(listnode8, listnode7)
-                                       var listnode10 = nodearraylist7
-                                       assert listnode10 isa Array[Object]
-                                       listnode11 = concat(listnode11, listnode10)
+                                       var pexterncodeblocknode10 = nodearraylist7
+                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
                                        var tkwendnode13 = nodearraylist9
                                        assert tkwendnode13 isa nullable TKwend
                                        var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                        var tkwendnode13 = nodearraylist9
                                        assert tkwendnode13 isa nullable TKwend
                                        var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
@@ -3941,6 +4467,7 @@ private class ReduceAction81
                                                tclassidnode6,
                                                listnode8,
                                                null,
                                                tclassidnode6,
                                                listnode8,
                                                null,
+                                               pexterncodeblocknode10,
                                                listnode11,
                                                listnode12,
                                                tkwendnode13
                                                listnode11,
                                                listnode12,
                                                tkwendnode13
@@ -3949,7 +4476,7 @@ private class ReduceAction81
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction82
+private class ReduceAction84
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -3980,9 +4507,8 @@ private class ReduceAction82
                                        var listnode7 = nodearraylist7
                                        assert listnode7 isa Array[Object]
                                        listnode8 = concat(listnode8, listnode7)
                                        var listnode7 = nodearraylist7
                                        assert listnode7 isa Array[Object]
                                        listnode8 = concat(listnode8, listnode7)
-                                       var listnode10 = nodearraylist8
-                                       assert listnode10 isa Array[Object]
-                                       listnode11 = concat(listnode11, listnode10)
+                                       var pexterncodeblocknode10 = nodearraylist8
+                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
                                        var tkwendnode13 = nodearraylist10
                                        assert tkwendnode13 isa nullable TKwend
                                        var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                        var tkwendnode13 = nodearraylist10
                                        assert tkwendnode13 isa nullable TKwend
                                        var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
@@ -3993,6 +4519,7 @@ private class ReduceAction82
                                                tclassidnode6,
                                                listnode8,
                                                null,
                                                tclassidnode6,
                                                listnode8,
                                                null,
+                                               pexterncodeblocknode10,
                                                listnode11,
                                                listnode12,
                                                tkwendnode13
                                                listnode11,
                                                listnode12,
                                                tkwendnode13
@@ -4001,7 +4528,7 @@ private class ReduceAction82
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction83
+private class ReduceAction85
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -4016,8 +4543,8 @@ private class ReduceAction83
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode7 = new Array[Object]
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode7 = new Array[Object]
-                                       var listnode10 = new Array[Object]
-                                       var listnode11 = new Array[Object]
+                                       var listnode15 = new Array[Object]
+                                       var listnode16 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode4 = nodearraylist2
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode4 = nodearraylist2
@@ -4026,13 +4553,20 @@ private class ReduceAction83
                                        assert pclasskindnode5 isa nullable AClasskind
                                        var tclassidnode6 = nodearraylist5
                                        assert tclassidnode6 isa nullable TClassid
                                        assert pclasskindnode5 isa nullable AClasskind
                                        var tclassidnode6 = nodearraylist5
                                        assert tclassidnode6 isa nullable TClassid
-                                       var pexterncodeblocknode8 = nodearraylist6
-                                       assert pexterncodeblocknode8 isa nullable AExternCodeBlock
-                                       var listnode9 = nodearraylist7
-                                       assert listnode9 isa Array[Object]
-                                       listnode10 = concat(listnode10, listnode9)
-                                       var tkwendnode12 = nodearraylist9
-                                       assert tkwendnode12 isa nullable TKwend
+                                       var listnode12 = new Array[Object]
+                                       var listnode11 = nodearraylist6
+                                       assert listnode11 isa Array[Object]
+                                       listnode12 = concat(listnode12, listnode11)
+                                       var pannotationsnode8: nullable AAnnotations = new AAnnotations.init_aannotations(
+                                               null,
+                                               null,
+                                               listnode12,
+                                               null
+                                       )
+                                       var pexterncodeblocknode14 = nodearraylist7
+                                       assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+                                       var tkwendnode17 = nodearraylist9
+                                       assert tkwendnode17 isa nullable TKwend
                                        var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                null,
                                        var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                null,
@@ -4040,16 +4574,17 @@ private class ReduceAction83
                                                pclasskindnode5,
                                                tclassidnode6,
                                                listnode7,
                                                pclasskindnode5,
                                                tclassidnode6,
                                                listnode7,
-                                               pexterncodeblocknode8,
-                                               listnode10,
-                                               listnode11,
-                                               tkwendnode12
+                                               pannotationsnode8,
+                                               pexterncodeblocknode14,
+                                               listnode15,
+                                               listnode16,
+                                               tkwendnode17
                                        )
                                        node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction84
+private class ReduceAction86
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -4065,8 +4600,8 @@ private class ReduceAction84
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode7 = new Array[Object]
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode7 = new Array[Object]
-                                       var listnode10 = new Array[Object]
-                                       var listnode11 = new Array[Object]
+                                       var listnode15 = new Array[Object]
+                                       var listnode16 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
@@ -4077,13 +4612,20 @@ private class ReduceAction84
                                        assert pclasskindnode5 isa nullable AClasskind
                                        var tclassidnode6 = nodearraylist6
                                        assert tclassidnode6 isa nullable TClassid
                                        assert pclasskindnode5 isa nullable AClasskind
                                        var tclassidnode6 = nodearraylist6
                                        assert tclassidnode6 isa nullable TClassid
-                                       var pexterncodeblocknode8 = nodearraylist7
-                                       assert pexterncodeblocknode8 isa nullable AExternCodeBlock
-                                       var listnode9 = nodearraylist8
-                                       assert listnode9 isa Array[Object]
-                                       listnode10 = concat(listnode10, listnode9)
-                                       var tkwendnode12 = nodearraylist10
-                                       assert tkwendnode12 isa nullable TKwend
+                                       var listnode12 = new Array[Object]
+                                       var listnode11 = nodearraylist7
+                                       assert listnode11 isa Array[Object]
+                                       listnode12 = concat(listnode12, listnode11)
+                                       var pannotationsnode8: nullable AAnnotations = new AAnnotations.init_aannotations(
+                                               null,
+                                               null,
+                                               listnode12,
+                                               null
+                                       )
+                                       var pexterncodeblocknode14 = nodearraylist8
+                                       assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+                                       var tkwendnode17 = nodearraylist10
+                                       assert tkwendnode17 isa nullable TKwend
                                        var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                        var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
@@ -4091,16 +4633,17 @@ private class ReduceAction84
                                                pclasskindnode5,
                                                tclassidnode6,
                                                listnode7,
                                                pclasskindnode5,
                                                tclassidnode6,
                                                listnode7,
-                                               pexterncodeblocknode8,
-                                               listnode10,
-                                               listnode11,
-                                               tkwendnode12
+                                               pannotationsnode8,
+                                               pexterncodeblocknode14,
+                                               listnode15,
+                                               listnode16,
+                                               tkwendnode17
                                        )
                                        node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction85
+private class ReduceAction87
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -4116,8 +4659,8 @@ private class ReduceAction85
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode8 = new Array[Object]
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode8 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode12 = new Array[Object]
+                                       var listnode16 = new Array[Object]
+                                       var listnode17 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode4 = nodearraylist2
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode4 = nodearraylist2
@@ -4129,13 +4672,20 @@ private class ReduceAction85
                                        var listnode7 = nodearraylist6
                                        assert listnode7 isa Array[Object]
                                        listnode8 = concat(listnode8, listnode7)
                                        var listnode7 = nodearraylist6
                                        assert listnode7 isa Array[Object]
                                        listnode8 = concat(listnode8, listnode7)
-                                       var pexterncodeblocknode9 = nodearraylist7
-                                       assert pexterncodeblocknode9 isa nullable AExternCodeBlock
-                                       var listnode10 = nodearraylist8
-                                       assert listnode10 isa Array[Object]
-                                       listnode11 = concat(listnode11, listnode10)
-                                       var tkwendnode13 = nodearraylist10
-                                       assert tkwendnode13 isa nullable TKwend
+                                       var listnode13 = new Array[Object]
+                                       var listnode12 = nodearraylist7
+                                       assert listnode12 isa Array[Object]
+                                       listnode13 = concat(listnode13, listnode12)
+                                       var pannotationsnode9: nullable AAnnotations = new AAnnotations.init_aannotations(
+                                               null,
+                                               null,
+                                               listnode13,
+                                               null
+                                       )
+                                       var pexterncodeblocknode15 = nodearraylist8
+                                       assert pexterncodeblocknode15 isa nullable AExternCodeBlock
+                                       var tkwendnode18 = nodearraylist10
+                                       assert tkwendnode18 isa nullable TKwend
                                        var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                null,
                                        var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                null,
@@ -4143,16 +4693,17 @@ private class ReduceAction85
                                                pclasskindnode5,
                                                tclassidnode6,
                                                listnode8,
                                                pclasskindnode5,
                                                tclassidnode6,
                                                listnode8,
-                                               pexterncodeblocknode9,
-                                               listnode11,
-                                               listnode12,
-                                               tkwendnode13
+                                               pannotationsnode9,
+                                               pexterncodeblocknode15,
+                                               listnode16,
+                                               listnode17,
+                                               tkwendnode18
                                        )
                                        node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction86
+private class ReduceAction88
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -4169,8 +4720,8 @@ private class ReduceAction86
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode8 = new Array[Object]
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode8 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode12 = new Array[Object]
+                                       var listnode16 = new Array[Object]
+                                       var listnode17 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
@@ -4184,13 +4735,20 @@ private class ReduceAction86
                                        var listnode7 = nodearraylist7
                                        assert listnode7 isa Array[Object]
                                        listnode8 = concat(listnode8, listnode7)
                                        var listnode7 = nodearraylist7
                                        assert listnode7 isa Array[Object]
                                        listnode8 = concat(listnode8, listnode7)
-                                       var pexterncodeblocknode9 = nodearraylist8
-                                       assert pexterncodeblocknode9 isa nullable AExternCodeBlock
-                                       var listnode10 = nodearraylist9
-                                       assert listnode10 isa Array[Object]
-                                       listnode11 = concat(listnode11, listnode10)
-                                       var tkwendnode13 = nodearraylist11
-                                       assert tkwendnode13 isa nullable TKwend
+                                       var listnode13 = new Array[Object]
+                                       var listnode12 = nodearraylist8
+                                       assert listnode12 isa Array[Object]
+                                       listnode13 = concat(listnode13, listnode12)
+                                       var pannotationsnode9: nullable AAnnotations = new AAnnotations.init_aannotations(
+                                               null,
+                                               null,
+                                               listnode13,
+                                               null
+                                       )
+                                       var pexterncodeblocknode15 = nodearraylist9
+                                       assert pexterncodeblocknode15 isa nullable AExternCodeBlock
+                                       var tkwendnode18 = nodearraylist11
+                                       assert tkwendnode18 isa nullable TKwend
                                        var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                        var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
@@ -4198,16 +4756,17 @@ private class ReduceAction86
                                                pclasskindnode5,
                                                tclassidnode6,
                                                listnode8,
                                                pclasskindnode5,
                                                tclassidnode6,
                                                listnode8,
-                                               pexterncodeblocknode9,
-                                               listnode11,
-                                               listnode12,
-                                               tkwendnode13
+                                               pannotationsnode9,
+                                               pexterncodeblocknode15,
+                                               listnode16,
+                                               listnode17,
+                                               tkwendnode18
                                        )
                                        node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction87
+private class ReduceAction89
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -4221,8 +4780,8 @@ private class ReduceAction87
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode7 = new Array[Object]
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode7 = new Array[Object]
-                                       var listnode9 = new Array[Object]
                                        var listnode11 = new Array[Object]
                                        var listnode11 = new Array[Object]
+                                       var listnode12 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode4 = nodearraylist2
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode4 = nodearraylist2
@@ -4234,8 +4793,8 @@ private class ReduceAction87
                                        var listnode10 = nodearraylist6
                                        assert listnode10 isa Array[Object]
                                        listnode11 = concat(listnode11, listnode10)
                                        var listnode10 = nodearraylist6
                                        assert listnode10 isa Array[Object]
                                        listnode11 = concat(listnode11, listnode10)
-                                       var tkwendnode12 = nodearraylist8
-                                       assert tkwendnode12 isa nullable TKwend
+                                       var tkwendnode13 = nodearraylist8
+                                       assert tkwendnode13 isa nullable TKwend
                                        var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                null,
                                        var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                null,
@@ -4244,15 +4803,16 @@ private class ReduceAction87
                                                tclassidnode6,
                                                listnode7,
                                                null,
                                                tclassidnode6,
                                                listnode7,
                                                null,
-                                               listnode9,
+                                               null,
                                                listnode11,
                                                listnode11,
-                                               tkwendnode12
+                                               listnode12,
+                                               tkwendnode13
                                        )
                                        node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction88
+private class ReduceAction90
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -4267,8 +4827,8 @@ private class ReduceAction88
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode7 = new Array[Object]
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode7 = new Array[Object]
-                                       var listnode9 = new Array[Object]
                                        var listnode11 = new Array[Object]
                                        var listnode11 = new Array[Object]
+                                       var listnode12 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
@@ -4282,8 +4842,8 @@ private class ReduceAction88
                                        var listnode10 = nodearraylist7
                                        assert listnode10 isa Array[Object]
                                        listnode11 = concat(listnode11, listnode10)
                                        var listnode10 = nodearraylist7
                                        assert listnode10 isa Array[Object]
                                        listnode11 = concat(listnode11, listnode10)
-                                       var tkwendnode12 = nodearraylist9
-                                       assert tkwendnode12 isa nullable TKwend
+                                       var tkwendnode13 = nodearraylist9
+                                       assert tkwendnode13 isa nullable TKwend
                                        var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                        var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
@@ -4292,15 +4852,16 @@ private class ReduceAction88
                                                tclassidnode6,
                                                listnode7,
                                                null,
                                                tclassidnode6,
                                                listnode7,
                                                null,
-                                               listnode9,
+                                               null,
                                                listnode11,
                                                listnode11,
-                                               tkwendnode12
+                                               listnode12,
+                                               tkwendnode13
                                        )
                                        node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction89
+private class ReduceAction91
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -4315,8 +4876,8 @@ private class ReduceAction89
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode8 = new Array[Object]
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode8 = new Array[Object]
-                                       var listnode10 = new Array[Object]
                                        var listnode12 = new Array[Object]
                                        var listnode12 = new Array[Object]
+                                       var listnode13 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode4 = nodearraylist2
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode4 = nodearraylist2
@@ -4331,8 +4892,8 @@ private class ReduceAction89
                                        var listnode11 = nodearraylist7
                                        assert listnode11 isa Array[Object]
                                        listnode12 = concat(listnode12, listnode11)
                                        var listnode11 = nodearraylist7
                                        assert listnode11 isa Array[Object]
                                        listnode12 = concat(listnode12, listnode11)
-                                       var tkwendnode13 = nodearraylist9
-                                       assert tkwendnode13 isa nullable TKwend
+                                       var tkwendnode14 = nodearraylist9
+                                       assert tkwendnode14 isa nullable TKwend
                                        var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                null,
                                        var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                null,
@@ -4341,15 +4902,16 @@ private class ReduceAction89
                                                tclassidnode6,
                                                listnode8,
                                                null,
                                                tclassidnode6,
                                                listnode8,
                                                null,
-                                               listnode10,
+                                               null,
                                                listnode12,
                                                listnode12,
-                                               tkwendnode13
+                                               listnode13,
+                                               tkwendnode14
                                        )
                                        node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction90
+private class ReduceAction92
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -4365,8 +4927,8 @@ private class ReduceAction90
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode8 = new Array[Object]
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode8 = new Array[Object]
-                                       var listnode10 = new Array[Object]
                                        var listnode12 = new Array[Object]
                                        var listnode12 = new Array[Object]
+                                       var listnode13 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
@@ -4383,8 +4945,8 @@ private class ReduceAction90
                                        var listnode11 = nodearraylist8
                                        assert listnode11 isa Array[Object]
                                        listnode12 = concat(listnode12, listnode11)
                                        var listnode11 = nodearraylist8
                                        assert listnode11 isa Array[Object]
                                        listnode12 = concat(listnode12, listnode11)
-                                       var tkwendnode13 = nodearraylist10
-                                       assert tkwendnode13 isa nullable TKwend
+                                       var tkwendnode14 = nodearraylist10
+                                       assert tkwendnode14 isa nullable TKwend
                                        var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                        var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
@@ -4393,15 +4955,16 @@ private class ReduceAction90
                                                tclassidnode6,
                                                listnode8,
                                                null,
                                                tclassidnode6,
                                                listnode8,
                                                null,
-                                               listnode10,
+                                               null,
                                                listnode12,
                                                listnode12,
-                                               tkwendnode13
+                                               listnode13,
+                                               tkwendnode14
                                        )
                                        node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction91
+private class ReduceAction93
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -4416,8 +4979,8 @@ private class ReduceAction91
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode7 = new Array[Object]
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode7 = new Array[Object]
-                                       var listnode9 = new Array[Object]
-                                       var listnode11 = new Array[Object]
+                                       var listnode16 = new Array[Object]
+                                       var listnode17 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode4 = nodearraylist2
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode4 = nodearraylist2
@@ -4426,13 +4989,21 @@ private class ReduceAction91
                                        assert pclasskindnode5 isa nullable AClasskind
                                        var tclassidnode6 = nodearraylist5
                                        assert tclassidnode6 isa nullable TClassid
                                        assert pclasskindnode5 isa nullable AClasskind
                                        var tclassidnode6 = nodearraylist5
                                        assert tclassidnode6 isa nullable TClassid
-                                       var pexterncodeblocknode8 = nodearraylist6
-                                       assert pexterncodeblocknode8 isa nullable AExternCodeBlock
-                                       var listnode10 = nodearraylist7
-                                       assert listnode10 isa Array[Object]
-                                       listnode11 = concat(listnode11, listnode10)
-                                       var tkwendnode12 = nodearraylist9
-                                       assert tkwendnode12 isa nullable TKwend
+                                       var listnode12 = new Array[Object]
+                                       var listnode11 = nodearraylist6
+                                       assert listnode11 isa Array[Object]
+                                       listnode12 = concat(listnode12, listnode11)
+                                       var pannotationsnode8: nullable AAnnotations = new AAnnotations.init_aannotations(
+                                               null,
+                                               null,
+                                               listnode12,
+                                               null
+                                       )
+                                       var listnode15 = nodearraylist7
+                                       assert listnode15 isa Array[Object]
+                                       listnode16 = concat(listnode16, listnode15)
+                                       var tkwendnode18 = nodearraylist9
+                                       assert tkwendnode18 isa nullable TKwend
                                        var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                null,
                                        var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                null,
@@ -4440,16 +5011,17 @@ private class ReduceAction91
                                                pclasskindnode5,
                                                tclassidnode6,
                                                listnode7,
                                                pclasskindnode5,
                                                tclassidnode6,
                                                listnode7,
-                                               pexterncodeblocknode8,
-                                               listnode9,
-                                               listnode11,
-                                               tkwendnode12
+                                               pannotationsnode8,
+                                               null,
+                                               listnode16,
+                                               listnode17,
+                                               tkwendnode18
                                        )
                                        node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction92
+private class ReduceAction94
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -4465,8 +5037,8 @@ private class ReduceAction92
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode7 = new Array[Object]
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode7 = new Array[Object]
-                                       var listnode9 = new Array[Object]
-                                       var listnode11 = new Array[Object]
+                                       var listnode16 = new Array[Object]
+                                       var listnode17 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
@@ -4477,13 +5049,21 @@ private class ReduceAction92
                                        assert pclasskindnode5 isa nullable AClasskind
                                        var tclassidnode6 = nodearraylist6
                                        assert tclassidnode6 isa nullable TClassid
                                        assert pclasskindnode5 isa nullable AClasskind
                                        var tclassidnode6 = nodearraylist6
                                        assert tclassidnode6 isa nullable TClassid
-                                       var pexterncodeblocknode8 = nodearraylist7
-                                       assert pexterncodeblocknode8 isa nullable AExternCodeBlock
-                                       var listnode10 = nodearraylist8
-                                       assert listnode10 isa Array[Object]
-                                       listnode11 = concat(listnode11, listnode10)
-                                       var tkwendnode12 = nodearraylist10
-                                       assert tkwendnode12 isa nullable TKwend
+                                       var listnode12 = new Array[Object]
+                                       var listnode11 = nodearraylist7
+                                       assert listnode11 isa Array[Object]
+                                       listnode12 = concat(listnode12, listnode11)
+                                       var pannotationsnode8: nullable AAnnotations = new AAnnotations.init_aannotations(
+                                               null,
+                                               null,
+                                               listnode12,
+                                               null
+                                       )
+                                       var listnode15 = nodearraylist8
+                                       assert listnode15 isa Array[Object]
+                                       listnode16 = concat(listnode16, listnode15)
+                                       var tkwendnode18 = nodearraylist10
+                                       assert tkwendnode18 isa nullable TKwend
                                        var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                        var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
@@ -4491,16 +5071,17 @@ private class ReduceAction92
                                                pclasskindnode5,
                                                tclassidnode6,
                                                listnode7,
                                                pclasskindnode5,
                                                tclassidnode6,
                                                listnode7,
-                                               pexterncodeblocknode8,
-                                               listnode9,
-                                               listnode11,
-                                               tkwendnode12
+                                               pannotationsnode8,
+                                               null,
+                                               listnode16,
+                                               listnode17,
+                                               tkwendnode18
                                        )
                                        node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction93
+private class ReduceAction95
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -4516,8 +5097,8 @@ private class ReduceAction93
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode8 = new Array[Object]
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode8 = new Array[Object]
-                                       var listnode10 = new Array[Object]
-                                       var listnode12 = new Array[Object]
+                                       var listnode17 = new Array[Object]
+                                       var listnode18 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode4 = nodearraylist2
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode4 = nodearraylist2
@@ -4529,13 +5110,21 @@ private class ReduceAction93
                                        var listnode7 = nodearraylist6
                                        assert listnode7 isa Array[Object]
                                        listnode8 = concat(listnode8, listnode7)
                                        var listnode7 = nodearraylist6
                                        assert listnode7 isa Array[Object]
                                        listnode8 = concat(listnode8, listnode7)
-                                       var pexterncodeblocknode9 = nodearraylist7
-                                       assert pexterncodeblocknode9 isa nullable AExternCodeBlock
-                                       var listnode11 = nodearraylist8
-                                       assert listnode11 isa Array[Object]
-                                       listnode12 = concat(listnode12, listnode11)
-                                       var tkwendnode13 = nodearraylist10
-                                       assert tkwendnode13 isa nullable TKwend
+                                       var listnode13 = new Array[Object]
+                                       var listnode12 = nodearraylist7
+                                       assert listnode12 isa Array[Object]
+                                       listnode13 = concat(listnode13, listnode12)
+                                       var pannotationsnode9: nullable AAnnotations = new AAnnotations.init_aannotations(
+                                               null,
+                                               null,
+                                               listnode13,
+                                               null
+                                       )
+                                       var listnode16 = nodearraylist8
+                                       assert listnode16 isa Array[Object]
+                                       listnode17 = concat(listnode17, listnode16)
+                                       var tkwendnode19 = nodearraylist10
+                                       assert tkwendnode19 isa nullable TKwend
                                        var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                null,
                                        var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                null,
@@ -4543,16 +5132,17 @@ private class ReduceAction93
                                                pclasskindnode5,
                                                tclassidnode6,
                                                listnode8,
                                                pclasskindnode5,
                                                tclassidnode6,
                                                listnode8,
-                                               pexterncodeblocknode9,
-                                               listnode10,
-                                               listnode12,
-                                               tkwendnode13
+                                               pannotationsnode9,
+                                               null,
+                                               listnode17,
+                                               listnode18,
+                                               tkwendnode19
                                        )
                                        node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction94
+private class ReduceAction96
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -4569,8 +5159,8 @@ private class ReduceAction94
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode8 = new Array[Object]
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode8 = new Array[Object]
-                                       var listnode10 = new Array[Object]
-                                       var listnode12 = new Array[Object]
+                                       var listnode17 = new Array[Object]
+                                       var listnode18 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
@@ -4584,13 +5174,21 @@ private class ReduceAction94
                                        var listnode7 = nodearraylist7
                                        assert listnode7 isa Array[Object]
                                        listnode8 = concat(listnode8, listnode7)
                                        var listnode7 = nodearraylist7
                                        assert listnode7 isa Array[Object]
                                        listnode8 = concat(listnode8, listnode7)
-                                       var pexterncodeblocknode9 = nodearraylist8
-                                       assert pexterncodeblocknode9 isa nullable AExternCodeBlock
-                                       var listnode11 = nodearraylist9
-                                       assert listnode11 isa Array[Object]
-                                       listnode12 = concat(listnode12, listnode11)
-                                       var tkwendnode13 = nodearraylist11
-                                       assert tkwendnode13 isa nullable TKwend
+                                       var listnode13 = new Array[Object]
+                                       var listnode12 = nodearraylist8
+                                       assert listnode12 isa Array[Object]
+                                       listnode13 = concat(listnode13, listnode12)
+                                       var pannotationsnode9: nullable AAnnotations = new AAnnotations.init_aannotations(
+                                               null,
+                                               null,
+                                               listnode13,
+                                               null
+                                       )
+                                       var listnode16 = nodearraylist9
+                                       assert listnode16 isa Array[Object]
+                                       listnode17 = concat(listnode17, listnode16)
+                                       var tkwendnode19 = nodearraylist11
+                                       assert tkwendnode19 isa nullable TKwend
                                        var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                        var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
@@ -4598,16 +5196,17 @@ private class ReduceAction94
                                                pclasskindnode5,
                                                tclassidnode6,
                                                listnode8,
                                                pclasskindnode5,
                                                tclassidnode6,
                                                listnode8,
-                                               pexterncodeblocknode9,
-                                               listnode10,
-                                               listnode12,
-                                               tkwendnode13
+                                               pannotationsnode9,
+                                               null,
+                                               listnode17,
+                                               listnode18,
+                                               tkwendnode19
                                        )
                                        node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction95
+private class ReduceAction97
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -4622,7 +5221,7 @@ private class ReduceAction95
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode7 = new Array[Object]
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode7 = new Array[Object]
-                                       var listnode10 = new Array[Object]
+                                       var listnode11 = new Array[Object]
                                        var listnode12 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var listnode12 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
@@ -4632,12 +5231,11 @@ private class ReduceAction95
                                        assert pclasskindnode5 isa nullable AClasskind
                                        var tclassidnode6 = nodearraylist5
                                        assert tclassidnode6 isa nullable TClassid
                                        assert pclasskindnode5 isa nullable AClasskind
                                        var tclassidnode6 = nodearraylist5
                                        assert tclassidnode6 isa nullable TClassid
-                                       var listnode9 = nodearraylist6
-                                       assert listnode9 isa Array[Object]
-                                       listnode10 = concat(listnode10, listnode9)
-                                       var listnode11 = nodearraylist7
-                                       assert listnode11 isa Array[Object]
-                                       listnode12 = concat(listnode12, listnode11)
+                                       var pexterncodeblocknode9 = nodearraylist6
+                                       assert pexterncodeblocknode9 isa nullable AExternCodeBlock
+                                       var listnode10 = nodearraylist7
+                                       assert listnode10 isa Array[Object]
+                                       listnode11 = concat(listnode11, listnode10)
                                        var tkwendnode13 = nodearraylist9
                                        assert tkwendnode13 isa nullable TKwend
                                        var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                        var tkwendnode13 = nodearraylist9
                                        assert tkwendnode13 isa nullable TKwend
                                        var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
@@ -4648,7 +5246,8 @@ private class ReduceAction95
                                                tclassidnode6,
                                                listnode7,
                                                null,
                                                tclassidnode6,
                                                listnode7,
                                                null,
-                                               listnode10,
+                                               pexterncodeblocknode9,
+                                               listnode11,
                                                listnode12,
                                                tkwendnode13
                                        )
                                                listnode12,
                                                tkwendnode13
                                        )
@@ -4656,7 +5255,7 @@ private class ReduceAction95
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction96
+private class ReduceAction98
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -4672,7 +5271,7 @@ private class ReduceAction96
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode7 = new Array[Object]
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode7 = new Array[Object]
-                                       var listnode10 = new Array[Object]
+                                       var listnode11 = new Array[Object]
                                        var listnode12 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var listnode12 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
@@ -4684,12 +5283,11 @@ private class ReduceAction96
                                        assert pclasskindnode5 isa nullable AClasskind
                                        var tclassidnode6 = nodearraylist6
                                        assert tclassidnode6 isa nullable TClassid
                                        assert pclasskindnode5 isa nullable AClasskind
                                        var tclassidnode6 = nodearraylist6
                                        assert tclassidnode6 isa nullable TClassid
-                                       var listnode9 = nodearraylist7
-                                       assert listnode9 isa Array[Object]
-                                       listnode10 = concat(listnode10, listnode9)
-                                       var listnode11 = nodearraylist8
-                                       assert listnode11 isa Array[Object]
-                                       listnode12 = concat(listnode12, listnode11)
+                                       var pexterncodeblocknode9 = nodearraylist7
+                                       assert pexterncodeblocknode9 isa nullable AExternCodeBlock
+                                       var listnode10 = nodearraylist8
+                                       assert listnode10 isa Array[Object]
+                                       listnode11 = concat(listnode11, listnode10)
                                        var tkwendnode13 = nodearraylist10
                                        assert tkwendnode13 isa nullable TKwend
                                        var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                        var tkwendnode13 = nodearraylist10
                                        assert tkwendnode13 isa nullable TKwend
                                        var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
@@ -4700,7 +5298,8 @@ private class ReduceAction96
                                                tclassidnode6,
                                                listnode7,
                                                null,
                                                tclassidnode6,
                                                listnode7,
                                                null,
-                                               listnode10,
+                                               pexterncodeblocknode9,
+                                               listnode11,
                                                listnode12,
                                                tkwendnode13
                                        )
                                                listnode12,
                                                tkwendnode13
                                        )
@@ -4708,7 +5307,7 @@ private class ReduceAction96
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction97
+private class ReduceAction99
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -4724,7 +5323,7 @@ private class ReduceAction97
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode8 = new Array[Object]
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode8 = new Array[Object]
-                                       var listnode11 = new Array[Object]
+                                       var listnode12 = new Array[Object]
                                        var listnode13 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var listnode13 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
@@ -4737,12 +5336,11 @@ private class ReduceAction97
                                        var listnode7 = nodearraylist6
                                        assert listnode7 isa Array[Object]
                                        listnode8 = concat(listnode8, listnode7)
                                        var listnode7 = nodearraylist6
                                        assert listnode7 isa Array[Object]
                                        listnode8 = concat(listnode8, listnode7)
-                                       var listnode10 = nodearraylist7
-                                       assert listnode10 isa Array[Object]
-                                       listnode11 = concat(listnode11, listnode10)
-                                       var listnode12 = nodearraylist8
-                                       assert listnode12 isa Array[Object]
-                                       listnode13 = concat(listnode13, listnode12)
+                                       var pexterncodeblocknode10 = nodearraylist7
+                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+                                       var listnode11 = nodearraylist8
+                                       assert listnode11 isa Array[Object]
+                                       listnode12 = concat(listnode12, listnode11)
                                        var tkwendnode14 = nodearraylist10
                                        assert tkwendnode14 isa nullable TKwend
                                        var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                        var tkwendnode14 = nodearraylist10
                                        assert tkwendnode14 isa nullable TKwend
                                        var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
@@ -4753,7 +5351,8 @@ private class ReduceAction97
                                                tclassidnode6,
                                                listnode8,
                                                null,
                                                tclassidnode6,
                                                listnode8,
                                                null,
-                                               listnode11,
+                                               pexterncodeblocknode10,
+                                               listnode12,
                                                listnode13,
                                                tkwendnode14
                                        )
                                                listnode13,
                                                tkwendnode14
                                        )
@@ -4761,7 +5360,7 @@ private class ReduceAction97
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction98
+private class ReduceAction100
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -4778,7 +5377,7 @@ private class ReduceAction98
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode8 = new Array[Object]
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode8 = new Array[Object]
-                                       var listnode11 = new Array[Object]
+                                       var listnode12 = new Array[Object]
                                        var listnode13 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var listnode13 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
@@ -4793,12 +5392,11 @@ private class ReduceAction98
                                        var listnode7 = nodearraylist7
                                        assert listnode7 isa Array[Object]
                                        listnode8 = concat(listnode8, listnode7)
                                        var listnode7 = nodearraylist7
                                        assert listnode7 isa Array[Object]
                                        listnode8 = concat(listnode8, listnode7)
-                                       var listnode10 = nodearraylist8
-                                       assert listnode10 isa Array[Object]
-                                       listnode11 = concat(listnode11, listnode10)
-                                       var listnode12 = nodearraylist9
-                                       assert listnode12 isa Array[Object]
-                                       listnode13 = concat(listnode13, listnode12)
+                                       var pexterncodeblocknode10 = nodearraylist8
+                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+                                       var listnode11 = nodearraylist9
+                                       assert listnode11 isa Array[Object]
+                                       listnode12 = concat(listnode12, listnode11)
                                        var tkwendnode14 = nodearraylist11
                                        assert tkwendnode14 isa nullable TKwend
                                        var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                        var tkwendnode14 = nodearraylist11
                                        assert tkwendnode14 isa nullable TKwend
                                        var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
@@ -4809,7 +5407,8 @@ private class ReduceAction98
                                                tclassidnode6,
                                                listnode8,
                                                null,
                                                tclassidnode6,
                                                listnode8,
                                                null,
-                                               listnode11,
+                                               pexterncodeblocknode10,
+                                               listnode12,
                                                listnode13,
                                                tkwendnode14
                                        )
                                                listnode13,
                                                tkwendnode14
                                        )
@@ -4817,7 +5416,7 @@ private class ReduceAction98
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction99
+private class ReduceAction101
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -4833,8 +5432,8 @@ private class ReduceAction99
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode7 = new Array[Object]
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode7 = new Array[Object]
-                                       var listnode10 = new Array[Object]
-                                       var listnode12 = new Array[Object]
+                                       var listnode16 = new Array[Object]
+                                       var listnode17 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode4 = nodearraylist2
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode4 = nodearraylist2
@@ -4843,16 +5442,23 @@ private class ReduceAction99
                                        assert pclasskindnode5 isa nullable AClasskind
                                        var tclassidnode6 = nodearraylist5
                                        assert tclassidnode6 isa nullable TClassid
                                        assert pclasskindnode5 isa nullable AClasskind
                                        var tclassidnode6 = nodearraylist5
                                        assert tclassidnode6 isa nullable TClassid
-                                       var pexterncodeblocknode8 = nodearraylist6
-                                       assert pexterncodeblocknode8 isa nullable AExternCodeBlock
-                                       var listnode9 = nodearraylist7
-                                       assert listnode9 isa Array[Object]
-                                       listnode10 = concat(listnode10, listnode9)
-                                       var listnode11 = nodearraylist8
+                                       var listnode12 = new Array[Object]
+                                       var listnode11 = nodearraylist6
                                        assert listnode11 isa Array[Object]
                                        listnode12 = concat(listnode12, listnode11)
                                        assert listnode11 isa Array[Object]
                                        listnode12 = concat(listnode12, listnode11)
-                                       var tkwendnode13 = nodearraylist10
-                                       assert tkwendnode13 isa nullable TKwend
+                                       var pannotationsnode8: nullable AAnnotations = new AAnnotations.init_aannotations(
+                                               null,
+                                               null,
+                                               listnode12,
+                                               null
+                                       )
+                                       var pexterncodeblocknode14 = nodearraylist7
+                                       assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+                                       var listnode15 = nodearraylist8
+                                       assert listnode15 isa Array[Object]
+                                       listnode16 = concat(listnode16, listnode15)
+                                       var tkwendnode18 = nodearraylist10
+                                       assert tkwendnode18 isa nullable TKwend
                                        var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                null,
                                        var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                null,
@@ -4860,16 +5466,17 @@ private class ReduceAction99
                                                pclasskindnode5,
                                                tclassidnode6,
                                                listnode7,
                                                pclasskindnode5,
                                                tclassidnode6,
                                                listnode7,
-                                               pexterncodeblocknode8,
-                                               listnode10,
-                                               listnode12,
-                                               tkwendnode13
+                                               pannotationsnode8,
+                                               pexterncodeblocknode14,
+                                               listnode16,
+                                               listnode17,
+                                               tkwendnode18
                                        )
                                        node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction100
+private class ReduceAction102
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -4886,8 +5493,8 @@ private class ReduceAction100
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode7 = new Array[Object]
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode7 = new Array[Object]
-                                       var listnode10 = new Array[Object]
-                                       var listnode12 = new Array[Object]
+                                       var listnode16 = new Array[Object]
+                                       var listnode17 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
@@ -4898,33 +5505,41 @@ private class ReduceAction100
                                        assert pclasskindnode5 isa nullable AClasskind
                                        var tclassidnode6 = nodearraylist6
                                        assert tclassidnode6 isa nullable TClassid
                                        assert pclasskindnode5 isa nullable AClasskind
                                        var tclassidnode6 = nodearraylist6
                                        assert tclassidnode6 isa nullable TClassid
-                                       var pexterncodeblocknode8 = nodearraylist7
-                                       assert pexterncodeblocknode8 isa nullable AExternCodeBlock
-                                       var listnode9 = nodearraylist8
-                                       assert listnode9 isa Array[Object]
-                                       listnode10 = concat(listnode10, listnode9)
-                                       var listnode11 = nodearraylist9
+                                       var listnode12 = new Array[Object]
+                                       var listnode11 = nodearraylist7
                                        assert listnode11 isa Array[Object]
                                        listnode12 = concat(listnode12, listnode11)
                                        assert listnode11 isa Array[Object]
                                        listnode12 = concat(listnode12, listnode11)
-                                       var tkwendnode13 = nodearraylist11
-                                       assert tkwendnode13 isa nullable TKwend
-                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
-                                               pdocnode2,
+                                       var pannotationsnode8: nullable AAnnotations = new AAnnotations.init_aannotations(
+                                               null,
+                                               null,
+                                               listnode12,
+                                               null
+                                       )
+                                       var pexterncodeblocknode14 = nodearraylist8
+                                       assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+                                       var listnode15 = nodearraylist9
+                                       assert listnode15 isa Array[Object]
+                                       listnode16 = concat(listnode16, listnode15)
+                                       var tkwendnode18 = nodearraylist11
+                                       assert tkwendnode18 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
+                                               pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
                                                pclasskindnode5,
                                                tclassidnode6,
                                                listnode7,
                                                tkwredefnode3,
                                                pvisibilitynode4,
                                                pclasskindnode5,
                                                tclassidnode6,
                                                listnode7,
-                                               pexterncodeblocknode8,
-                                               listnode10,
-                                               listnode12,
-                                               tkwendnode13
+                                               pannotationsnode8,
+                                               pexterncodeblocknode14,
+                                               listnode16,
+                                               listnode17,
+                                               tkwendnode18
                                        )
                                        node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction101
+private class ReduceAction103
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -4941,8 +5556,8 @@ private class ReduceAction101
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode8 = new Array[Object]
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode8 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode13 = new Array[Object]
+                                       var listnode17 = new Array[Object]
+                                       var listnode18 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode4 = nodearraylist2
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode4 = nodearraylist2
@@ -4954,16 +5569,23 @@ private class ReduceAction101
                                        var listnode7 = nodearraylist6
                                        assert listnode7 isa Array[Object]
                                        listnode8 = concat(listnode8, listnode7)
                                        var listnode7 = nodearraylist6
                                        assert listnode7 isa Array[Object]
                                        listnode8 = concat(listnode8, listnode7)
-                                       var pexterncodeblocknode9 = nodearraylist7
-                                       assert pexterncodeblocknode9 isa nullable AExternCodeBlock
-                                       var listnode10 = nodearraylist8
-                                       assert listnode10 isa Array[Object]
-                                       listnode11 = concat(listnode11, listnode10)
-                                       var listnode12 = nodearraylist9
+                                       var listnode13 = new Array[Object]
+                                       var listnode12 = nodearraylist7
                                        assert listnode12 isa Array[Object]
                                        listnode13 = concat(listnode13, listnode12)
                                        assert listnode12 isa Array[Object]
                                        listnode13 = concat(listnode13, listnode12)
-                                       var tkwendnode14 = nodearraylist11
-                                       assert tkwendnode14 isa nullable TKwend
+                                       var pannotationsnode9: nullable AAnnotations = new AAnnotations.init_aannotations(
+                                               null,
+                                               null,
+                                               listnode13,
+                                               null
+                                       )
+                                       var pexterncodeblocknode15 = nodearraylist8
+                                       assert pexterncodeblocknode15 isa nullable AExternCodeBlock
+                                       var listnode16 = nodearraylist9
+                                       assert listnode16 isa Array[Object]
+                                       listnode17 = concat(listnode17, listnode16)
+                                       var tkwendnode19 = nodearraylist11
+                                       assert tkwendnode19 isa nullable TKwend
                                        var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                null,
                                        var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                null,
@@ -4971,16 +5593,17 @@ private class ReduceAction101
                                                pclasskindnode5,
                                                tclassidnode6,
                                                listnode8,
                                                pclasskindnode5,
                                                tclassidnode6,
                                                listnode8,
-                                               pexterncodeblocknode9,
-                                               listnode11,
-                                               listnode13,
-                                               tkwendnode14
+                                               pannotationsnode9,
+                                               pexterncodeblocknode15,
+                                               listnode17,
+                                               listnode18,
+                                               tkwendnode19
                                        )
                                        node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction102
+private class ReduceAction104
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -4998,8 +5621,8 @@ private class ReduceAction102
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode8 = new Array[Object]
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode8 = new Array[Object]
-                                       var listnode11 = new Array[Object]
-                                       var listnode13 = new Array[Object]
+                                       var listnode17 = new Array[Object]
+                                       var listnode18 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
@@ -5013,16 +5636,23 @@ private class ReduceAction102
                                        var listnode7 = nodearraylist7
                                        assert listnode7 isa Array[Object]
                                        listnode8 = concat(listnode8, listnode7)
                                        var listnode7 = nodearraylist7
                                        assert listnode7 isa Array[Object]
                                        listnode8 = concat(listnode8, listnode7)
-                                       var pexterncodeblocknode9 = nodearraylist8
-                                       assert pexterncodeblocknode9 isa nullable AExternCodeBlock
-                                       var listnode10 = nodearraylist9
-                                       assert listnode10 isa Array[Object]
-                                       listnode11 = concat(listnode11, listnode10)
-                                       var listnode12 = nodearraylist10
+                                       var listnode13 = new Array[Object]
+                                       var listnode12 = nodearraylist8
                                        assert listnode12 isa Array[Object]
                                        listnode13 = concat(listnode13, listnode12)
                                        assert listnode12 isa Array[Object]
                                        listnode13 = concat(listnode13, listnode12)
-                                       var tkwendnode14 = nodearraylist12
-                                       assert tkwendnode14 isa nullable TKwend
+                                       var pannotationsnode9: nullable AAnnotations = new AAnnotations.init_aannotations(
+                                               null,
+                                               null,
+                                               listnode13,
+                                               null
+                                       )
+                                       var pexterncodeblocknode15 = nodearraylist9
+                                       assert pexterncodeblocknode15 isa nullable AExternCodeBlock
+                                       var listnode16 = nodearraylist10
+                                       assert listnode16 isa Array[Object]
+                                       listnode17 = concat(listnode17, listnode16)
+                                       var tkwendnode19 = nodearraylist12
+                                       assert tkwendnode19 isa nullable TKwend
                                        var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                        var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
@@ -5030,61 +5660,59 @@ private class ReduceAction102
                                                pclasskindnode5,
                                                tclassidnode6,
                                                listnode8,
                                                pclasskindnode5,
                                                tclassidnode6,
                                                listnode8,
-                                               pexterncodeblocknode9,
-                                               listnode11,
-                                               listnode13,
-                                               tkwendnode14
+                                               pannotationsnode9,
+                                               pexterncodeblocknode15,
+                                               listnode17,
+                                               listnode18,
+                                               tkwendnode19
                                        )
                                        node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction103
-       super ReduceAction
-       redef fun action(p: Parser)
-       do
-                                       var node_list: nullable Object = null
-                                       var nodearraylist1 = p.pop
-                                       var tkwclassnode2 = nodearraylist1
-                                       assert tkwclassnode2 isa nullable TKwclass
-                                       var pclasskindnode1: nullable AConcreteClasskind = new AConcreteClasskind.init_aconcreteclasskind(
-                                               tkwclassnode2
-                                       )
-                                       node_list = pclasskindnode1
-                                       p.push(p.go_to(_goto), node_list)
-       end
-end
-private class ReduceAction104
-       super ReduceAction
-       redef fun action(p: Parser)
-       do
-                                       var node_list: nullable Object = null
-                                       var nodearraylist2 = p.pop
-                                       var nodearraylist1 = p.pop
-                                       var tkwabstractnode2 = nodearraylist1
-                                       assert tkwabstractnode2 isa nullable TKwabstract
-                                       var tkwclassnode3 = nodearraylist2
-                                       assert tkwclassnode3 isa nullable TKwclass
-                                       var pclasskindnode1: nullable AAbstractClasskind = new AAbstractClasskind.init_aabstractclasskind(
-                                               tkwabstractnode2,
-                                               tkwclassnode3
-                                       )
-                                       node_list = pclasskindnode1
-                                       p.push(p.go_to(_goto), node_list)
-       end
-end
 private class ReduceAction105
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
 private class ReduceAction105
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwinterfacenode2 = nodearraylist1
-                                       assert tkwinterfacenode2 isa nullable TKwinterface
-                                       var pclasskindnode1: nullable AInterfaceClasskind = new AInterfaceClasskind.init_ainterfaceclasskind(
-                                               tkwinterfacenode2
+                                       var listnode7 = new Array[Object]
+                                       var listnode10 = new Array[Object]
+                                       var listnode12 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4 = nodearraylist2
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var pclasskindnode5 = nodearraylist3
+                                       assert pclasskindnode5 isa nullable AClasskind
+                                       var tclassidnode6 = nodearraylist5
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode11 = nodearraylist6
+                                       assert listnode11 isa Array[Object]
+                                       listnode12 = concat(listnode12, listnode11)
+                                       var tkwendnode13 = nodearraylist8
+                                       assert tkwendnode13 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               pclasskindnode5,
+                                               tclassidnode6,
+                                               listnode7,
+                                               null,
+                                               null,
+                                               listnode10,
+                                               listnode12,
+                                               tkwendnode13
                                        )
                                        )
-                                       node_list = pclasskindnode1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
@@ -5093,179 +5721,160 @@ private class ReduceAction106
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist1 = p.pop
-                                       var tkwenumnode2 = nodearraylist1
-                                       assert tkwenumnode2 isa nullable TKwenum
-                                       var pclasskindnode1: nullable AEnumClasskind = new AEnumClasskind.init_aenumclasskind(
-                                               tkwenumnode2
-                                       )
-                                       node_list = pclasskindnode1
-                                       p.push(p.go_to(_goto), node_list)
-       end
-end
-private class ReduceAction107
-       super ReduceAction
-       redef fun action(p: Parser)
-       do
-                                       var node_list: nullable Object = null
-                                       var nodearraylist1 = p.pop
-                                       var tkwexternnode2 = nodearraylist1
-                                       assert tkwexternnode2 isa nullable TKwextern
-                                       var pclasskindnode1: nullable AExternClasskind = new AExternClasskind.init_aexternclasskind(
-                                               tkwexternnode2,
-                                               null
-                                       )
-                                       node_list = pclasskindnode1
-                                       p.push(p.go_to(_goto), node_list)
-       end
-end
-private class ReduceAction108
-       super ReduceAction
-       redef fun action(p: Parser)
-       do
-                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwexternnode2 = nodearraylist1
-                                       assert tkwexternnode2 isa nullable TKwextern
-                                       var tkwclassnode3 = nodearraylist2
-                                       assert tkwclassnode3 isa nullable TKwclass
-                                       var pclasskindnode1: nullable AExternClasskind = new AExternClasskind.init_aexternclasskind(
-                                               tkwexternnode2,
-                                               tkwclassnode3
+                                       var listnode7 = new Array[Object]
+                                       var listnode10 = new Array[Object]
+                                       var listnode12 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var pclasskindnode5 = nodearraylist4
+                                       assert pclasskindnode5 isa nullable AClasskind
+                                       var tclassidnode6 = nodearraylist6
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode11 = nodearraylist7
+                                       assert listnode11 isa Array[Object]
+                                       listnode12 = concat(listnode12, listnode11)
+                                       var tkwendnode13 = nodearraylist9
+                                       assert tkwendnode13 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               pclasskindnode5,
+                                               tclassidnode6,
+                                               listnode7,
+                                               null,
+                                               null,
+                                               listnode10,
+                                               listnode12,
+                                               tkwendnode13
                                        )
                                        )
-                                       node_list = pclasskindnode1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction109
+private class ReduceAction107
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode2 = new Array[Object]
-                                       var pformaldefnode1 = nodearraylist3
-                                       if pformaldefnode1 != null then
-                                               listnode2.add(pformaldefnode1)
-                                       end
-                                       node_list = listnode2
+                                       var listnode8 = new Array[Object]
+                                       var listnode11 = new Array[Object]
+                                       var listnode13 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4 = nodearraylist2
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var pclasskindnode5 = nodearraylist3
+                                       assert pclasskindnode5 isa nullable AClasskind
+                                       var tclassidnode6 = nodearraylist5
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode7 = nodearraylist6
+                                       assert listnode7 isa Array[Object]
+                                       listnode8 = concat(listnode8, listnode7)
+                                       var listnode12 = nodearraylist7
+                                       assert listnode12 isa Array[Object]
+                                       listnode13 = concat(listnode13, listnode12)
+                                       var tkwendnode14 = nodearraylist9
+                                       assert tkwendnode14 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               pclasskindnode5,
+                                               tclassidnode6,
+                                               listnode8,
+                                               null,
+                                               null,
+                                               listnode11,
+                                               listnode13,
+                                               tkwendnode14
+                                       )
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction110
+private class ReduceAction108
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode3 = new Array[Object]
-                                       var pformaldefnode1 = nodearraylist3
-                                       var listnode2 = nodearraylist4
-                                       assert listnode2 isa Array[Object]
-                                       if pformaldefnode1 != null then
-                                               listnode3.add(pformaldefnode1)
-                                       end
-                                       listnode3 = concat(listnode3, listnode2)
-                                       node_list = listnode3
-                                       p.push(p.go_to(_goto), node_list)
-       end
-end
-private class ReduceAction111
-       super ReduceAction
-       redef fun action(p: Parser)
-       do
-                                       var node_list: nullable Object = null
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
-                                       var nodearraylist1 = p.pop
-                                       var pformaldefnode1 = nodearraylist3
-                                       node_list = pformaldefnode1
-                                       p.push(p.go_to(_goto), node_list)
-       end
-end
-private class ReduceAction112
-       super ReduceAction
-       redef fun action(p: Parser)
-       do
-                                       var node_list: nullable Object = null
-                                       var nodearraylist1 = p.pop
-                                       var tclassidnode2 = nodearraylist1
-                                       assert tclassidnode2 isa nullable TClassid
-                                       var pformaldefnode1: nullable AFormaldef = new AFormaldef.init_aformaldef(
-                                               tclassidnode2,
-                                               null
-                                       )
-                                       node_list = pformaldefnode1
-                                       p.push(p.go_to(_goto), node_list)
-       end
-end
-private class ReduceAction113
-       super ReduceAction
-       redef fun action(p: Parser)
-       do
-                                       var node_list: nullable Object = null
-                                       var nodearraylist2 = p.pop
-                                       var nodearraylist1 = p.pop
-                                       var tclassidnode2 = nodearraylist1
-                                       assert tclassidnode2 isa nullable TClassid
-                                       var ptypenode3 = nodearraylist2
-                                       assert ptypenode3 isa nullable AType
-                                       var pformaldefnode1: nullable AFormaldef = new AFormaldef.init_aformaldef(
-                                               tclassidnode2,
-                                               ptypenode3
-                                       )
-                                       node_list = pformaldefnode1
-                                       p.push(p.go_to(_goto), node_list)
-       end
-end
-private class ReduceAction114
-       super ReduceAction
-       redef fun action(p: Parser)
-       do
-                                       var node_list: nullable Object = null
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
-                                       var nodearraylist1 = p.pop
-                                       var tkwsupernode2 = nodearraylist2
-                                       assert tkwsupernode2 isa nullable TKwsuper
-                                       var ptypenode3 = nodearraylist4
-                                       assert ptypenode3 isa nullable AType
-                                       var psuperclassnode1: nullable ASuperclass = new ASuperclass.init_asuperclass(
-                                               tkwsupernode2,
-                                               ptypenode3
+                                       var listnode8 = new Array[Object]
+                                       var listnode11 = new Array[Object]
+                                       var listnode13 = new Array[Object]
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var pclasskindnode5 = nodearraylist4
+                                       assert pclasskindnode5 isa nullable AClasskind
+                                       var tclassidnode6 = nodearraylist6
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode7 = nodearraylist7
+                                       assert listnode7 isa Array[Object]
+                                       listnode8 = concat(listnode8, listnode7)
+                                       var listnode12 = nodearraylist8
+                                       assert listnode12 isa Array[Object]
+                                       listnode13 = concat(listnode13, listnode12)
+                                       var tkwendnode14 = nodearraylist10
+                                       assert tkwendnode14 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               pclasskindnode5,
+                                               tclassidnode6,
+                                               listnode8,
+                                               null,
+                                               null,
+                                               listnode11,
+                                               listnode13,
+                                               tkwendnode14
                                        )
                                        )
-                                       node_list = psuperclassnode1
-                                       p.push(p.go_to(_goto), node_list)
-       end
-end
-private class ReduceAction115
-       super ReduceAction
-       redef fun action(p: Parser)
-       do
-                                       var node_list: nullable Object = null
-                                       var nodearraylist2 = p.pop
-                                       var nodearraylist1 = p.pop
-                                       var ppropdefnode1 = nodearraylist1
-                                       node_list = ppropdefnode1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction116
+private class ReduceAction109
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -5273,36 +5882,56 @@ private class ReduceAction116
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
+                                       var listnode7 = new Array[Object]
+                                       var listnode15 = new Array[Object]
+                                       var listnode17 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode4 = nodearraylist2
                                        assert pvisibilitynode4 isa nullable AVisibility
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode4 = nodearraylist2
                                        assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa nullable TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var pexprnode8 = nodearraylist7
-                                       assert pexprnode8 isa nullable AExpr
-                                       var ppropdefnode1: nullable AConcreteMethPropdef = new AConcreteMethPropdef.init_aconcretemethpropdef(
+                                       var pclasskindnode5 = nodearraylist3
+                                       assert pclasskindnode5 isa nullable AClasskind
+                                       var tclassidnode6 = nodearraylist5
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode12 = new Array[Object]
+                                       var listnode11 = nodearraylist6
+                                       assert listnode11 isa Array[Object]
+                                       listnode12 = concat(listnode12, listnode11)
+                                       var pannotationsnode8: nullable AAnnotations = new AAnnotations.init_aannotations(
+                                               null,
+                                               null,
+                                               listnode12,
+                                               null
+                                       )
+                                       var listnode16 = nodearraylist7
+                                       assert listnode16 isa Array[Object]
+                                       listnode17 = concat(listnode17, listnode16)
+                                       var tkwendnode18 = nodearraylist9
+                                       assert tkwendnode18 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode8
+                                               pclasskindnode5,
+                                               tclassidnode6,
+                                               listnode7,
+                                               pannotationsnode8,
+                                               null,
+                                               listnode15,
+                                               listnode17,
+                                               tkwendnode18
                                        )
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction117
+private class ReduceAction110
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -5311,38 +5940,58 @@ private class ReduceAction117
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
+                                       var listnode7 = new Array[Object]
+                                       var listnode15 = new Array[Object]
+                                       var listnode17 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
                                        assert pvisibilitynode4 isa nullable AVisibility
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
                                        assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa nullable TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var pexprnode8 = nodearraylist8
-                                       assert pexprnode8 isa nullable AExpr
-                                       var ppropdefnode1: nullable AConcreteMethPropdef = new AConcreteMethPropdef.init_aconcretemethpropdef(
+                                       var pclasskindnode5 = nodearraylist4
+                                       assert pclasskindnode5 isa nullable AClasskind
+                                       var tclassidnode6 = nodearraylist6
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode12 = new Array[Object]
+                                       var listnode11 = nodearraylist7
+                                       assert listnode11 isa Array[Object]
+                                       listnode12 = concat(listnode12, listnode11)
+                                       var pannotationsnode8: nullable AAnnotations = new AAnnotations.init_aannotations(
+                                               null,
+                                               null,
+                                               listnode12,
+                                               null
+                                       )
+                                       var listnode16 = nodearraylist8
+                                       assert listnode16 isa Array[Object]
+                                       listnode17 = concat(listnode17, listnode16)
+                                       var tkwendnode18 = nodearraylist10
+                                       assert tkwendnode18 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode8
+                                               pclasskindnode5,
+                                               tclassidnode6,
+                                               listnode7,
+                                               pannotationsnode8,
+                                               null,
+                                               listnode15,
+                                               listnode17,
+                                               tkwendnode18
                                        )
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction118
+private class ReduceAction111
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -5351,36 +6000,59 @@ private class ReduceAction118
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
+                                       var listnode8 = new Array[Object]
+                                       var listnode16 = new Array[Object]
+                                       var listnode18 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode4 = nodearraylist2
                                        assert pvisibilitynode4 isa nullable AVisibility
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode4 = nodearraylist2
                                        assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa nullable TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var pexprnode8 = nodearraylist7
-                                       assert pexprnode8 isa nullable AExpr
-                                       var ppropdefnode1: nullable AConcreteMethPropdef = new AConcreteMethPropdef.init_aconcretemethpropdef(
+                                       var pclasskindnode5 = nodearraylist3
+                                       assert pclasskindnode5 isa nullable AClasskind
+                                       var tclassidnode6 = nodearraylist5
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode7 = nodearraylist6
+                                       assert listnode7 isa Array[Object]
+                                       listnode8 = concat(listnode8, listnode7)
+                                       var listnode13 = new Array[Object]
+                                       var listnode12 = nodearraylist7
+                                       assert listnode12 isa Array[Object]
+                                       listnode13 = concat(listnode13, listnode12)
+                                       var pannotationsnode9: nullable AAnnotations = new AAnnotations.init_aannotations(
+                                               null,
+                                               null,
+                                               listnode13,
+                                               null
+                                       )
+                                       var listnode17 = nodearraylist8
+                                       assert listnode17 isa Array[Object]
+                                       listnode18 = concat(listnode18, listnode17)
+                                       var tkwendnode19 = nodearraylist10
+                                       assert tkwendnode19 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode8
+                                               pclasskindnode5,
+                                               tclassidnode6,
+                                               listnode8,
+                                               pannotationsnode9,
+                                               null,
+                                               listnode16,
+                                               listnode18,
+                                               tkwendnode19
                                        )
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction119
+private class ReduceAction112
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -5390,38 +6062,60 @@ private class ReduceAction119
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
+                                       var listnode8 = new Array[Object]
+                                       var listnode16 = new Array[Object]
+                                       var listnode18 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
                                        assert pvisibilitynode4 isa nullable AVisibility
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
                                        assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa nullable TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var pexprnode8 = nodearraylist8
-                                       assert pexprnode8 isa nullable AExpr
-                                       var ppropdefnode1: nullable AConcreteMethPropdef = new AConcreteMethPropdef.init_aconcretemethpropdef(
+                                       var pclasskindnode5 = nodearraylist4
+                                       assert pclasskindnode5 isa nullable AClasskind
+                                       var tclassidnode6 = nodearraylist6
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode7 = nodearraylist7
+                                       assert listnode7 isa Array[Object]
+                                       listnode8 = concat(listnode8, listnode7)
+                                       var listnode13 = new Array[Object]
+                                       var listnode12 = nodearraylist8
+                                       assert listnode12 isa Array[Object]
+                                       listnode13 = concat(listnode13, listnode12)
+                                       var pannotationsnode9: nullable AAnnotations = new AAnnotations.init_aannotations(
+                                               null,
+                                               null,
+                                               listnode13,
+                                               null
+                                       )
+                                       var listnode17 = nodearraylist9
+                                       assert listnode17 isa Array[Object]
+                                       listnode18 = concat(listnode18, listnode17)
+                                       var tkwendnode19 = nodearraylist11
+                                       assert tkwendnode19 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode8
-                                       )
-                                       node_list = ppropdefnode1
+                                               pclasskindnode5,
+                                               tclassidnode6,
+                                               listnode8,
+                                               pannotationsnode9,
+                                               null,
+                                               listnode16,
+                                               listnode18,
+                                               tkwendnode19
+                                       )
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction120
+private class ReduceAction113
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -5430,36 +6124,47 @@ private class ReduceAction120
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
+                                       var listnode7 = new Array[Object]
+                                       var listnode10 = new Array[Object]
+                                       var listnode12 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode4 = nodearraylist2
                                        assert pvisibilitynode4 isa nullable AVisibility
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode4 = nodearraylist2
                                        assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa nullable TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var pexprnode8 = nodearraylist8
-                                       assert pexprnode8 isa nullable AExpr
-                                       var ppropdefnode1: nullable AConcreteMethPropdef = new AConcreteMethPropdef.init_aconcretemethpropdef(
+                                       var pclasskindnode5 = nodearraylist3
+                                       assert pclasskindnode5 isa nullable AClasskind
+                                       var tclassidnode6 = nodearraylist5
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var pexterncodeblocknode9 = nodearraylist6
+                                       assert pexterncodeblocknode9 isa nullable AExternCodeBlock
+                                       var listnode11 = nodearraylist7
+                                       assert listnode11 isa Array[Object]
+                                       listnode12 = concat(listnode12, listnode11)
+                                       var tkwendnode13 = nodearraylist9
+                                       assert tkwendnode13 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode8
+                                               pclasskindnode5,
+                                               tclassidnode6,
+                                               listnode7,
+                                               null,
+                                               pexterncodeblocknode9,
+                                               listnode10,
+                                               listnode12,
+                                               tkwendnode13
                                        )
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction121
+private class ReduceAction114
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -5469,38 +6174,51 @@ private class ReduceAction121
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
+                                       var listnode7 = new Array[Object]
+                                       var listnode10 = new Array[Object]
+                                       var listnode12 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
                                        assert pvisibilitynode4 isa nullable AVisibility
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
                                        assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa nullable TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var pexprnode8 = nodearraylist9
-                                       assert pexprnode8 isa nullable AExpr
-                                       var ppropdefnode1: nullable AConcreteMethPropdef = new AConcreteMethPropdef.init_aconcretemethpropdef(
+                                       var pclasskindnode5 = nodearraylist4
+                                       assert pclasskindnode5 isa nullable AClasskind
+                                       var tclassidnode6 = nodearraylist6
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var pexterncodeblocknode9 = nodearraylist7
+                                       assert pexterncodeblocknode9 isa nullable AExternCodeBlock
+                                       var listnode11 = nodearraylist8
+                                       assert listnode11 isa Array[Object]
+                                       listnode12 = concat(listnode12, listnode11)
+                                       var tkwendnode13 = nodearraylist10
+                                       assert tkwendnode13 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode8
+                                               pclasskindnode5,
+                                               tclassidnode6,
+                                               listnode7,
+                                               null,
+                                               pexterncodeblocknode9,
+                                               listnode10,
+                                               listnode12,
+                                               tkwendnode13
                                        )
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction122
+private class ReduceAction115
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -5508,33 +6226,52 @@ private class ReduceAction122
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
+                                       var listnode8 = new Array[Object]
+                                       var listnode11 = new Array[Object]
+                                       var listnode13 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode4 = nodearraylist2
                                        assert pvisibilitynode4 isa nullable AVisibility
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode4 = nodearraylist2
                                        assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa nullable TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var ppropdefnode1: nullable ADeferredMethPropdef = new ADeferredMethPropdef.init_adeferredmethpropdef(
+                                       var pclasskindnode5 = nodearraylist3
+                                       assert pclasskindnode5 isa nullable AClasskind
+                                       var tclassidnode6 = nodearraylist5
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode7 = nodearraylist6
+                                       assert listnode7 isa Array[Object]
+                                       listnode8 = concat(listnode8, listnode7)
+                                       var pexterncodeblocknode10 = nodearraylist7
+                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+                                       var listnode12 = nodearraylist8
+                                       assert listnode12 isa Array[Object]
+                                       listnode13 = concat(listnode13, listnode12)
+                                       var tkwendnode14 = nodearraylist10
+                                       assert tkwendnode14 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7
+                                               pclasskindnode5,
+                                               tclassidnode6,
+                                               listnode8,
+                                               null,
+                                               pexterncodeblocknode10,
+                                               listnode11,
+                                               listnode13,
+                                               tkwendnode14
                                        )
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction123
+private class ReduceAction116
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -5543,35 +6280,54 @@ private class ReduceAction123
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
+                                       var listnode8 = new Array[Object]
+                                       var listnode11 = new Array[Object]
+                                       var listnode13 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
                                        assert pvisibilitynode4 isa nullable AVisibility
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
                                        assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa nullable TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var ppropdefnode1: nullable ADeferredMethPropdef = new ADeferredMethPropdef.init_adeferredmethpropdef(
+                                       var pclasskindnode5 = nodearraylist4
+                                       assert pclasskindnode5 isa nullable AClasskind
+                                       var tclassidnode6 = nodearraylist6
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode7 = nodearraylist7
+                                       assert listnode7 isa Array[Object]
+                                       listnode8 = concat(listnode8, listnode7)
+                                       var pexterncodeblocknode10 = nodearraylist8
+                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+                                       var listnode12 = nodearraylist9
+                                       assert listnode12 isa Array[Object]
+                                       listnode13 = concat(listnode13, listnode12)
+                                       var tkwendnode14 = nodearraylist11
+                                       assert tkwendnode14 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7
+                                               pclasskindnode5,
+                                               tclassidnode6,
+                                               listnode8,
+                                               null,
+                                               pexterncodeblocknode10,
+                                               listnode11,
+                                               listnode13,
+                                               tkwendnode14
                                        )
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction124
+private class ReduceAction117
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -5579,33 +6335,59 @@ private class ReduceAction124
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
+                                       var listnode7 = new Array[Object]
+                                       var listnode15 = new Array[Object]
+                                       var listnode17 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode4 = nodearraylist2
                                        assert pvisibilitynode4 isa nullable AVisibility
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode4 = nodearraylist2
                                        assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa nullable TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var ppropdefnode1: nullable AInternMethPropdef = new AInternMethPropdef.init_ainternmethpropdef(
+                                       var pclasskindnode5 = nodearraylist3
+                                       assert pclasskindnode5 isa nullable AClasskind
+                                       var tclassidnode6 = nodearraylist5
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode12 = new Array[Object]
+                                       var listnode11 = nodearraylist6
+                                       assert listnode11 isa Array[Object]
+                                       listnode12 = concat(listnode12, listnode11)
+                                       var pannotationsnode8: nullable AAnnotations = new AAnnotations.init_aannotations(
+                                               null,
+                                               null,
+                                               listnode12,
+                                               null
+                                       )
+                                       var pexterncodeblocknode14 = nodearraylist7
+                                       assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+                                       var listnode16 = nodearraylist8
+                                       assert listnode16 isa Array[Object]
+                                       listnode17 = concat(listnode17, listnode16)
+                                       var tkwendnode18 = nodearraylist10
+                                       assert tkwendnode18 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7
+                                               pclasskindnode5,
+                                               tclassidnode6,
+                                               listnode7,
+                                               pannotationsnode8,
+                                               pexterncodeblocknode14,
+                                               listnode15,
+                                               listnode17,
+                                               tkwendnode18
                                        )
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction125
+private class ReduceAction118
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -5614,35 +6396,62 @@ private class ReduceAction125
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
+                                       var listnode7 = new Array[Object]
+                                       var listnode15 = new Array[Object]
+                                       var listnode17 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
                                        assert pvisibilitynode4 isa nullable AVisibility
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
                                        assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa nullable TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var ppropdefnode1: nullable AInternMethPropdef = new AInternMethPropdef.init_ainternmethpropdef(
+                                       var pclasskindnode5 = nodearraylist4
+                                       assert pclasskindnode5 isa nullable AClasskind
+                                       var tclassidnode6 = nodearraylist6
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode12 = new Array[Object]
+                                       var listnode11 = nodearraylist7
+                                       assert listnode11 isa Array[Object]
+                                       listnode12 = concat(listnode12, listnode11)
+                                       var pannotationsnode8: nullable AAnnotations = new AAnnotations.init_aannotations(
+                                               null,
+                                               null,
+                                               listnode12,
+                                               null
+                                       )
+                                       var pexterncodeblocknode14 = nodearraylist8
+                                       assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+                                       var listnode16 = nodearraylist9
+                                       assert listnode16 isa Array[Object]
+                                       listnode17 = concat(listnode17, listnode16)
+                                       var tkwendnode18 = nodearraylist11
+                                       assert tkwendnode18 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7
+                                               pclasskindnode5,
+                                               tclassidnode6,
+                                               listnode7,
+                                               pannotationsnode8,
+                                               pexterncodeblocknode14,
+                                               listnode15,
+                                               listnode17,
+                                               tkwendnode18
                                        )
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction126
+private class ReduceAction119
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -5650,36 +6459,63 @@ private class ReduceAction126
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
+                                       var listnode8 = new Array[Object]
+                                       var listnode16 = new Array[Object]
+                                       var listnode18 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode4 = nodearraylist2
                                        assert pvisibilitynode4 isa nullable AVisibility
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode4 = nodearraylist2
                                        assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa nullable TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               null,
+                                       var pclasskindnode5 = nodearraylist3
+                                       assert pclasskindnode5 isa nullable AClasskind
+                                       var tclassidnode6 = nodearraylist5
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode7 = nodearraylist6
+                                       assert listnode7 isa Array[Object]
+                                       listnode8 = concat(listnode8, listnode7)
+                                       var listnode13 = new Array[Object]
+                                       var listnode12 = nodearraylist7
+                                       assert listnode12 isa Array[Object]
+                                       listnode13 = concat(listnode13, listnode12)
+                                       var pannotationsnode9: nullable AAnnotations = new AAnnotations.init_aannotations(
                                                null,
                                                null,
+                                               null,
+                                               listnode13,
                                                null
                                        )
                                                null
                                        )
-                                       node_list = ppropdefnode1
+                                       var pexterncodeblocknode15 = nodearraylist8
+                                       assert pexterncodeblocknode15 isa nullable AExternCodeBlock
+                                       var listnode17 = nodearraylist9
+                                       assert listnode17 isa Array[Object]
+                                       listnode18 = concat(listnode18, listnode17)
+                                       var tkwendnode19 = nodearraylist11
+                                       assert tkwendnode19 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               pclasskindnode5,
+                                               tclassidnode6,
+                                               listnode8,
+                                               pannotationsnode9,
+                                               pexterncodeblocknode15,
+                                               listnode16,
+                                               listnode18,
+                                               tkwendnode19
+                                       )
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction127
+private class ReduceAction120
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist12 = p.pop
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -5688,38 +6524,62 @@ private class ReduceAction127
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
+                                       var listnode8 = new Array[Object]
+                                       var listnode16 = new Array[Object]
+                                       var listnode18 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
                                        assert pvisibilitynode4 isa nullable AVisibility
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
                                        assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa nullable TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
+                                       var pclasskindnode5 = nodearraylist4
+                                       assert pclasskindnode5 isa nullable AClasskind
+                                       var tclassidnode6 = nodearraylist6
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode7 = nodearraylist7
+                                       assert listnode7 isa Array[Object]
+                                       listnode8 = concat(listnode8, listnode7)
+                                       var listnode13 = new Array[Object]
+                                       var listnode12 = nodearraylist8
+                                       assert listnode12 isa Array[Object]
+                                       listnode13 = concat(listnode13, listnode12)
+                                       var pannotationsnode9: nullable AAnnotations = new AAnnotations.init_aannotations(
                                                null,
                                                null,
                                                null,
                                                null,
+                                               listnode13,
                                                null
                                        )
                                                null
                                        )
-                                       node_list = ppropdefnode1
+                                       var pexterncodeblocknode15 = nodearraylist9
+                                       assert pexterncodeblocknode15 isa nullable AExternCodeBlock
+                                       var listnode17 = nodearraylist10
+                                       assert listnode17 isa Array[Object]
+                                       listnode18 = concat(listnode18, listnode17)
+                                       var tkwendnode19 = nodearraylist12
+                                       assert tkwendnode19 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               pclasskindnode5,
+                                               tclassidnode6,
+                                               listnode8,
+                                               pannotationsnode9,
+                                               pexterncodeblocknode15,
+                                               listnode16,
+                                               listnode18,
+                                               tkwendnode19
+                                       )
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction128
+private class ReduceAction121
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -5728,38 +6588,48 @@ private class ReduceAction128
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
+                                       var listnode7 = new Array[Object]
+                                       var listnode11 = new Array[Object]
+                                       var listnode13 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode4 = nodearraylist2
                                        assert pvisibilitynode4 isa nullable AVisibility
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode4 = nodearraylist2
                                        assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa nullable TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var tstringnode8 = nodearraylist8
-                                       assert tstringnode8 isa nullable TString
-                                       var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
+                                       var pclasskindnode5 = nodearraylist3
+                                       assert pclasskindnode5 isa nullable AClasskind
+                                       var tclassidnode6 = nodearraylist5
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode10 = nodearraylist6
+                                       assert listnode10 isa Array[Object]
+                                       listnode11 = concat(listnode11, listnode10)
+                                       var listnode12 = nodearraylist7
+                                       assert listnode12 isa Array[Object]
+                                       listnode13 = concat(listnode13, listnode12)
+                                       var tkwendnode14 = nodearraylist9
+                                       assert tkwendnode14 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               tstringnode8,
+                                               pclasskindnode5,
+                                               tclassidnode6,
+                                               listnode7,
                                                null,
                                                null,
-                                               null
+                                               null,
+                                               listnode11,
+                                               listnode13,
+                                               tkwendnode14
                                        )
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction129
+private class ReduceAction122
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -5769,40 +6639,51 @@ private class ReduceAction129
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
+                                       var listnode7 = new Array[Object]
+                                       var listnode11 = new Array[Object]
+                                       var listnode13 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
                                        assert pvisibilitynode4 isa nullable AVisibility
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
                                        assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa nullable TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var tstringnode8 = nodearraylist9
-                                       assert tstringnode8 isa nullable TString
-                                       var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
+                                       var pclasskindnode5 = nodearraylist4
+                                       assert pclasskindnode5 isa nullable AClasskind
+                                       var tclassidnode6 = nodearraylist6
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode10 = nodearraylist7
+                                       assert listnode10 isa Array[Object]
+                                       listnode11 = concat(listnode11, listnode10)
+                                       var listnode12 = nodearraylist8
+                                       assert listnode12 isa Array[Object]
+                                       listnode13 = concat(listnode13, listnode12)
+                                       var tkwendnode14 = nodearraylist10
+                                       assert tkwendnode14 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               tstringnode8,
+                                               pclasskindnode5,
+                                               tclassidnode6,
+                                               listnode7,
                                                null,
                                                null,
-                                               null
+                                               null,
+                                               listnode11,
+                                               listnode13,
+                                               tkwendnode14
                                        )
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction130
+private class ReduceAction123
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -5811,38 +6692,52 @@ private class ReduceAction130
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
+                                       var listnode8 = new Array[Object]
+                                       var listnode12 = new Array[Object]
+                                       var listnode14 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode4 = nodearraylist2
                                        assert pvisibilitynode4 isa nullable AVisibility
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode4 = nodearraylist2
                                        assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa nullable TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var pexterncallsnode9 = nodearraylist8
-                                       assert pexterncallsnode9 isa nullable AExternCalls
-                                       var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
+                                       var pclasskindnode5 = nodearraylist3
+                                       assert pclasskindnode5 isa nullable AClasskind
+                                       var tclassidnode6 = nodearraylist5
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode7 = nodearraylist6
+                                       assert listnode7 isa Array[Object]
+                                       listnode8 = concat(listnode8, listnode7)
+                                       var listnode11 = nodearraylist7
+                                       assert listnode11 isa Array[Object]
+                                       listnode12 = concat(listnode12, listnode11)
+                                       var listnode13 = nodearraylist8
+                                       assert listnode13 isa Array[Object]
+                                       listnode14 = concat(listnode14, listnode13)
+                                       var tkwendnode15 = nodearraylist10
+                                       assert tkwendnode15 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
+                                               pclasskindnode5,
+                                               tclassidnode6,
+                                               listnode8,
                                                null,
                                                null,
-                                               pexterncallsnode9,
-                                               null
+                                               null,
+                                               listnode12,
+                                               listnode14,
+                                               tkwendnode15
                                        )
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction131
+private class ReduceAction124
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -5852,40 +6747,53 @@ private class ReduceAction131
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
+                                       var listnode8 = new Array[Object]
+                                       var listnode12 = new Array[Object]
+                                       var listnode14 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
                                        assert pvisibilitynode4 isa nullable AVisibility
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
                                        assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa nullable TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var pexterncallsnode9 = nodearraylist9
-                                       assert pexterncallsnode9 isa nullable AExternCalls
-                                       var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
+                                       var pclasskindnode5 = nodearraylist4
+                                       assert pclasskindnode5 isa nullable AClasskind
+                                       var tclassidnode6 = nodearraylist6
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode7 = nodearraylist7
+                                       assert listnode7 isa Array[Object]
+                                       listnode8 = concat(listnode8, listnode7)
+                                       var listnode11 = nodearraylist8
+                                       assert listnode11 isa Array[Object]
+                                       listnode12 = concat(listnode12, listnode11)
+                                       var listnode13 = nodearraylist9
+                                       assert listnode13 isa Array[Object]
+                                       listnode14 = concat(listnode14, listnode13)
+                                       var tkwendnode15 = nodearraylist11
+                                       assert tkwendnode15 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
+                                               pclasskindnode5,
+                                               tclassidnode6,
+                                               listnode8,
                                                null,
                                                null,
-                                               pexterncallsnode9,
-                                               null
+                                               null,
+                                               listnode12,
+                                               listnode14,
+                                               tkwendnode15
                                        )
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction132
+private class ReduceAction125
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -5895,40 +6803,58 @@ private class ReduceAction132
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
+                                       var listnode7 = new Array[Object]
+                                       var listnode16 = new Array[Object]
+                                       var listnode18 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode4 = nodearraylist2
                                        assert pvisibilitynode4 isa nullable AVisibility
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode4 = nodearraylist2
                                        assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa nullable TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var tstringnode8 = nodearraylist8
-                                       assert tstringnode8 isa nullable TString
-                                       var pexterncallsnode9 = nodearraylist9
-                                       assert pexterncallsnode9 isa nullable AExternCalls
-                                       var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
-                                               pdocnode2,
+                                       var pclasskindnode5 = nodearraylist3
+                                       assert pclasskindnode5 isa nullable AClasskind
+                                       var tclassidnode6 = nodearraylist5
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode12 = new Array[Object]
+                                       var listnode11 = nodearraylist6
+                                       assert listnode11 isa Array[Object]
+                                       listnode12 = concat(listnode12, listnode11)
+                                       var pannotationsnode8: nullable AAnnotations = new AAnnotations.init_aannotations(
                                                null,
                                                null,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               tstringnode8,
-                                               pexterncallsnode9,
+                                               null,
+                                               listnode12,
                                                null
                                        )
                                                null
                                        )
-                                       node_list = ppropdefnode1
-                                       p.push(p.go_to(_goto), node_list)
-       end
+                                       var listnode15 = nodearraylist7
+                                       assert listnode15 isa Array[Object]
+                                       listnode16 = concat(listnode16, listnode15)
+                                       var listnode17 = nodearraylist8
+                                       assert listnode17 isa Array[Object]
+                                       listnode18 = concat(listnode18, listnode17)
+                                       var tkwendnode19 = nodearraylist10
+                                       assert tkwendnode19 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               pclasskindnode5,
+                                               tclassidnode6,
+                                               listnode7,
+                                               pannotationsnode8,
+                                               null,
+                                               listnode16,
+                                               listnode18,
+                                               tkwendnode19
+                                       )
+                                       node_list = pclassdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
 end
 end
-private class ReduceAction133
+private class ReduceAction126
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
@@ -5939,42 +6865,62 @@ private class ReduceAction133
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
+                                       var listnode7 = new Array[Object]
+                                       var listnode16 = new Array[Object]
+                                       var listnode18 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
                                        assert pvisibilitynode4 isa nullable AVisibility
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
                                        assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa nullable TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var tstringnode8 = nodearraylist9
-                                       assert tstringnode8 isa nullable TString
-                                       var pexterncallsnode9 = nodearraylist10
-                                       assert pexterncallsnode9 isa nullable AExternCalls
-                                       var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
+                                       var pclasskindnode5 = nodearraylist4
+                                       assert pclasskindnode5 isa nullable AClasskind
+                                       var tclassidnode6 = nodearraylist6
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode12 = new Array[Object]
+                                       var listnode11 = nodearraylist7
+                                       assert listnode11 isa Array[Object]
+                                       listnode12 = concat(listnode12, listnode11)
+                                       var pannotationsnode8: nullable AAnnotations = new AAnnotations.init_aannotations(
+                                               null,
+                                               null,
+                                               listnode12,
+                                               null
+                                       )
+                                       var listnode15 = nodearraylist8
+                                       assert listnode15 isa Array[Object]
+                                       listnode16 = concat(listnode16, listnode15)
+                                       var listnode17 = nodearraylist9
+                                       assert listnode17 isa Array[Object]
+                                       listnode18 = concat(listnode18, listnode17)
+                                       var tkwendnode19 = nodearraylist11
+                                       assert tkwendnode19 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               tstringnode8,
-                                               pexterncallsnode9,
-                                               null
+                                               pclasskindnode5,
+                                               tclassidnode6,
+                                               listnode7,
+                                               pannotationsnode8,
+                                               null,
+                                               listnode16,
+                                               listnode18,
+                                               tkwendnode19
                                        )
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction134
+private class ReduceAction127
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -5983,38 +6929,63 @@ private class ReduceAction134
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
+                                       var listnode8 = new Array[Object]
+                                       var listnode17 = new Array[Object]
+                                       var listnode19 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode4 = nodearraylist2
                                        assert pvisibilitynode4 isa nullable AVisibility
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode4 = nodearraylist2
                                        assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa nullable TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var pexterncodeblocknode10 = nodearraylist8
-                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
-                                       var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
+                                       var pclasskindnode5 = nodearraylist3
+                                       assert pclasskindnode5 isa nullable AClasskind
+                                       var tclassidnode6 = nodearraylist5
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode7 = nodearraylist6
+                                       assert listnode7 isa Array[Object]
+                                       listnode8 = concat(listnode8, listnode7)
+                                       var listnode13 = new Array[Object]
+                                       var listnode12 = nodearraylist7
+                                       assert listnode12 isa Array[Object]
+                                       listnode13 = concat(listnode13, listnode12)
+                                       var pannotationsnode9: nullable AAnnotations = new AAnnotations.init_aannotations(
+                                               null,
+                                               null,
+                                               listnode13,
+                                               null
+                                       )
+                                       var listnode16 = nodearraylist8
+                                       assert listnode16 isa Array[Object]
+                                       listnode17 = concat(listnode17, listnode16)
+                                       var listnode18 = nodearraylist9
+                                       assert listnode18 isa Array[Object]
+                                       listnode19 = concat(listnode19, listnode18)
+                                       var tkwendnode20 = nodearraylist11
+                                       assert tkwendnode20 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               null,
+                                               pclasskindnode5,
+                                               tclassidnode6,
+                                               listnode8,
+                                               pannotationsnode9,
                                                null,
                                                null,
-                                               pexterncodeblocknode10
+                                               listnode17,
+                                               listnode19,
+                                               tkwendnode20
                                        )
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction135
+private class ReduceAction128
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist12 = p.pop
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -6024,40 +6995,63 @@ private class ReduceAction135
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
+                                       var listnode8 = new Array[Object]
+                                       var listnode17 = new Array[Object]
+                                       var listnode19 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
                                        assert pvisibilitynode4 isa nullable AVisibility
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
                                        assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa nullable TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var pexterncodeblocknode10 = nodearraylist9
-                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
-                                       var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
+                                       var pclasskindnode5 = nodearraylist4
+                                       assert pclasskindnode5 isa nullable AClasskind
+                                       var tclassidnode6 = nodearraylist6
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode7 = nodearraylist7
+                                       assert listnode7 isa Array[Object]
+                                       listnode8 = concat(listnode8, listnode7)
+                                       var listnode13 = new Array[Object]
+                                       var listnode12 = nodearraylist8
+                                       assert listnode12 isa Array[Object]
+                                       listnode13 = concat(listnode13, listnode12)
+                                       var pannotationsnode9: nullable AAnnotations = new AAnnotations.init_aannotations(
+                                               null,
+                                               null,
+                                               listnode13,
+                                               null
+                                       )
+                                       var listnode16 = nodearraylist9
+                                       assert listnode16 isa Array[Object]
+                                       listnode17 = concat(listnode17, listnode16)
+                                       var listnode18 = nodearraylist10
+                                       assert listnode18 isa Array[Object]
+                                       listnode19 = concat(listnode19, listnode18)
+                                       var tkwendnode20 = nodearraylist12
+                                       assert tkwendnode20 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               null,
+                                               pclasskindnode5,
+                                               tclassidnode6,
+                                               listnode8,
+                                               pannotationsnode9,
                                                null,
                                                null,
-                                               pexterncodeblocknode10
+                                               listnode17,
+                                               listnode19,
+                                               tkwendnode20
                                        )
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction136
+private class ReduceAction129
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -6067,40 +7061,50 @@ private class ReduceAction136
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
+                                       var listnode7 = new Array[Object]
+                                       var listnode11 = new Array[Object]
+                                       var listnode13 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode4 = nodearraylist2
                                        assert pvisibilitynode4 isa nullable AVisibility
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode4 = nodearraylist2
                                        assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa nullable TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var tstringnode8 = nodearraylist8
-                                       assert tstringnode8 isa nullable TString
-                                       var pexterncodeblocknode10 = nodearraylist9
-                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
-                                       var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
+                                       var pclasskindnode5 = nodearraylist3
+                                       assert pclasskindnode5 isa nullable AClasskind
+                                       var tclassidnode6 = nodearraylist5
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var pexterncodeblocknode9 = nodearraylist6
+                                       assert pexterncodeblocknode9 isa nullable AExternCodeBlock
+                                       var listnode10 = nodearraylist7
+                                       assert listnode10 isa Array[Object]
+                                       listnode11 = concat(listnode11, listnode10)
+                                       var listnode12 = nodearraylist8
+                                       assert listnode12 isa Array[Object]
+                                       listnode13 = concat(listnode13, listnode12)
+                                       var tkwendnode14 = nodearraylist10
+                                       assert tkwendnode14 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               tstringnode8,
+                                               pclasskindnode5,
+                                               tclassidnode6,
+                                               listnode7,
                                                null,
                                                null,
-                                               pexterncodeblocknode10
+                                               pexterncodeblocknode9,
+                                               listnode11,
+                                               listnode13,
+                                               tkwendnode14
                                        )
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction137
+private class ReduceAction130
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
@@ -6111,42 +7115,53 @@ private class ReduceAction137
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
+                                       var listnode7 = new Array[Object]
+                                       var listnode11 = new Array[Object]
+                                       var listnode13 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
                                        assert pvisibilitynode4 isa nullable AVisibility
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
                                        assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa nullable TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var tstringnode8 = nodearraylist9
-                                       assert tstringnode8 isa nullable TString
-                                       var pexterncodeblocknode10 = nodearraylist10
-                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
-                                       var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
+                                       var pclasskindnode5 = nodearraylist4
+                                       assert pclasskindnode5 isa nullable AClasskind
+                                       var tclassidnode6 = nodearraylist6
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var pexterncodeblocknode9 = nodearraylist7
+                                       assert pexterncodeblocknode9 isa nullable AExternCodeBlock
+                                       var listnode10 = nodearraylist8
+                                       assert listnode10 isa Array[Object]
+                                       listnode11 = concat(listnode11, listnode10)
+                                       var listnode12 = nodearraylist9
+                                       assert listnode12 isa Array[Object]
+                                       listnode13 = concat(listnode13, listnode12)
+                                       var tkwendnode14 = nodearraylist11
+                                       assert tkwendnode14 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               tstringnode8,
+                                               pclasskindnode5,
+                                               tclassidnode6,
+                                               listnode7,
                                                null,
                                                null,
-                                               pexterncodeblocknode10
+                                               pexterncodeblocknode9,
+                                               listnode11,
+                                               listnode13,
+                                               tkwendnode14
                                        )
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction138
+private class ReduceAction131
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -6156,40 +7171,54 @@ private class ReduceAction138
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
+                                       var listnode8 = new Array[Object]
+                                       var listnode12 = new Array[Object]
+                                       var listnode14 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode4 = nodearraylist2
                                        assert pvisibilitynode4 isa nullable AVisibility
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode4 = nodearraylist2
                                        assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa nullable TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var pexterncallsnode9 = nodearraylist8
-                                       assert pexterncallsnode9 isa nullable AExternCalls
-                                       var pexterncodeblocknode10 = nodearraylist9
+                                       var pclasskindnode5 = nodearraylist3
+                                       assert pclasskindnode5 isa nullable AClasskind
+                                       var tclassidnode6 = nodearraylist5
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode7 = nodearraylist6
+                                       assert listnode7 isa Array[Object]
+                                       listnode8 = concat(listnode8, listnode7)
+                                       var pexterncodeblocknode10 = nodearraylist7
                                        assert pexterncodeblocknode10 isa nullable AExternCodeBlock
                                        assert pexterncodeblocknode10 isa nullable AExternCodeBlock
-                                       var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
+                                       var listnode11 = nodearraylist8
+                                       assert listnode11 isa Array[Object]
+                                       listnode12 = concat(listnode12, listnode11)
+                                       var listnode13 = nodearraylist9
+                                       assert listnode13 isa Array[Object]
+                                       listnode14 = concat(listnode14, listnode13)
+                                       var tkwendnode15 = nodearraylist11
+                                       assert tkwendnode15 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
+                                               pclasskindnode5,
+                                               tclassidnode6,
+                                               listnode8,
                                                null,
                                                null,
-                                               pexterncallsnode9,
-                                               pexterncodeblocknode10
+                                               pexterncodeblocknode10,
+                                               listnode12,
+                                               listnode14,
+                                               tkwendnode15
                                        )
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction139
+private class ReduceAction132
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist12 = p.pop
+                                       var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
@@ -6200,42 +7229,55 @@ private class ReduceAction139
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
+                                       var listnode8 = new Array[Object]
+                                       var listnode12 = new Array[Object]
+                                       var listnode14 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
                                        assert pvisibilitynode4 isa nullable AVisibility
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
                                        assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa nullable TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var pexterncallsnode9 = nodearraylist9
-                                       assert pexterncallsnode9 isa nullable AExternCalls
-                                       var pexterncodeblocknode10 = nodearraylist10
+                                       var pclasskindnode5 = nodearraylist4
+                                       assert pclasskindnode5 isa nullable AClasskind
+                                       var tclassidnode6 = nodearraylist6
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode7 = nodearraylist7
+                                       assert listnode7 isa Array[Object]
+                                       listnode8 = concat(listnode8, listnode7)
+                                       var pexterncodeblocknode10 = nodearraylist8
                                        assert pexterncodeblocknode10 isa nullable AExternCodeBlock
                                        assert pexterncodeblocknode10 isa nullable AExternCodeBlock
-                                       var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
+                                       var listnode11 = nodearraylist9
+                                       assert listnode11 isa Array[Object]
+                                       listnode12 = concat(listnode12, listnode11)
+                                       var listnode13 = nodearraylist10
+                                       assert listnode13 isa Array[Object]
+                                       listnode14 = concat(listnode14, listnode13)
+                                       var tkwendnode15 = nodearraylist12
+                                       assert tkwendnode15 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
+                                               pclasskindnode5,
+                                               tclassidnode6,
+                                               listnode8,
                                                null,
                                                null,
-                                               pexterncallsnode9,
-                                               pexterncodeblocknode10
+                                               pexterncodeblocknode10,
+                                               listnode12,
+                                               listnode14,
+                                               tkwendnode15
                                        )
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction140
+private class ReduceAction133
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
@@ -6246,42 +7288,60 @@ private class ReduceAction140
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
+                                       var listnode7 = new Array[Object]
+                                       var listnode16 = new Array[Object]
+                                       var listnode18 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode4 = nodearraylist2
                                        assert pvisibilitynode4 isa nullable AVisibility
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode4 = nodearraylist2
                                        assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa nullable TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var tstringnode8 = nodearraylist8
-                                       assert tstringnode8 isa nullable TString
-                                       var pexterncallsnode9 = nodearraylist9
-                                       assert pexterncallsnode9 isa nullable AExternCalls
-                                       var pexterncodeblocknode10 = nodearraylist10
-                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
-                                       var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
+                                       var pclasskindnode5 = nodearraylist3
+                                       assert pclasskindnode5 isa nullable AClasskind
+                                       var tclassidnode6 = nodearraylist5
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode12 = new Array[Object]
+                                       var listnode11 = nodearraylist6
+                                       assert listnode11 isa Array[Object]
+                                       listnode12 = concat(listnode12, listnode11)
+                                       var pannotationsnode8: nullable AAnnotations = new AAnnotations.init_aannotations(
+                                               null,
+                                               null,
+                                               listnode12,
+                                               null
+                                       )
+                                       var pexterncodeblocknode14 = nodearraylist7
+                                       assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+                                       var listnode15 = nodearraylist8
+                                       assert listnode15 isa Array[Object]
+                                       listnode16 = concat(listnode16, listnode15)
+                                       var listnode17 = nodearraylist9
+                                       assert listnode17 isa Array[Object]
+                                       listnode18 = concat(listnode18, listnode17)
+                                       var tkwendnode19 = nodearraylist11
+                                       assert tkwendnode19 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               tstringnode8,
-                                               pexterncallsnode9,
-                                               pexterncodeblocknode10
+                                               pclasskindnode5,
+                                               tclassidnode6,
+                                               listnode7,
+                                               pannotationsnode8,
+                                               pexterncodeblocknode14,
+                                               listnode16,
+                                               listnode18,
+                                               tkwendnode19
                                        )
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction141
+private class ReduceAction134
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist12 = p.pop
                                        var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
@@ -6293,82 +7353,135 @@ private class ReduceAction141
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
+                                       var listnode7 = new Array[Object]
+                                       var listnode16 = new Array[Object]
+                                       var listnode18 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
                                        assert pvisibilitynode4 isa nullable AVisibility
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
                                        assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa nullable TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var tstringnode8 = nodearraylist9
-                                       assert tstringnode8 isa nullable TString
-                                       var pexterncallsnode9 = nodearraylist10
-                                       assert pexterncallsnode9 isa nullable AExternCalls
-                                       var pexterncodeblocknode10 = nodearraylist11
-                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
-                                       var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
+                                       var pclasskindnode5 = nodearraylist4
+                                       assert pclasskindnode5 isa nullable AClasskind
+                                       var tclassidnode6 = nodearraylist6
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode12 = new Array[Object]
+                                       var listnode11 = nodearraylist7
+                                       assert listnode11 isa Array[Object]
+                                       listnode12 = concat(listnode12, listnode11)
+                                       var pannotationsnode8: nullable AAnnotations = new AAnnotations.init_aannotations(
+                                               null,
+                                               null,
+                                               listnode12,
+                                               null
+                                       )
+                                       var pexterncodeblocknode14 = nodearraylist8
+                                       assert pexterncodeblocknode14 isa nullable AExternCodeBlock
+                                       var listnode15 = nodearraylist9
+                                       assert listnode15 isa Array[Object]
+                                       listnode16 = concat(listnode16, listnode15)
+                                       var listnode17 = nodearraylist10
+                                       assert listnode17 isa Array[Object]
+                                       listnode18 = concat(listnode18, listnode17)
+                                       var tkwendnode19 = nodearraylist12
+                                       assert tkwendnode19 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               tstringnode8,
-                                               pexterncallsnode9,
-                                               pexterncodeblocknode10
+                                               pclasskindnode5,
+                                               tclassidnode6,
+                                               listnode7,
+                                               pannotationsnode8,
+                                               pexterncodeblocknode14,
+                                               listnode16,
+                                               listnode18,
+                                               tkwendnode19
                                        )
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction142
+private class ReduceAction135
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist12 = p.pop
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
+                                       var listnode8 = new Array[Object]
+                                       var listnode17 = new Array[Object]
+                                       var listnode19 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode4 = nodearraylist2
                                        assert pvisibilitynode4 isa nullable AVisibility
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode4 = nodearraylist2
                                        assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa nullable TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var pexterncodeblocknode10 = nodearraylist6
-                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
-                                       var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
-                                               pdocnode2,
+                                       var pclasskindnode5 = nodearraylist3
+                                       assert pclasskindnode5 isa nullable AClasskind
+                                       var tclassidnode6 = nodearraylist5
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode7 = nodearraylist6
+                                       assert listnode7 isa Array[Object]
+                                       listnode8 = concat(listnode8, listnode7)
+                                       var listnode13 = new Array[Object]
+                                       var listnode12 = nodearraylist7
+                                       assert listnode12 isa Array[Object]
+                                       listnode13 = concat(listnode13, listnode12)
+                                       var pannotationsnode9: nullable AAnnotations = new AAnnotations.init_aannotations(
                                                null,
                                                null,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
                                                null,
                                                null,
+                                               listnode13,
+                                               null
+                                       )
+                                       var pexterncodeblocknode15 = nodearraylist8
+                                       assert pexterncodeblocknode15 isa nullable AExternCodeBlock
+                                       var listnode16 = nodearraylist9
+                                       assert listnode16 isa Array[Object]
+                                       listnode17 = concat(listnode17, listnode16)
+                                       var listnode18 = nodearraylist10
+                                       assert listnode18 isa Array[Object]
+                                       listnode19 = concat(listnode19, listnode18)
+                                       var tkwendnode20 = nodearraylist12
+                                       assert tkwendnode20 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
+                                               pdocnode2,
                                                null,
                                                null,
-                                               pexterncodeblocknode10
+                                               pvisibilitynode4,
+                                               pclasskindnode5,
+                                               tclassidnode6,
+                                               listnode8,
+                                               pannotationsnode9,
+                                               pexterncodeblocknode15,
+                                               listnode17,
+                                               listnode19,
+                                               tkwendnode20
                                        )
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction143
+private class ReduceAction136
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist13 = p.pop
+                                       var nodearraylist12 = p.pop
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -6376,190 +7489,159 @@ private class ReduceAction143
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
+                                       var listnode8 = new Array[Object]
+                                       var listnode17 = new Array[Object]
+                                       var listnode19 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
                                        assert pvisibilitynode4 isa nullable AVisibility
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var tkwredefnode3 = nodearraylist2
                                        assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
                                        assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa nullable TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var pexterncodeblocknode10 = nodearraylist7
-                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
-                                       var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
+                                       var pclasskindnode5 = nodearraylist4
+                                       assert pclasskindnode5 isa nullable AClasskind
+                                       var tclassidnode6 = nodearraylist6
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode7 = nodearraylist7
+                                       assert listnode7 isa Array[Object]
+                                       listnode8 = concat(listnode8, listnode7)
+                                       var listnode13 = new Array[Object]
+                                       var listnode12 = nodearraylist8
+                                       assert listnode12 isa Array[Object]
+                                       listnode13 = concat(listnode13, listnode12)
+                                       var pannotationsnode9: nullable AAnnotations = new AAnnotations.init_aannotations(
+                                               null,
+                                               null,
+                                               listnode13,
+                                               null
+                                       )
+                                       var pexterncodeblocknode15 = nodearraylist9
+                                       assert pexterncodeblocknode15 isa nullable AExternCodeBlock
+                                       var listnode16 = nodearraylist10
+                                       assert listnode16 isa Array[Object]
+                                       listnode17 = concat(listnode17, listnode16)
+                                       var listnode18 = nodearraylist11
+                                       assert listnode18 isa Array[Object]
+                                       listnode19 = concat(listnode19, listnode18)
+                                       var tkwendnode20 = nodearraylist13
+                                       assert tkwendnode20 isa nullable TKwend
+                                       var pclassdefnode1: nullable AStdClassdef = new AStdClassdef.init_astdclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               null,
-                                               null,
-                                               pexterncodeblocknode10
+                                               pclasskindnode5,
+                                               tclassidnode6,
+                                               listnode8,
+                                               pannotationsnode9,
+                                               pexterncodeblocknode15,
+                                               listnode17,
+                                               listnode19,
+                                               tkwendnode20
                                        )
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pclassdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction144
+private class ReduceAction137
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tkwclassnode2 = nodearraylist1
+                                       assert tkwclassnode2 isa nullable TKwclass
+                                       var pclasskindnode1: nullable AConcreteClasskind = new AConcreteClasskind.init_aconcreteclasskind(
+                                               tkwclassnode2
+                                       )
+                                       node_list = pclasskindnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction138
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa nullable TKwmeth
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var pexterncallsnode9 = nodearraylist6
-                                       assert pexterncallsnode9 isa nullable AExternCalls
-                                       var pexterncodeblocknode10 = nodearraylist7
-                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
-                                       var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               null,
-                                               pexterncallsnode9,
-                                               pexterncodeblocknode10
+                                       var tkwabstractnode2 = nodearraylist1
+                                       assert tkwabstractnode2 isa nullable TKwabstract
+                                       var tkwclassnode3 = nodearraylist2
+                                       assert tkwclassnode3 isa nullable TKwclass
+                                       var pclasskindnode1: nullable AAbstractClasskind = new AAbstractClasskind.init_aabstractclasskind(
+                                               tkwabstractnode2,
+                                               tkwclassnode3
                                        )
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pclasskindnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction145
+private class ReduceAction139
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa nullable TKwmeth
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var pexterncallsnode9 = nodearraylist7
-                                       assert pexterncallsnode9 isa nullable AExternCalls
-                                       var pexterncodeblocknode10 = nodearraylist8
-                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
-                                       var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwmethnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               null,
-                                               pexterncallsnode9,
-                                               pexterncodeblocknode10
+                                       var tkwinterfacenode2 = nodearraylist1
+                                       assert tkwinterfacenode2 isa nullable TKwinterface
+                                       var pclasskindnode1: nullable AInterfaceClasskind = new AInterfaceClasskind.init_ainterfaceclasskind(
+                                               tkwinterfacenode2
                                        )
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pclasskindnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction146
+private class ReduceAction140
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var pvisibilitynode6 = nodearraylist2
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist3
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tattridnode8 = nodearraylist4
-                                       assert tattridnode8 isa nullable TAttrid
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               null,
-                                               null,
-                                               null,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               tattridnode8,
-                                               null,
-                                               null,
+                                       var tkwenumnode2 = nodearraylist1
+                                       assert tkwenumnode2 isa nullable TKwenum
+                                       var pclasskindnode1: nullable AEnumClasskind = new AEnumClasskind.init_aenumclasskind(
+                                               tkwenumnode2
+                                       )
+                                       node_list = pclasskindnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction141
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tkwexternnode2 = nodearraylist1
+                                       assert tkwexternnode2 isa nullable TKwextern
+                                       var pclasskindnode1: nullable AExternClasskind = new AExternClasskind.init_aexternclasskind(
+                                               tkwexternnode2,
                                                null
                                        )
                                                null
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pclasskindnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction147
+private class ReduceAction142
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa nullable TKwredef
-                                       var pvisibilitynode6 = nodearraylist3
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist4
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tattridnode8 = nodearraylist5
-                                       assert tattridnode8 isa nullable TAttrid
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               null,
-                                               null,
-                                               tkwredefnode5,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               tattridnode8,
-                                               null,
-                                               null,
-                                               null
+                                       var tkwexternnode2 = nodearraylist1
+                                       assert tkwexternnode2 isa nullable TKwextern
+                                       var tkwclassnode3 = nodearraylist2
+                                       assert tkwclassnode3 isa nullable TKwclass
+                                       var pclasskindnode1: nullable AExternClasskind = new AExternClasskind.init_aexternclasskind(
+                                               tkwexternnode2,
+                                               tkwclassnode3
                                        )
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pclasskindnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction148
+private class ReduceAction143
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -6569,33 +7651,16 @@ private class ReduceAction148
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var pablenode3 = nodearraylist2
-                                       assert pablenode3 isa nullable AAble
-                                       var pvisibilitynode6 = nodearraylist3
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist4
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tattridnode8 = nodearraylist5
-                                       assert tattridnode8 isa nullable TAttrid
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               pablenode3,
-                                               null,
-                                               null,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               tattridnode8,
-                                               null,
-                                               null,
-                                               null
-                                       )
-                                       node_list = ppropdefnode1
+                                       var listnode2 = new Array[Object]
+                                       var pformaldefnode1 = nodearraylist3
+                                       if pformaldefnode1 != null then
+                                               listnode2.add(pformaldefnode1)
+                                       end
+                                       node_list = listnode2
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction149
+private class ReduceAction144
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -6606,305 +7671,171 @@ private class ReduceAction149
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var pablenode3 = nodearraylist2
-                                       assert pablenode3 isa nullable AAble
-                                       var tkwredefnode5 = nodearraylist3
-                                       assert tkwredefnode5 isa nullable TKwredef
-                                       var pvisibilitynode6 = nodearraylist4
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist5
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tattridnode8 = nodearraylist6
-                                       assert tattridnode8 isa nullable TAttrid
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               pablenode3,
-                                               null,
-                                               tkwredefnode5,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               tattridnode8,
-                                               null,
-                                               null,
-                                               null
-                                       )
-                                       node_list = ppropdefnode1
+                                       var listnode3 = new Array[Object]
+                                       var pformaldefnode1 = nodearraylist3
+                                       var listnode2 = nodearraylist4
+                                       assert listnode2 isa Array[Object]
+                                       if pformaldefnode1 != null then
+                                               listnode3.add(pformaldefnode1)
+                                       end
+                                       listnode3 = concat(listnode3, listnode2)
+                                       node_list = listnode3
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction150
+private class ReduceAction145
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var pablenode4 = nodearraylist2
-                                       assert pablenode4 isa nullable AAble
-                                       var pvisibilitynode6 = nodearraylist3
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist4
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tattridnode8 = nodearraylist5
-                                       assert tattridnode8 isa nullable TAttrid
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pablenode4,
-                                               null,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               tattridnode8,
-                                               null,
+                                       var pformaldefnode1 = nodearraylist3
+                                       node_list = pformaldefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction146
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tclassidnode2 = nodearraylist1
+                                       assert tclassidnode2 isa nullable TClassid
+                                       var pformaldefnode1: nullable AFormaldef = new AFormaldef.init_aformaldef(
+                                               tclassidnode2,
                                                null,
                                                null
                                        )
                                                null,
                                                null
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pformaldefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction151
+private class ReduceAction147
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var pablenode4 = nodearraylist2
-                                       assert pablenode4 isa nullable AAble
-                                       var tkwredefnode5 = nodearraylist3
-                                       assert tkwredefnode5 isa nullable TKwredef
-                                       var pvisibilitynode6 = nodearraylist4
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist5
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tattridnode8 = nodearraylist6
-                                       assert tattridnode8 isa nullable TAttrid
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pablenode4,
-                                               tkwredefnode5,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               tattridnode8,
-                                               null,
+                                       var tclassidnode2 = nodearraylist1
+                                       assert tclassidnode2 isa nullable TClassid
+                                       var pannotationsnode4 = nodearraylist2
+                                       assert pannotationsnode4 isa nullable AAnnotations
+                                       var pformaldefnode1: nullable AFormaldef = new AFormaldef.init_aformaldef(
+                                               tclassidnode2,
                                                null,
                                                null,
-                                               null
+                                               pannotationsnode4
                                        )
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pformaldefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction152
+private class ReduceAction148
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var pablenode3 = nodearraylist2
-                                       assert pablenode3 isa nullable AAble
-                                       var pablenode4 = nodearraylist3
-                                       assert pablenode4 isa nullable AAble
-                                       var pvisibilitynode6 = nodearraylist4
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist5
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tattridnode8 = nodearraylist6
-                                       assert tattridnode8 isa nullable TAttrid
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               pablenode3,
-                                               pablenode4,
-                                               null,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               tattridnode8,
-                                               null,
-                                               null,
+                                       var tclassidnode2 = nodearraylist1
+                                       assert tclassidnode2 isa nullable TClassid
+                                       var ptypenode3 = nodearraylist2
+                                       assert ptypenode3 isa nullable AType
+                                       var pformaldefnode1: nullable AFormaldef = new AFormaldef.init_aformaldef(
+                                               tclassidnode2,
+                                               ptypenode3,
                                                null
                                        )
                                                null
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pformaldefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction153
+private class ReduceAction149
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var pablenode3 = nodearraylist2
-                                       assert pablenode3 isa nullable AAble
-                                       var pablenode4 = nodearraylist3
-                                       assert pablenode4 isa nullable AAble
-                                       var tkwredefnode5 = nodearraylist4
-                                       assert tkwredefnode5 isa nullable TKwredef
-                                       var pvisibilitynode6 = nodearraylist5
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist6
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tattridnode8 = nodearraylist7
-                                       assert tattridnode8 isa nullable TAttrid
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               pablenode3,
-                                               pablenode4,
-                                               tkwredefnode5,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               tattridnode8,
-                                               null,
-                                               null,
-                                               null
+                                       var tclassidnode2 = nodearraylist1
+                                       assert tclassidnode2 isa nullable TClassid
+                                       var ptypenode3 = nodearraylist3
+                                       assert ptypenode3 isa nullable AType
+                                       var pannotationsnode4 = nodearraylist2
+                                       assert pannotationsnode4 isa nullable AAnnotations
+                                       var pformaldefnode1: nullable AFormaldef = new AFormaldef.init_aformaldef(
+                                               tclassidnode2,
+                                               ptypenode3,
+                                               pannotationsnode4
                                        )
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pformaldefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction154
+private class ReduceAction150
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var pvisibilitynode6 = nodearraylist2
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist3
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tattridnode8 = nodearraylist4
-                                       assert tattridnode8 isa nullable TAttrid
-                                       var ptypenode10 = nodearraylist5
-                                       assert ptypenode10 isa nullable AType
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               null,
-                                               null,
-                                               null,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               tattridnode8,
-                                               null,
-                                               ptypenode10,
+                                       var tkwsupernode2 = nodearraylist2
+                                       assert tkwsupernode2 isa nullable TKwsuper
+                                       var ptypenode3 = nodearraylist4
+                                       assert ptypenode3 isa nullable AType
+                                       var psuperclassnode1: nullable ASuperclass = new ASuperclass.init_asuperclass(
+                                               tkwsupernode2,
+                                               ptypenode3,
                                                null
                                        )
                                                null
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = psuperclassnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction155
+private class ReduceAction151
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa nullable TKwredef
-                                       var pvisibilitynode6 = nodearraylist3
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist4
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tattridnode8 = nodearraylist5
-                                       assert tattridnode8 isa nullable TAttrid
-                                       var ptypenode10 = nodearraylist6
-                                       assert ptypenode10 isa nullable AType
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               null,
-                                               null,
-                                               tkwredefnode5,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               tattridnode8,
-                                               null,
-                                               ptypenode10,
-                                               null
+                                       var tkwsupernode2 = nodearraylist2
+                                       assert tkwsupernode2 isa nullable TKwsuper
+                                       var ptypenode3 = nodearraylist4
+                                       assert ptypenode3 isa nullable AType
+                                       var pannotationsnode4 = nodearraylist5
+                                       assert pannotationsnode4 isa nullable AAnnotations
+                                       var psuperclassnode1: nullable ASuperclass = new ASuperclass.init_asuperclass(
+                                               tkwsupernode2,
+                                               ptypenode3,
+                                               pannotationsnode4
                                        )
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = psuperclassnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction156
+private class ReduceAction152
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var pablenode3 = nodearraylist2
-                                       assert pablenode3 isa nullable AAble
-                                       var pvisibilitynode6 = nodearraylist3
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist4
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tattridnode8 = nodearraylist5
-                                       assert tattridnode8 isa nullable TAttrid
-                                       var ptypenode10 = nodearraylist6
-                                       assert ptypenode10 isa nullable AType
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               pablenode3,
-                                               null,
-                                               null,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               tattridnode8,
-                                               null,
-                                               ptypenode10,
-                                               null
-                                       )
+                                       var ppropdefnode1 = nodearraylist1
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction157
+private class ReduceAction153
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -6918,39 +7849,37 @@ private class ReduceAction157
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pablenode3 = nodearraylist2
-                                       assert pablenode3 isa nullable AAble
-                                       var tkwredefnode5 = nodearraylist3
-                                       assert tkwredefnode5 isa nullable TKwredef
-                                       var pvisibilitynode6 = nodearraylist4
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist5
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tattridnode8 = nodearraylist6
-                                       assert tattridnode8 isa nullable TAttrid
-                                       var ptypenode10 = nodearraylist7
-                                       assert ptypenode10 isa nullable AType
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                       var pvisibilitynode4 = nodearraylist2
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwmethnode5 = nodearraylist3
+                                       assert tkwmethnode5 isa nullable TKwmeth
+                                       var pmethidnode6 = nodearraylist4
+                                       assert pmethidnode6 isa nullable AMethid
+                                       var psignaturenode7 = nodearraylist5
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var pexprnode9 = nodearraylist7
+                                       assert pexprnode9 isa nullable AExpr
+                                       var ppropdefnode1: nullable AConcreteMethPropdef = new AConcreteMethPropdef.init_aconcretemethpropdef(
                                                pdocnode2,
                                                pdocnode2,
-                                               pablenode3,
                                                null,
                                                null,
-                                               tkwredefnode5,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               tattridnode8,
+                                               pvisibilitynode4,
+                                               tkwmethnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
                                                null,
                                                null,
-                                               ptypenode10,
-                                               null
+                                               pexprnode9
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction158
+private class ReduceAction154
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -6959,37 +7888,38 @@ private class ReduceAction158
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pablenode4 = nodearraylist2
-                                       assert pablenode4 isa nullable AAble
-                                       var pvisibilitynode6 = nodearraylist3
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist4
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tattridnode8 = nodearraylist5
-                                       assert tattridnode8 isa nullable TAttrid
-                                       var ptypenode10 = nodearraylist6
-                                       assert ptypenode10 isa nullable AType
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               null,
-                                               pablenode4,
-                                               null,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               tattridnode8,
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwmethnode5 = nodearraylist4
+                                       assert tkwmethnode5 isa nullable TKwmeth
+                                       var pmethidnode6 = nodearraylist5
+                                       assert pmethidnode6 isa nullable AMethid
+                                       var psignaturenode7 = nodearraylist6
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var pexprnode9 = nodearraylist8
+                                       assert pexprnode9 isa nullable AExpr
+                                       var ppropdefnode1: nullable AConcreteMethPropdef = new AConcreteMethPropdef.init_aconcretemethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwmethnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
                                                null,
                                                null,
-                                               ptypenode10,
-                                               null
+                                               pexprnode9
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction159
+private class ReduceAction155
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -6999,39 +7929,39 @@ private class ReduceAction159
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pablenode4 = nodearraylist2
-                                       assert pablenode4 isa nullable AAble
-                                       var tkwredefnode5 = nodearraylist3
-                                       assert tkwredefnode5 isa nullable TKwredef
-                                       var pvisibilitynode6 = nodearraylist4
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist5
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tattridnode8 = nodearraylist6
-                                       assert tattridnode8 isa nullable TAttrid
-                                       var ptypenode10 = nodearraylist7
-                                       assert ptypenode10 isa nullable AType
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                       var pvisibilitynode4 = nodearraylist2
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwmethnode5 = nodearraylist3
+                                       assert tkwmethnode5 isa nullable TKwmeth
+                                       var pmethidnode6 = nodearraylist4
+                                       assert pmethidnode6 isa nullable AMethid
+                                       var psignaturenode7 = nodearraylist5
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var pannotationsnode8 = nodearraylist6
+                                       assert pannotationsnode8 isa nullable AAnnotations
+                                       var pexprnode9 = nodearraylist8
+                                       assert pexprnode9 isa nullable AExpr
+                                       var ppropdefnode1: nullable AConcreteMethPropdef = new AConcreteMethPropdef.init_aconcretemethpropdef(
                                                pdocnode2,
                                                null,
                                                pdocnode2,
                                                null,
-                                               pablenode4,
-                                               tkwredefnode5,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               tattridnode8,
-                                               null,
-                                               ptypenode10,
-                                               null
+                                               pvisibilitynode4,
+                                               tkwmethnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               pannotationsnode8,
+                                               pexprnode9
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction160
+private class ReduceAction156
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -7041,35 +7971,35 @@ private class ReduceAction160
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pablenode3 = nodearraylist2
-                                       assert pablenode3 isa nullable AAble
-                                       var pablenode4 = nodearraylist3
-                                       assert pablenode4 isa nullable AAble
-                                       var pvisibilitynode6 = nodearraylist4
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist5
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tattridnode8 = nodearraylist6
-                                       assert tattridnode8 isa nullable TAttrid
-                                       var ptypenode10 = nodearraylist7
-                                       assert ptypenode10 isa nullable AType
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwmethnode5 = nodearraylist4
+                                       assert tkwmethnode5 isa nullable TKwmeth
+                                       var pmethidnode6 = nodearraylist5
+                                       assert pmethidnode6 isa nullable AMethid
+                                       var psignaturenode7 = nodearraylist6
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var pannotationsnode8 = nodearraylist7
+                                       assert pannotationsnode8 isa nullable AAnnotations
+                                       var pexprnode9 = nodearraylist9
+                                       assert pexprnode9 isa nullable AExpr
+                                       var ppropdefnode1: nullable AConcreteMethPropdef = new AConcreteMethPropdef.init_aconcretemethpropdef(
                                                pdocnode2,
                                                pdocnode2,
-                                               pablenode3,
-                                               pablenode4,
-                                               null,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               tattridnode8,
-                                               null,
-                                               ptypenode10,
-                                               null
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwmethnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               pannotationsnode8,
+                                               pexprnode9
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction161
+private class ReduceAction157
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -7084,41 +8014,37 @@ private class ReduceAction161
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pablenode3 = nodearraylist2
-                                       assert pablenode3 isa nullable AAble
-                                       var pablenode4 = nodearraylist3
-                                       assert pablenode4 isa nullable AAble
-                                       var tkwredefnode5 = nodearraylist4
-                                       assert tkwredefnode5 isa nullable TKwredef
-                                       var pvisibilitynode6 = nodearraylist5
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist6
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tattridnode8 = nodearraylist7
-                                       assert tattridnode8 isa nullable TAttrid
-                                       var ptypenode10 = nodearraylist8
-                                       assert ptypenode10 isa nullable AType
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                       var pvisibilitynode4 = nodearraylist2
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwmethnode5 = nodearraylist3
+                                       assert tkwmethnode5 isa nullable TKwmeth
+                                       var pmethidnode6 = nodearraylist4
+                                       assert pmethidnode6 isa nullable AMethid
+                                       var psignaturenode7 = nodearraylist5
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var pexprnode9 = nodearraylist7
+                                       assert pexprnode9 isa nullable AExpr
+                                       var ppropdefnode1: nullable AConcreteMethPropdef = new AConcreteMethPropdef.init_aconcretemethpropdef(
                                                pdocnode2,
                                                pdocnode2,
-                                               pablenode3,
-                                               pablenode4,
-                                               tkwredefnode5,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               tattridnode8,
                                                null,
                                                null,
-                                               ptypenode10,
-                                               null
+                                               pvisibilitynode4,
+                                               tkwmethnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               null,
+                                               pexprnode9
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction162
+private class ReduceAction158
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -7128,35 +8054,38 @@ private class ReduceAction162
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pvisibilitynode6 = nodearraylist2
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist3
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tattridnode8 = nodearraylist4
-                                       assert tattridnode8 isa nullable TAttrid
-                                       var pexprnode11 = nodearraylist7
-                                       assert pexprnode11 isa nullable AExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwmethnode5 = nodearraylist4
+                                       assert tkwmethnode5 isa nullable TKwmeth
+                                       var pmethidnode6 = nodearraylist5
+                                       assert pmethidnode6 isa nullable AMethid
+                                       var psignaturenode7 = nodearraylist6
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var pexprnode9 = nodearraylist8
+                                       assert pexprnode9 isa nullable AExpr
+                                       var ppropdefnode1: nullable AConcreteMethPropdef = new AConcreteMethPropdef.init_aconcretemethpropdef(
                                                pdocnode2,
                                                pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwmethnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
                                                null,
                                                null,
-                                               null,
-                                               null,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               tattridnode8,
-                                               null,
-                                               null,
-                                               pexprnode11
+                                               pexprnode9
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction163
+private class ReduceAction159
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -7167,37 +8096,39 @@ private class ReduceAction163
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa nullable TKwredef
-                                       var pvisibilitynode6 = nodearraylist3
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist4
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tattridnode8 = nodearraylist5
-                                       assert tattridnode8 isa nullable TAttrid
-                                       var pexprnode11 = nodearraylist8
-                                       assert pexprnode11 isa nullable AExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                       var pvisibilitynode4 = nodearraylist2
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwmethnode5 = nodearraylist3
+                                       assert tkwmethnode5 isa nullable TKwmeth
+                                       var pmethidnode6 = nodearraylist4
+                                       assert pmethidnode6 isa nullable AMethid
+                                       var psignaturenode7 = nodearraylist5
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var pannotationsnode8 = nodearraylist6
+                                       assert pannotationsnode8 isa nullable AAnnotations
+                                       var pexprnode9 = nodearraylist8
+                                       assert pexprnode9 isa nullable AExpr
+                                       var ppropdefnode1: nullable AConcreteMethPropdef = new AConcreteMethPropdef.init_aconcretemethpropdef(
                                                pdocnode2,
                                                null,
                                                pdocnode2,
                                                null,
-                                               null,
-                                               tkwredefnode5,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               tattridnode8,
-                                               null,
-                                               null,
-                                               pexprnode11
+                                               pvisibilitynode4,
+                                               tkwmethnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               pannotationsnode8,
+                                               pexprnode9
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction164
+private class ReduceAction160
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -7208,38 +8139,39 @@ private class ReduceAction164
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pablenode3 = nodearraylist2
-                                       assert pablenode3 isa nullable AAble
-                                       var pvisibilitynode6 = nodearraylist3
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist4
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tattridnode8 = nodearraylist5
-                                       assert tattridnode8 isa nullable TAttrid
-                                       var pexprnode11 = nodearraylist8
-                                       assert pexprnode11 isa nullable AExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwmethnode5 = nodearraylist4
+                                       assert tkwmethnode5 isa nullable TKwmeth
+                                       var pmethidnode6 = nodearraylist5
+                                       assert pmethidnode6 isa nullable AMethid
+                                       var psignaturenode7 = nodearraylist6
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var pannotationsnode8 = nodearraylist7
+                                       assert pannotationsnode8 isa nullable AAnnotations
+                                       var pexprnode9 = nodearraylist9
+                                       assert pexprnode9 isa nullable AExpr
+                                       var ppropdefnode1: nullable AConcreteMethPropdef = new AConcreteMethPropdef.init_aconcretemethpropdef(
                                                pdocnode2,
                                                pdocnode2,
-                                               pablenode3,
-                                               null,
-                                               null,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               tattridnode8,
-                                               null,
-                                               null,
-                                               pexprnode11
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwmethnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               pannotationsnode8,
+                                               pexprnode9
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction165
+private class ReduceAction161
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -7250,39 +8182,36 @@ private class ReduceAction165
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pablenode3 = nodearraylist2
-                                       assert pablenode3 isa nullable AAble
-                                       var tkwredefnode5 = nodearraylist3
-                                       assert tkwredefnode5 isa nullable TKwredef
-                                       var pvisibilitynode6 = nodearraylist4
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist5
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tattridnode8 = nodearraylist6
-                                       assert tattridnode8 isa nullable TAttrid
-                                       var pexprnode11 = nodearraylist9
-                                       assert pexprnode11 isa nullable AExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                       var pvisibilitynode4 = nodearraylist2
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwmethnode5 = nodearraylist3
+                                       assert tkwmethnode5 isa nullable TKwmeth
+                                       var pmethidnode6 = nodearraylist4
+                                       assert pmethidnode6 isa nullable AMethid
+                                       var psignaturenode7 = nodearraylist5
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var pexprnode9 = nodearraylist8
+                                       assert pexprnode9 isa nullable AExpr
+                                       var ppropdefnode1: nullable AConcreteMethPropdef = new AConcreteMethPropdef.init_aconcretemethpropdef(
                                                pdocnode2,
                                                pdocnode2,
-                                               pablenode3,
-                                               null,
-                                               tkwredefnode5,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               tattridnode8,
                                                null,
                                                null,
+                                               pvisibilitynode4,
+                                               tkwmethnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
                                                null,
                                                null,
-                                               pexprnode11
+                                               pexprnode9
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction166
+private class ReduceAction162
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -7293,40 +8222,37 @@ private class ReduceAction166
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pablenode4 = nodearraylist2
-                                       assert pablenode4 isa nullable AAble
-                                       var pvisibilitynode6 = nodearraylist3
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist4
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tattridnode8 = nodearraylist5
-                                       assert tattridnode8 isa nullable TAttrid
-                                       var pexprnode11 = nodearraylist8
-                                       assert pexprnode11 isa nullable AExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwmethnode5 = nodearraylist4
+                                       assert tkwmethnode5 isa nullable TKwmeth
+                                       var pmethidnode6 = nodearraylist5
+                                       assert pmethidnode6 isa nullable AMethid
+                                       var psignaturenode7 = nodearraylist6
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var pexprnode9 = nodearraylist9
+                                       assert pexprnode9 isa nullable AExpr
+                                       var ppropdefnode1: nullable AConcreteMethPropdef = new AConcreteMethPropdef.init_aconcretemethpropdef(
                                                pdocnode2,
                                                pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwmethnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
                                                null,
                                                null,
-                                               pablenode4,
-                                               null,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               tattridnode8,
-                                               null,
-                                               null,
-                                               pexprnode11
+                                               pexprnode9
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction167
+private class ReduceAction163
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -7335,41 +8261,34 @@ private class ReduceAction167
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pablenode4 = nodearraylist2
-                                       assert pablenode4 isa nullable AAble
-                                       var tkwredefnode5 = nodearraylist3
-                                       assert tkwredefnode5 isa nullable TKwredef
-                                       var pvisibilitynode6 = nodearraylist4
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist5
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tattridnode8 = nodearraylist6
-                                       assert tattridnode8 isa nullable TAttrid
-                                       var pexprnode11 = nodearraylist9
-                                       assert pexprnode11 isa nullable AExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                       var pvisibilitynode4 = nodearraylist2
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwmethnode5 = nodearraylist3
+                                       assert tkwmethnode5 isa nullable TKwmeth
+                                       var pmethidnode6 = nodearraylist4
+                                       assert pmethidnode6 isa nullable AMethid
+                                       var psignaturenode7 = nodearraylist5
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var pannotationsnode8 = nodearraylist6
+                                       assert pannotationsnode8 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable ADeferredMethPropdef = new ADeferredMethPropdef.init_adeferredmethpropdef(
                                                pdocnode2,
                                                null,
                                                pdocnode2,
                                                null,
-                                               pablenode4,
-                                               tkwredefnode5,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               tattridnode8,
-                                               null,
-                                               null,
-                                               pexprnode11
+                                               pvisibilitynode4,
+                                               tkwmethnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               pannotationsnode8
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction168
+private class ReduceAction164
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -7379,42 +8298,36 @@ private class ReduceAction168
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pablenode3 = nodearraylist2
-                                       assert pablenode3 isa nullable AAble
-                                       var pablenode4 = nodearraylist3
-                                       assert pablenode4 isa nullable AAble
-                                       var pvisibilitynode6 = nodearraylist4
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist5
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tattridnode8 = nodearraylist6
-                                       assert tattridnode8 isa nullable TAttrid
-                                       var pexprnode11 = nodearraylist9
-                                       assert pexprnode11 isa nullable AExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwmethnode5 = nodearraylist4
+                                       assert tkwmethnode5 isa nullable TKwmeth
+                                       var pmethidnode6 = nodearraylist5
+                                       assert pmethidnode6 isa nullable AMethid
+                                       var psignaturenode7 = nodearraylist6
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var pannotationsnode8 = nodearraylist7
+                                       assert pannotationsnode8 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable ADeferredMethPropdef = new ADeferredMethPropdef.init_adeferredmethpropdef(
                                                pdocnode2,
                                                pdocnode2,
-                                               pablenode3,
-                                               pablenode4,
-                                               null,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               tattridnode8,
-                                               null,
-                                               null,
-                                               pexprnode11
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwmethnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               pannotationsnode8
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction169
+private class ReduceAction165
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist10 = p.pop
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -7424,37 +8337,28 @@ private class ReduceAction169
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pablenode3 = nodearraylist2
-                                       assert pablenode3 isa nullable AAble
-                                       var pablenode4 = nodearraylist3
-                                       assert pablenode4 isa nullable AAble
-                                       var tkwredefnode5 = nodearraylist4
-                                       assert tkwredefnode5 isa nullable TKwredef
-                                       var pvisibilitynode6 = nodearraylist5
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist6
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tattridnode8 = nodearraylist7
-                                       assert tattridnode8 isa nullable TAttrid
-                                       var pexprnode11 = nodearraylist10
-                                       assert pexprnode11 isa nullable AExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                       var pvisibilitynode4 = nodearraylist2
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwmethnode5 = nodearraylist3
+                                       assert tkwmethnode5 isa nullable TKwmeth
+                                       var pmethidnode6 = nodearraylist4
+                                       assert pmethidnode6 isa nullable AMethid
+                                       var psignaturenode7 = nodearraylist5
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var ppropdefnode1: nullable ADeferredMethPropdef = new ADeferredMethPropdef.init_adeferredmethpropdef(
                                                pdocnode2,
                                                pdocnode2,
-                                               pablenode3,
-                                               pablenode4,
-                                               tkwredefnode5,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               tattridnode8,
-                                               null,
                                                null,
                                                null,
-                                               pexprnode11
+                                               pvisibilitynode4,
+                                               tkwmethnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction170
+private class ReduceAction166
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -7469,39 +8373,34 @@ private class ReduceAction170
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pvisibilitynode6 = nodearraylist2
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist3
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tattridnode8 = nodearraylist4
-                                       assert tattridnode8 isa nullable TAttrid
-                                       var ptypenode10 = nodearraylist5
-                                       assert ptypenode10 isa nullable AType
-                                       var pexprnode11 = nodearraylist8
-                                       assert pexprnode11 isa nullable AExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwmethnode5 = nodearraylist4
+                                       assert tkwmethnode5 isa nullable TKwmeth
+                                       var pmethidnode6 = nodearraylist5
+                                       assert pmethidnode6 isa nullable AMethid
+                                       var psignaturenode7 = nodearraylist6
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var ppropdefnode1: nullable ADeferredMethPropdef = new ADeferredMethPropdef.init_adeferredmethpropdef(
                                                pdocnode2,
                                                pdocnode2,
-                                               null,
-                                               null,
-                                               null,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               tattridnode8,
-                                               null,
-                                               ptypenode10,
-                                               pexprnode11
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwmethnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction171
+private class ReduceAction167
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -7511,40 +8410,31 @@ private class ReduceAction171
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa nullable TKwredef
-                                       var pvisibilitynode6 = nodearraylist3
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist4
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tattridnode8 = nodearraylist5
-                                       assert tattridnode8 isa nullable TAttrid
-                                       var ptypenode10 = nodearraylist6
-                                       assert ptypenode10 isa nullable AType
-                                       var pexprnode11 = nodearraylist9
-                                       assert pexprnode11 isa nullable AExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                       var pvisibilitynode4 = nodearraylist2
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwmethnode5 = nodearraylist3
+                                       assert tkwmethnode5 isa nullable TKwmeth
+                                       var pmethidnode6 = nodearraylist4
+                                       assert pmethidnode6 isa nullable AMethid
+                                       var psignaturenode7 = nodearraylist5
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var ppropdefnode1: nullable AInternMethPropdef = new AInternMethPropdef.init_ainternmethpropdef(
                                                pdocnode2,
                                                null,
                                                pdocnode2,
                                                null,
-                                               null,
-                                               tkwredefnode5,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               tattridnode8,
-                                               null,
-                                               ptypenode10,
-                                               pexprnode11
+                                               pvisibilitynode4,
+                                               tkwmethnode5,
+                                               pmethidnode6,
+                                               psignaturenode7
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction172
+private class ReduceAction168
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -7555,42 +8445,33 @@ private class ReduceAction172
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pablenode3 = nodearraylist2
-                                       assert pablenode3 isa nullable AAble
-                                       var pvisibilitynode6 = nodearraylist3
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist4
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tattridnode8 = nodearraylist5
-                                       assert tattridnode8 isa nullable TAttrid
-                                       var ptypenode10 = nodearraylist6
-                                       assert ptypenode10 isa nullable AType
-                                       var pexprnode11 = nodearraylist9
-                                       assert pexprnode11 isa nullable AExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
-                                               pdocnode2,
-                                               pablenode3,
-                                               null,
-                                               null,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               tattridnode8,
-                                               null,
-                                               ptypenode10,
-                                               pexprnode11
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwmethnode5 = nodearraylist4
+                                       assert tkwmethnode5 isa nullable TKwmeth
+                                       var pmethidnode6 = nodearraylist5
+                                       assert pmethidnode6 isa nullable AMethid
+                                       var psignaturenode7 = nodearraylist6
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var ppropdefnode1: nullable AInternMethPropdef = new AInternMethPropdef.init_ainternmethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwmethnode5,
+                                               pmethidnode6,
+                                               psignaturenode7
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction173
+private class ReduceAction169
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist10 = p.pop
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -7600,42 +8481,34 @@ private class ReduceAction173
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pablenode3 = nodearraylist2
-                                       assert pablenode3 isa nullable AAble
-                                       var tkwredefnode5 = nodearraylist3
-                                       assert tkwredefnode5 isa nullable TKwredef
-                                       var pvisibilitynode6 = nodearraylist4
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist5
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tattridnode8 = nodearraylist6
-                                       assert tattridnode8 isa nullable TAttrid
-                                       var ptypenode10 = nodearraylist7
-                                       assert ptypenode10 isa nullable AType
-                                       var pexprnode11 = nodearraylist10
-                                       assert pexprnode11 isa nullable AExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                       var pvisibilitynode4 = nodearraylist2
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwmethnode5 = nodearraylist3
+                                       assert tkwmethnode5 isa nullable TKwmeth
+                                       var pmethidnode6 = nodearraylist4
+                                       assert pmethidnode6 isa nullable AMethid
+                                       var psignaturenode7 = nodearraylist5
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
                                                pdocnode2,
                                                pdocnode2,
-                                               pablenode3,
                                                null,
                                                null,
-                                               tkwredefnode5,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               tattridnode8,
+                                               pvisibilitynode4,
+                                               tkwmethnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
                                                null,
                                                null,
-                                               ptypenode10,
-                                               pexprnode11
+                                               null,
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction174
+private class ReduceAction170
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -7646,41 +8519,36 @@ private class ReduceAction174
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pablenode4 = nodearraylist2
-                                       assert pablenode4 isa nullable AAble
-                                       var pvisibilitynode6 = nodearraylist3
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist4
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tattridnode8 = nodearraylist5
-                                       assert tattridnode8 isa nullable TAttrid
-                                       var ptypenode10 = nodearraylist6
-                                       assert ptypenode10 isa nullable AType
-                                       var pexprnode11 = nodearraylist9
-                                       assert pexprnode11 isa nullable AExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwmethnode5 = nodearraylist4
+                                       assert tkwmethnode5 isa nullable TKwmeth
+                                       var pmethidnode6 = nodearraylist5
+                                       assert pmethidnode6 isa nullable AMethid
+                                       var psignaturenode7 = nodearraylist6
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
                                                pdocnode2,
                                                pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwmethnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
                                                null,
                                                null,
-                                               pablenode4,
-                                               null,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               tattridnode8,
                                                null,
                                                null,
-                                               ptypenode10,
-                                               pexprnode11
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction175
+private class ReduceAction171
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist10 = p.pop
-                                       var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -7691,42 +8559,36 @@ private class ReduceAction175
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pablenode4 = nodearraylist2
-                                       assert pablenode4 isa nullable AAble
-                                       var tkwredefnode5 = nodearraylist3
-                                       assert tkwredefnode5 isa nullable TKwredef
-                                       var pvisibilitynode6 = nodearraylist4
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist5
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tattridnode8 = nodearraylist6
-                                       assert tattridnode8 isa nullable TAttrid
-                                       var ptypenode10 = nodearraylist7
-                                       assert ptypenode10 isa nullable AType
-                                       var pexprnode11 = nodearraylist10
-                                       assert pexprnode11 isa nullable AExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                       var pvisibilitynode4 = nodearraylist2
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwmethnode5 = nodearraylist3
+                                       assert tkwmethnode5 isa nullable TKwmeth
+                                       var pmethidnode6 = nodearraylist4
+                                       assert pmethidnode6 isa nullable AMethid
+                                       var psignaturenode7 = nodearraylist5
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var tstringnode8 = nodearraylist8
+                                       assert tstringnode8 isa nullable TString
+                                       var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
                                                pdocnode2,
                                                null,
                                                pdocnode2,
                                                null,
-                                               pablenode4,
-                                               tkwredefnode5,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               tattridnode8,
+                                               pvisibilitynode4,
+                                               tkwmethnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               tstringnode8,
                                                null,
                                                null,
-                                               ptypenode10,
-                                               pexprnode11
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction176
+private class ReduceAction172
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -7738,44 +8600,38 @@ private class ReduceAction176
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pablenode3 = nodearraylist2
-                                       assert pablenode3 isa nullable AAble
-                                       var pablenode4 = nodearraylist3
-                                       assert pablenode4 isa nullable AAble
-                                       var pvisibilitynode6 = nodearraylist4
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist5
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tattridnode8 = nodearraylist6
-                                       assert tattridnode8 isa nullable TAttrid
-                                       var ptypenode10 = nodearraylist7
-                                       assert ptypenode10 isa nullable AType
-                                       var pexprnode11 = nodearraylist10
-                                       assert pexprnode11 isa nullable AExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwmethnode5 = nodearraylist4
+                                       assert tkwmethnode5 isa nullable TKwmeth
+                                       var pmethidnode6 = nodearraylist5
+                                       assert pmethidnode6 isa nullable AMethid
+                                       var psignaturenode7 = nodearraylist6
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var tstringnode8 = nodearraylist9
+                                       assert tstringnode8 isa nullable TString
+                                       var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
                                                pdocnode2,
                                                pdocnode2,
-                                               pablenode3,
-                                               pablenode4,
-                                               null,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               tattridnode8,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwmethnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               tstringnode8,
                                                null,
                                                null,
-                                               ptypenode10,
-                                               pexprnode11
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction177
+private class ReduceAction173
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist11 = p.pop
-                                       var nodearraylist10 = p.pop
-                                       var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -7786,76 +8642,83 @@ private class ReduceAction177
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pablenode3 = nodearraylist2
-                                       assert pablenode3 isa nullable AAble
-                                       var pablenode4 = nodearraylist3
-                                       assert pablenode4 isa nullable AAble
-                                       var tkwredefnode5 = nodearraylist4
-                                       assert tkwredefnode5 isa nullable TKwredef
-                                       var pvisibilitynode6 = nodearraylist5
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist6
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tattridnode8 = nodearraylist7
-                                       assert tattridnode8 isa nullable TAttrid
-                                       var ptypenode10 = nodearraylist8
-                                       assert ptypenode10 isa nullable AType
-                                       var pexprnode11 = nodearraylist11
-                                       assert pexprnode11 isa nullable AExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                       var pvisibilitynode4 = nodearraylist2
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwmethnode5 = nodearraylist3
+                                       assert tkwmethnode5 isa nullable TKwmeth
+                                       var pmethidnode6 = nodearraylist4
+                                       assert pmethidnode6 isa nullable AMethid
+                                       var psignaturenode7 = nodearraylist5
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var pexterncallsnode9 = nodearraylist8
+                                       assert pexterncallsnode9 isa nullable AExternCalls
+                                       var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
                                                pdocnode2,
                                                pdocnode2,
-                                               pablenode3,
-                                               pablenode4,
-                                               tkwredefnode5,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               tattridnode8,
                                                null,
                                                null,
-                                               ptypenode10,
-                                               pexprnode11
+                                               pvisibilitynode4,
+                                               tkwmethnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               null,
+                                               pexterncallsnode9,
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction178
+private class ReduceAction174
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pvisibilitynode6 = nodearraylist2
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist3
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tidnode9 = nodearraylist4
-                                       assert tidnode9 isa nullable TId
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwmethnode5 = nodearraylist4
+                                       assert tkwmethnode5 isa nullable TKwmeth
+                                       var pmethidnode6 = nodearraylist5
+                                       assert pmethidnode6 isa nullable AMethid
+                                       var psignaturenode7 = nodearraylist6
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var pexterncallsnode9 = nodearraylist9
+                                       assert pexterncallsnode9 isa nullable AExternCalls
+                                       var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
                                                pdocnode2,
                                                pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwmethnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
                                                null,
                                                null,
-                                               null,
-                                               null,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               null,
-                                               tidnode9,
-                                               null,
+                                               pexterncallsnode9,
                                                null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                                null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction179
+private class ReduceAction175
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -7863,35 +8726,43 @@ private class ReduceAction179
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa nullable TKwredef
-                                       var pvisibilitynode6 = nodearraylist3
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist4
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tidnode9 = nodearraylist5
-                                       assert tidnode9 isa nullable TId
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                       var pvisibilitynode4 = nodearraylist2
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwmethnode5 = nodearraylist3
+                                       assert tkwmethnode5 isa nullable TKwmeth
+                                       var pmethidnode6 = nodearraylist4
+                                       assert pmethidnode6 isa nullable AMethid
+                                       var psignaturenode7 = nodearraylist5
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var tstringnode8 = nodearraylist8
+                                       assert tstringnode8 isa nullable TString
+                                       var pexterncallsnode9 = nodearraylist9
+                                       assert pexterncallsnode9 isa nullable AExternCalls
+                                       var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
                                                pdocnode2,
                                                null,
                                                pdocnode2,
                                                null,
-                                               null,
-                                               tkwredefnode5,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               null,
-                                               tidnode9,
-                                               null,
+                                               pvisibilitynode4,
+                                               tkwmethnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               tstringnode8,
+                                               pexterncallsnode9,
                                                null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                                null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction180
+private class ReduceAction176
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -7899,35 +8770,42 @@ private class ReduceAction180
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pvisibilitynode6 = nodearraylist2
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist3
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tidnode9 = nodearraylist4
-                                       assert tidnode9 isa nullable TId
-                                       var ptypenode10 = nodearraylist5
-                                       assert ptypenode10 isa nullable AType
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwmethnode5 = nodearraylist4
+                                       assert tkwmethnode5 isa nullable TKwmeth
+                                       var pmethidnode6 = nodearraylist5
+                                       assert pmethidnode6 isa nullable AMethid
+                                       var psignaturenode7 = nodearraylist6
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var tstringnode8 = nodearraylist9
+                                       assert tstringnode8 isa nullable TString
+                                       var pexterncallsnode9 = nodearraylist10
+                                       assert pexterncallsnode9 isa nullable AExternCalls
+                                       var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
                                                pdocnode2,
                                                pdocnode2,
-                                               null,
-                                               null,
-                                               null,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               null,
-                                               tidnode9,
-                                               ptypenode10,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwmethnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               tstringnode8,
+                                               pexterncallsnode9,
                                                null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                                null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction181
+private class ReduceAction177
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -7936,37 +8814,40 @@ private class ReduceAction181
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa nullable TKwredef
-                                       var pvisibilitynode6 = nodearraylist3
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist4
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tidnode9 = nodearraylist5
-                                       assert tidnode9 isa nullable TId
-                                       var ptypenode10 = nodearraylist6
-                                       assert ptypenode10 isa nullable AType
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                       var pvisibilitynode4 = nodearraylist2
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwmethnode5 = nodearraylist3
+                                       assert tkwmethnode5 isa nullable TKwmeth
+                                       var pmethidnode6 = nodearraylist4
+                                       assert pmethidnode6 isa nullable AMethid
+                                       var psignaturenode7 = nodearraylist5
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var pexterncodeblocknode10 = nodearraylist8
+                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
                                                pdocnode2,
                                                null,
                                                pdocnode2,
                                                null,
+                                               pvisibilitynode4,
+                                               tkwmethnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
                                                null,
                                                null,
-                                               tkwredefnode5,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
                                                null,
                                                null,
-                                               tidnode9,
-                                               ptypenode10,
-                                               null
+                                               pexterncodeblocknode10
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction182
+private class ReduceAction178
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -7974,35 +8855,41 @@ private class ReduceAction182
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pablenode4 = nodearraylist5
-                                       assert pablenode4 isa nullable AAble
-                                       var pvisibilitynode6 = nodearraylist2
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist3
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tidnode9 = nodearraylist4
-                                       assert tidnode9 isa nullable TId
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwmethnode5 = nodearraylist4
+                                       assert tkwmethnode5 isa nullable TKwmeth
+                                       var pmethidnode6 = nodearraylist5
+                                       assert pmethidnode6 isa nullable AMethid
+                                       var psignaturenode7 = nodearraylist6
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var pexterncodeblocknode10 = nodearraylist9
+                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
                                                pdocnode2,
                                                pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwmethnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
                                                null,
                                                null,
-                                               pablenode4,
-                                               null,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               null,
-                                               tidnode9,
                                                null,
                                                null,
-                                               null
+                                               pexterncodeblocknode10
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction183
+private class ReduceAction179
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -8011,37 +8898,42 @@ private class ReduceAction183
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pablenode4 = nodearraylist6
-                                       assert pablenode4 isa nullable AAble
-                                       var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa nullable TKwredef
-                                       var pvisibilitynode6 = nodearraylist3
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist4
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tidnode9 = nodearraylist5
-                                       assert tidnode9 isa nullable TId
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                       var pvisibilitynode4 = nodearraylist2
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwmethnode5 = nodearraylist3
+                                       assert tkwmethnode5 isa nullable TKwmeth
+                                       var pmethidnode6 = nodearraylist4
+                                       assert pmethidnode6 isa nullable AMethid
+                                       var psignaturenode7 = nodearraylist5
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var tstringnode8 = nodearraylist8
+                                       assert tstringnode8 isa nullable TString
+                                       var pexterncodeblocknode10 = nodearraylist9
+                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
                                                pdocnode2,
                                                null,
                                                pdocnode2,
                                                null,
-                                               pablenode4,
-                                               tkwredefnode5,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               null,
-                                               tidnode9,
+                                               pvisibilitynode4,
+                                               tkwmethnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               tstringnode8,
                                                null,
                                                null,
-                                               null
+                                               pexterncodeblocknode10
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction184
+private class ReduceAction180
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -8050,37 +8942,42 @@ private class ReduceAction184
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pablenode4 = nodearraylist6
-                                       assert pablenode4 isa nullable AAble
-                                       var pvisibilitynode6 = nodearraylist2
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist3
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tidnode9 = nodearraylist4
-                                       assert tidnode9 isa nullable TId
-                                       var ptypenode10 = nodearraylist5
-                                       assert ptypenode10 isa nullable AType
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwmethnode5 = nodearraylist4
+                                       assert tkwmethnode5 isa nullable TKwmeth
+                                       var pmethidnode6 = nodearraylist5
+                                       assert pmethidnode6 isa nullable AMethid
+                                       var psignaturenode7 = nodearraylist6
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var tstringnode8 = nodearraylist9
+                                       assert tstringnode8 isa nullable TString
+                                       var pexterncodeblocknode10 = nodearraylist10
+                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
                                                pdocnode2,
                                                pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwmethnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               tstringnode8,
                                                null,
                                                null,
-                                               pablenode4,
-                                               null,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               null,
-                                               tidnode9,
-                                               ptypenode10,
-                                               null
+                                               pexterncodeblocknode10
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction185
+private class ReduceAction181
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -8090,39 +8987,41 @@ private class ReduceAction185
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pablenode4 = nodearraylist7
-                                       assert pablenode4 isa nullable AAble
-                                       var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa nullable TKwredef
-                                       var pvisibilitynode6 = nodearraylist3
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist4
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tidnode9 = nodearraylist5
-                                       assert tidnode9 isa nullable TId
-                                       var ptypenode10 = nodearraylist6
-                                       assert ptypenode10 isa nullable AType
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                       var pvisibilitynode4 = nodearraylist2
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwmethnode5 = nodearraylist3
+                                       assert tkwmethnode5 isa nullable TKwmeth
+                                       var pmethidnode6 = nodearraylist4
+                                       assert pmethidnode6 isa nullable AMethid
+                                       var psignaturenode7 = nodearraylist5
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var pexterncallsnode9 = nodearraylist8
+                                       assert pexterncallsnode9 isa nullable AExternCalls
+                                       var pexterncodeblocknode10 = nodearraylist9
+                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
                                                pdocnode2,
                                                null,
                                                pdocnode2,
                                                null,
-                                               pablenode4,
-                                               tkwredefnode5,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
+                                               pvisibilitynode4,
+                                               tkwmethnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
                                                null,
                                                null,
-                                               tidnode9,
-                                               ptypenode10,
-                                               null
+                                               pexterncallsnode9,
+                                               pexterncodeblocknode10
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction186
+private class ReduceAction182
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -8132,35 +9031,42 @@ private class ReduceAction186
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pvisibilitynode6 = nodearraylist2
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist3
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tidnode9 = nodearraylist4
-                                       assert tidnode9 isa nullable TId
-                                       var pexprnode11 = nodearraylist7
-                                       assert pexprnode11 isa nullable AExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwmethnode5 = nodearraylist4
+                                       assert tkwmethnode5 isa nullable TKwmeth
+                                       var pmethidnode6 = nodearraylist5
+                                       assert pmethidnode6 isa nullable AMethid
+                                       var psignaturenode7 = nodearraylist6
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var pexterncallsnode9 = nodearraylist9
+                                       assert pexterncallsnode9 isa nullable AExternCalls
+                                       var pexterncodeblocknode10 = nodearraylist10
+                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
                                                pdocnode2,
                                                pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwmethnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
                                                null,
                                                null,
-                                               null,
-                                               null,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               null,
-                                               tidnode9,
-                                               null,
-                                               pexprnode11
+                                               pexterncallsnode9,
+                                               pexterncodeblocknode10
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction187
+private class ReduceAction183
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -8171,37 +9077,43 @@ private class ReduceAction187
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa nullable TKwredef
-                                       var pvisibilitynode6 = nodearraylist3
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist4
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tidnode9 = nodearraylist5
-                                       assert tidnode9 isa nullable TId
-                                       var pexprnode11 = nodearraylist8
-                                       assert pexprnode11 isa nullable AExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                       var pvisibilitynode4 = nodearraylist2
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwmethnode5 = nodearraylist3
+                                       assert tkwmethnode5 isa nullable TKwmeth
+                                       var pmethidnode6 = nodearraylist4
+                                       assert pmethidnode6 isa nullable AMethid
+                                       var psignaturenode7 = nodearraylist5
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var tstringnode8 = nodearraylist8
+                                       assert tstringnode8 isa nullable TString
+                                       var pexterncallsnode9 = nodearraylist9
+                                       assert pexterncallsnode9 isa nullable AExternCalls
+                                       var pexterncodeblocknode10 = nodearraylist10
+                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
                                                pdocnode2,
                                                null,
                                                pdocnode2,
                                                null,
-                                               null,
-                                               tkwredefnode5,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               null,
-                                               tidnode9,
-                                               null,
-                                               pexprnode11
+                                               pvisibilitynode4,
+                                               tkwmethnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               tstringnode8,
+                                               pexterncallsnode9,
+                                               pexterncodeblocknode10
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction188
+private class ReduceAction184
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -8212,40 +9124,42 @@ private class ReduceAction188
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pvisibilitynode6 = nodearraylist2
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist3
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tidnode9 = nodearraylist4
-                                       assert tidnode9 isa nullable TId
-                                       var ptypenode10 = nodearraylist5
-                                       assert ptypenode10 isa nullable AType
-                                       var pexprnode11 = nodearraylist8
-                                       assert pexprnode11 isa nullable AExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwmethnode5 = nodearraylist4
+                                       assert tkwmethnode5 isa nullable TKwmeth
+                                       var pmethidnode6 = nodearraylist5
+                                       assert pmethidnode6 isa nullable AMethid
+                                       var psignaturenode7 = nodearraylist6
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var tstringnode8 = nodearraylist9
+                                       assert tstringnode8 isa nullable TString
+                                       var pexterncallsnode9 = nodearraylist10
+                                       assert pexterncallsnode9 isa nullable AExternCalls
+                                       var pexterncodeblocknode10 = nodearraylist11
+                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
                                                pdocnode2,
                                                pdocnode2,
-                                               null,
-                                               null,
-                                               null,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               null,
-                                               tidnode9,
-                                               ptypenode10,
-                                               pexprnode11
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwmethnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               tstringnode8,
+                                               pexterncallsnode9,
+                                               pexterncodeblocknode10
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction189
+private class ReduceAction185
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -8254,40 +9168,36 @@ private class ReduceAction189
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa nullable TKwredef
-                                       var pvisibilitynode6 = nodearraylist3
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist4
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tidnode9 = nodearraylist5
-                                       assert tidnode9 isa nullable TId
-                                       var ptypenode10 = nodearraylist6
-                                       assert ptypenode10 isa nullable AType
-                                       var pexprnode11 = nodearraylist9
-                                       assert pexprnode11 isa nullable AExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                       var pvisibilitynode4 = nodearraylist2
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwmethnode5 = nodearraylist3
+                                       assert tkwmethnode5 isa nullable TKwmeth
+                                       var pmethidnode6 = nodearraylist4
+                                       assert pmethidnode6 isa nullable AMethid
+                                       var psignaturenode7 = nodearraylist5
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var pexterncodeblocknode10 = nodearraylist6
+                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
                                                pdocnode2,
                                                null,
                                                pdocnode2,
                                                null,
+                                               pvisibilitynode4,
+                                               tkwmethnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
                                                null,
                                                null,
-                                               tkwredefnode5,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
                                                null,
                                                null,
-                                               tidnode9,
-                                               ptypenode10,
-                                               pexprnode11
+                                               pexterncodeblocknode10
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction190
+private class ReduceAction186
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -8297,39 +9207,38 @@ private class ReduceAction190
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pablenode4 = nodearraylist5
-                                       assert pablenode4 isa nullable AAble
-                                       var pvisibilitynode6 = nodearraylist2
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist3
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tidnode9 = nodearraylist4
-                                       assert tidnode9 isa nullable TId
-                                       var pexprnode11 = nodearraylist8
-                                       assert pexprnode11 isa nullable AExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwmethnode5 = nodearraylist4
+                                       assert tkwmethnode5 isa nullable TKwmeth
+                                       var pmethidnode6 = nodearraylist5
+                                       assert pmethidnode6 isa nullable AMethid
+                                       var psignaturenode7 = nodearraylist6
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var pexterncodeblocknode10 = nodearraylist7
+                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
                                                pdocnode2,
                                                pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwmethnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
                                                null,
                                                null,
-                                               pablenode4,
-                                               null,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               null,
-                                               tidnode9,
                                                null,
                                                null,
-                                               pexprnode11
+                                               pexterncodeblocknode10
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction191
+private class ReduceAction187
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -8339,40 +9248,38 @@ private class ReduceAction191
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pablenode4 = nodearraylist6
-                                       assert pablenode4 isa nullable AAble
-                                       var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa nullable TKwredef
-                                       var pvisibilitynode6 = nodearraylist3
-                                       assert pvisibilitynode6 isa nullable AVisibility
-                                       var tkwvarnode7 = nodearraylist4
-                                       assert tkwvarnode7 isa nullable TKwvar
-                                       var tidnode9 = nodearraylist5
-                                       assert tidnode9 isa nullable TId
-                                       var pexprnode11 = nodearraylist9
-                                       assert pexprnode11 isa nullable AExpr
-                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                       var pvisibilitynode4 = nodearraylist2
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwmethnode5 = nodearraylist3
+                                       assert tkwmethnode5 isa nullable TKwmeth
+                                       var pmethidnode6 = nodearraylist4
+                                       assert pmethidnode6 isa nullable AMethid
+                                       var psignaturenode7 = nodearraylist5
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var pexterncallsnode9 = nodearraylist6
+                                       assert pexterncallsnode9 isa nullable AExternCalls
+                                       var pexterncodeblocknode10 = nodearraylist7
+                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
                                                pdocnode2,
                                                null,
                                                pdocnode2,
                                                null,
-                                               pablenode4,
-                                               tkwredefnode5,
-                                               pvisibilitynode6,
-                                               tkwvarnode7,
-                                               null,
-                                               tidnode9,
+                                               pvisibilitynode4,
+                                               tkwmethnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
                                                null,
                                                null,
-                                               pexprnode11
+                                               pexterncallsnode9,
+                                               pexterncodeblocknode10
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction192
+private class ReduceAction188
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -8383,44 +9290,74 @@ private class ReduceAction192
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pablenode4 = nodearraylist6
-                                       assert pablenode4 isa nullable AAble
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwmethnode5 = nodearraylist4
+                                       assert tkwmethnode5 isa nullable TKwmeth
+                                       var pmethidnode6 = nodearraylist5
+                                       assert pmethidnode6 isa nullable AMethid
+                                       var psignaturenode7 = nodearraylist6
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var pexterncallsnode9 = nodearraylist7
+                                       assert pexterncallsnode9 isa nullable AExternCalls
+                                       var pexterncodeblocknode10 = nodearraylist8
+                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwmethnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               null,
+                                               pexterncallsnode9,
+                                               pexterncodeblocknode10
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction189
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
                                        var pvisibilitynode6 = nodearraylist2
                                        assert pvisibilitynode6 isa nullable AVisibility
                                        var tkwvarnode7 = nodearraylist3
                                        assert tkwvarnode7 isa nullable TKwvar
                                        var pvisibilitynode6 = nodearraylist2
                                        assert pvisibilitynode6 isa nullable AVisibility
                                        var tkwvarnode7 = nodearraylist3
                                        assert tkwvarnode7 isa nullable TKwvar
-                                       var tidnode9 = nodearraylist4
-                                       assert tidnode9 isa nullable TId
-                                       var ptypenode10 = nodearraylist5
-                                       assert ptypenode10 isa nullable AType
-                                       var pexprnode11 = nodearraylist9
-                                       assert pexprnode11 isa nullable AExpr
+                                       var tattridnode8 = nodearraylist4
+                                       assert tattridnode8 isa nullable TAttrid
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
-                                               pablenode4,
+                                               null,
                                                null,
                                                pvisibilitynode6,
                                                tkwvarnode7,
                                                null,
                                                pvisibilitynode6,
                                                tkwvarnode7,
+                                               tattridnode8,
                                                null,
                                                null,
-                                               tidnode9,
-                                               ptypenode10,
-                                               pexprnode11
+                                               null,
+                                               null,
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction193
+private class ReduceAction190
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist10 = p.pop
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -8428,42 +9365,36 @@ private class ReduceAction193
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pablenode4 = nodearraylist7
-                                       assert pablenode4 isa nullable AAble
                                        var tkwredefnode5 = nodearraylist2
                                        assert tkwredefnode5 isa nullable TKwredef
                                        var pvisibilitynode6 = nodearraylist3
                                        assert pvisibilitynode6 isa nullable AVisibility
                                        var tkwvarnode7 = nodearraylist4
                                        assert tkwvarnode7 isa nullable TKwvar
                                        var tkwredefnode5 = nodearraylist2
                                        assert tkwredefnode5 isa nullable TKwredef
                                        var pvisibilitynode6 = nodearraylist3
                                        assert pvisibilitynode6 isa nullable AVisibility
                                        var tkwvarnode7 = nodearraylist4
                                        assert tkwvarnode7 isa nullable TKwvar
-                                       var tidnode9 = nodearraylist5
-                                       assert tidnode9 isa nullable TId
-                                       var ptypenode10 = nodearraylist6
-                                       assert ptypenode10 isa nullable AType
-                                       var pexprnode11 = nodearraylist10
-                                       assert pexprnode11 isa nullable AExpr
+                                       var tattridnode8 = nodearraylist5
+                                       assert tattridnode8 isa nullable TAttrid
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                        var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
-                                               pablenode4,
+                                               null,
                                                tkwredefnode5,
                                                pvisibilitynode6,
                                                tkwvarnode7,
                                                tkwredefnode5,
                                                pvisibilitynode6,
                                                tkwvarnode7,
+                                               tattridnode8,
                                                null,
                                                null,
-                                               tidnode9,
-                                               ptypenode10,
-                                               pexprnode11
+                                               null,
+                                               null,
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction194
+private class ReduceAction191
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -8471,33 +9402,36 @@ private class ReduceAction194
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwinitnode5 = nodearraylist3
-                                       assert tkwinitnode5 isa nullable TKwinit
-                                       var psignaturenode7 = nodearraylist4
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var pexprnode8 = nodearraylist6
-                                       assert pexprnode8 isa nullable AExpr
-                                       var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+                                       var pablenode3 = nodearraylist2
+                                       assert pablenode3 isa nullable AAble
+                                       var pvisibilitynode6 = nodearraylist3
+                                       assert pvisibilitynode6 isa nullable AVisibility
+                                       var tkwvarnode7 = nodearraylist4
+                                       assert tkwvarnode7 isa nullable TKwvar
+                                       var tattridnode8 = nodearraylist5
+                                       assert tattridnode8 isa nullable TAttrid
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pdocnode2,
+                                               pablenode3,
                                                null,
                                                null,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
                                                null,
                                                null,
-                                               psignaturenode7,
-                                               pexprnode8
+                                               pvisibilitynode6,
+                                               tkwvarnode7,
+                                               tattridnode8,
+                                               null,
+                                               null,
+                                               null,
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction195
+private class ReduceAction192
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -8506,36 +9440,38 @@ private class ReduceAction195
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwinitnode5 = nodearraylist4
-                                       assert tkwinitnode5 isa nullable TKwinit
-                                       var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var pexprnode8 = nodearraylist7
-                                       assert pexprnode8 isa nullable AExpr
-                                       var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+                                       var pablenode3 = nodearraylist2
+                                       assert pablenode3 isa nullable AAble
+                                       var tkwredefnode5 = nodearraylist3
+                                       assert tkwredefnode5 isa nullable TKwredef
+                                       var pvisibilitynode6 = nodearraylist4
+                                       assert pvisibilitynode6 isa nullable AVisibility
+                                       var tkwvarnode7 = nodearraylist5
+                                       assert tkwvarnode7 isa nullable TKwvar
+                                       var tattridnode8 = nodearraylist6
+                                       assert tattridnode8 isa nullable TAttrid
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
+                                               pablenode3,
                                                null,
                                                null,
-                                               psignaturenode7,
-                                               pexprnode8
+                                               tkwredefnode5,
+                                               pvisibilitynode6,
+                                               tkwvarnode7,
+                                               tattridnode8,
+                                               null,
+                                               null,
+                                               null,
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction196
+private class ReduceAction193
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -8543,36 +9479,36 @@ private class ReduceAction196
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwinitnode5 = nodearraylist3
-                                       assert tkwinitnode5 isa nullable TKwinit
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var pexprnode8 = nodearraylist7
-                                       assert pexprnode8 isa nullable AExpr
-                                       var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+                                       var pablenode4 = nodearraylist2
+                                       assert pablenode4 isa nullable AAble
+                                       var pvisibilitynode6 = nodearraylist3
+                                       assert pvisibilitynode6 isa nullable AVisibility
+                                       var tkwvarnode7 = nodearraylist4
+                                       assert tkwvarnode7 isa nullable TKwvar
+                                       var tattridnode8 = nodearraylist5
+                                       assert tattridnode8 isa nullable TAttrid
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pdocnode2,
                                                null,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode8
+                                               pablenode4,
+                                               null,
+                                               pvisibilitynode6,
+                                               tkwvarnode7,
+                                               tattridnode8,
+                                               null,
+                                               null,
+                                               null,
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction197
+private class ReduceAction194
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -8581,37 +9517,38 @@ private class ReduceAction197
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwinitnode5 = nodearraylist4
-                                       assert tkwinitnode5 isa nullable TKwinit
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var pexprnode8 = nodearraylist8
-                                       assert pexprnode8 isa nullable AExpr
-                                       var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+                                       var pablenode4 = nodearraylist2
+                                       assert pablenode4 isa nullable AAble
+                                       var tkwredefnode5 = nodearraylist3
+                                       assert tkwredefnode5 isa nullable TKwredef
+                                       var pvisibilitynode6 = nodearraylist4
+                                       assert pvisibilitynode6 isa nullable AVisibility
+                                       var tkwvarnode7 = nodearraylist5
+                                       assert tkwvarnode7 isa nullable TKwvar
+                                       var tattridnode8 = nodearraylist6
+                                       assert tattridnode8 isa nullable TAttrid
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode8
-                                       )
+                                               null,
+                                               pablenode4,
+                                               tkwredefnode5,
+                                               pvisibilitynode6,
+                                               tkwvarnode7,
+                                               tattridnode8,
+                                               null,
+                                               null,
+                                               null,
+                                               null
+                                       )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction198
+private class ReduceAction195
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -8620,33 +9557,38 @@ private class ReduceAction198
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwinitnode5 = nodearraylist3
-                                       assert tkwinitnode5 isa nullable TKwinit
-                                       var psignaturenode7 = nodearraylist4
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var pexprnode8 = nodearraylist6
-                                       assert pexprnode8 isa nullable AExpr
-                                       var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+                                       var pablenode3 = nodearraylist2
+                                       assert pablenode3 isa nullable AAble
+                                       var pablenode4 = nodearraylist3
+                                       assert pablenode4 isa nullable AAble
+                                       var pvisibilitynode6 = nodearraylist4
+                                       assert pvisibilitynode6 isa nullable AVisibility
+                                       var tkwvarnode7 = nodearraylist5
+                                       assert tkwvarnode7 isa nullable TKwvar
+                                       var tattridnode8 = nodearraylist6
+                                       assert tattridnode8 isa nullable TAttrid
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pdocnode2,
+                                               pablenode3,
+                                               pablenode4,
                                                null,
                                                null,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
+                                               pvisibilitynode6,
+                                               tkwvarnode7,
+                                               tattridnode8,
                                                null,
                                                null,
-                                               psignaturenode7,
-                                               pexprnode8
+                                               null,
+                                               null,
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction199
+private class ReduceAction196
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -8656,37 +9598,40 @@ private class ReduceAction199
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwinitnode5 = nodearraylist4
-                                       assert tkwinitnode5 isa nullable TKwinit
-                                       var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var pexprnode8 = nodearraylist7
-                                       assert pexprnode8 isa nullable AExpr
-                                       var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+                                       var pablenode3 = nodearraylist2
+                                       assert pablenode3 isa nullable AAble
+                                       var pablenode4 = nodearraylist3
+                                       assert pablenode4 isa nullable AAble
+                                       var tkwredefnode5 = nodearraylist4
+                                       assert tkwredefnode5 isa nullable TKwredef
+                                       var pvisibilitynode6 = nodearraylist5
+                                       assert pvisibilitynode6 isa nullable AVisibility
+                                       var tkwvarnode7 = nodearraylist6
+                                       assert tkwvarnode7 isa nullable TKwvar
+                                       var tattridnode8 = nodearraylist7
+                                       assert tattridnode8 isa nullable TAttrid
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
+                                               pablenode3,
+                                               pablenode4,
+                                               tkwredefnode5,
+                                               pvisibilitynode6,
+                                               tkwvarnode7,
+                                               tattridnode8,
                                                null,
                                                null,
-                                               psignaturenode7,
-                                               pexprnode8
+                                               null,
+                                               null,
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction200
+private class ReduceAction197
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -8694,37 +9639,36 @@ private class ReduceAction200
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwinitnode5 = nodearraylist3
-                                       assert tkwinitnode5 isa nullable TKwinit
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var pexprnode8 = nodearraylist7
-                                       assert pexprnode8 isa nullable AExpr
-                                       var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+                                       var pvisibilitynode6 = nodearraylist2
+                                       assert pvisibilitynode6 isa nullable AVisibility
+                                       var tkwvarnode7 = nodearraylist3
+                                       assert tkwvarnode7 isa nullable TKwvar
+                                       var tattridnode8 = nodearraylist4
+                                       assert tattridnode8 isa nullable TAttrid
+                                       var ptypenode10 = nodearraylist5
+                                       assert ptypenode10 isa nullable AType
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pdocnode2,
                                                null,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode8
+                                               null,
+                                               null,
+                                               pvisibilitynode6,
+                                               tkwvarnode7,
+                                               tattridnode8,
+                                               null,
+                                               ptypenode10,
+                                               null,
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction201
+private class ReduceAction198
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -8733,36 +9677,39 @@ private class ReduceAction201
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwinitnode5 = nodearraylist4
-                                       assert tkwinitnode5 isa nullable TKwinit
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var pexprnode8 = nodearraylist8
-                                       assert pexprnode8 isa nullable AExpr
-                                       var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+                                       var tkwredefnode5 = nodearraylist2
+                                       assert tkwredefnode5 isa nullable TKwredef
+                                       var pvisibilitynode6 = nodearraylist3
+                                       assert pvisibilitynode6 isa nullable AVisibility
+                                       var tkwvarnode7 = nodearraylist4
+                                       assert tkwvarnode7 isa nullable TKwvar
+                                       var tattridnode8 = nodearraylist5
+                                       assert tattridnode8 isa nullable TAttrid
+                                       var ptypenode10 = nodearraylist6
+                                       assert ptypenode10 isa nullable AType
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwinitnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               pexprnode8
+                                               null,
+                                               null,
+                                               tkwredefnode5,
+                                               pvisibilitynode6,
+                                               tkwvarnode7,
+                                               tattridnode8,
+                                               null,
+                                               ptypenode10,
+                                               null,
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction202
+private class ReduceAction199
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -8770,31 +9717,39 @@ private class ReduceAction202
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwtypenode5 = nodearraylist3
-                                       assert tkwtypenode5 isa nullable TKwtype
-                                       var tclassidnode6 = nodearraylist4
-                                       assert tclassidnode6 isa nullable TClassid
-                                       var ptypenode7 = nodearraylist5
-                                       assert ptypenode7 isa nullable AType
-                                       var ppropdefnode1: nullable ATypePropdef = new ATypePropdef.init_atypepropdef(
+                                       var pablenode3 = nodearraylist2
+                                       assert pablenode3 isa nullable AAble
+                                       var pvisibilitynode6 = nodearraylist3
+                                       assert pvisibilitynode6 isa nullable AVisibility
+                                       var tkwvarnode7 = nodearraylist4
+                                       assert tkwvarnode7 isa nullable TKwvar
+                                       var tattridnode8 = nodearraylist5
+                                       assert tattridnode8 isa nullable TAttrid
+                                       var ptypenode10 = nodearraylist6
+                                       assert ptypenode10 isa nullable AType
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pdocnode2,
+                                               pablenode3,
                                                null,
                                                null,
-                                               pvisibilitynode4,
-                                               tkwtypenode5,
-                                               tclassidnode6,
-                                               ptypenode7
+                                               null,
+                                               pvisibilitynode6,
+                                               tkwvarnode7,
+                                               tattridnode8,
+                                               null,
+                                               ptypenode10,
+                                               null,
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction203
+private class ReduceAction200
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -8803,29 +9758,36 @@ private class ReduceAction203
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwtypenode5 = nodearraylist4
-                                       assert tkwtypenode5 isa nullable TKwtype
-                                       var tclassidnode6 = nodearraylist5
-                                       assert tclassidnode6 isa nullable TClassid
-                                       var ptypenode7 = nodearraylist6
-                                       assert ptypenode7 isa nullable AType
-                                       var ppropdefnode1: nullable ATypePropdef = new ATypePropdef.init_atypepropdef(
+                                       var pablenode3 = nodearraylist2
+                                       assert pablenode3 isa nullable AAble
+                                       var tkwredefnode5 = nodearraylist3
+                                       assert tkwredefnode5 isa nullable TKwredef
+                                       var pvisibilitynode6 = nodearraylist4
+                                       assert pvisibilitynode6 isa nullable AVisibility
+                                       var tkwvarnode7 = nodearraylist5
+                                       assert tkwvarnode7 isa nullable TKwvar
+                                       var tattridnode8 = nodearraylist6
+                                       assert tattridnode8 isa nullable TAttrid
+                                       var ptypenode10 = nodearraylist7
+                                       assert ptypenode10 isa nullable AType
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwtypenode5,
-                                               tclassidnode6,
-                                               ptypenode7
+                                               pablenode3,
+                                               null,
+                                               tkwredefnode5,
+                                               pvisibilitynode6,
+                                               tkwvarnode7,
+                                               tattridnode8,
+                                               null,
+                                               ptypenode10,
+                                               null,
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction204
+private class ReduceAction201
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -8838,20 +9800,26 @@ private class ReduceAction204
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwnewnode5 = nodearraylist3
-                                       assert tkwnewnode5 isa nullable TKwnew
-                                       var psignaturenode7 = nodearraylist4
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                       var pablenode4 = nodearraylist2
+                                       assert pablenode4 isa nullable AAble
+                                       var pvisibilitynode6 = nodearraylist3
+                                       assert pvisibilitynode6 isa nullable AVisibility
+                                       var tkwvarnode7 = nodearraylist4
+                                       assert tkwvarnode7 isa nullable TKwvar
+                                       var tattridnode8 = nodearraylist5
+                                       assert tattridnode8 isa nullable TAttrid
+                                       var ptypenode10 = nodearraylist6
+                                       assert ptypenode10 isa nullable AType
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pdocnode2,
                                                null,
-                                               pvisibilitynode4,
-                                               tkwnewnode5,
+                                               pablenode4,
                                                null,
                                                null,
-                                               psignaturenode7,
+                                               pvisibilitynode6,
+                                               tkwvarnode7,
+                                               tattridnode8,
                                                null,
                                                null,
+                                               ptypenode10,
                                                null,
                                                null
                                        )
                                                null,
                                                null
                                        )
@@ -8859,7 +9827,7 @@ private class ReduceAction204
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction205
+private class ReduceAction202
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -8873,22 +9841,28 @@ private class ReduceAction205
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwnewnode5 = nodearraylist4
-                                       assert tkwnewnode5 isa nullable TKwnew
-                                       var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                       var pablenode4 = nodearraylist2
+                                       assert pablenode4 isa nullable AAble
+                                       var tkwredefnode5 = nodearraylist3
+                                       assert tkwredefnode5 isa nullable TKwredef
+                                       var pvisibilitynode6 = nodearraylist4
+                                       assert pvisibilitynode6 isa nullable AVisibility
+                                       var tkwvarnode7 = nodearraylist5
+                                       assert tkwvarnode7 isa nullable TKwvar
+                                       var tattridnode8 = nodearraylist6
+                                       assert tattridnode8 isa nullable TAttrid
+                                       var ptypenode10 = nodearraylist7
+                                       assert ptypenode10 isa nullable AType
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwnewnode5,
                                                null,
                                                null,
-                                               psignaturenode7,
+                                               pablenode4,
+                                               tkwredefnode5,
+                                               pvisibilitynode6,
+                                               tkwvarnode7,
+                                               tattridnode8,
                                                null,
                                                null,
+                                               ptypenode10,
                                                null,
                                                null
                                        )
                                                null,
                                                null
                                        )
@@ -8896,7 +9870,7 @@ private class ReduceAction205
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction206
+private class ReduceAction203
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -8910,22 +9884,28 @@ private class ReduceAction206
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwnewnode5 = nodearraylist3
-                                       assert tkwnewnode5 isa nullable TKwnew
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                       var pablenode3 = nodearraylist2
+                                       assert pablenode3 isa nullable AAble
+                                       var pablenode4 = nodearraylist3
+                                       assert pablenode4 isa nullable AAble
+                                       var pvisibilitynode6 = nodearraylist4
+                                       assert pvisibilitynode6 isa nullable AVisibility
+                                       var tkwvarnode7 = nodearraylist5
+                                       assert tkwvarnode7 isa nullable TKwvar
+                                       var tattridnode8 = nodearraylist6
+                                       assert tattridnode8 isa nullable TAttrid
+                                       var ptypenode10 = nodearraylist7
+                                       assert ptypenode10 isa nullable AType
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pdocnode2,
+                                               pablenode3,
+                                               pablenode4,
                                                null,
                                                null,
-                                               pvisibilitynode4,
-                                               tkwnewnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
+                                               pvisibilitynode6,
+                                               tkwvarnode7,
+                                               tattridnode8,
                                                null,
                                                null,
+                                               ptypenode10,
                                                null,
                                                null
                                        )
                                                null,
                                                null
                                        )
@@ -8933,7 +9913,7 @@ private class ReduceAction206
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction207
+private class ReduceAction204
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -8948,24 +9928,30 @@ private class ReduceAction207
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwnewnode5 = nodearraylist4
-                                       assert tkwnewnode5 isa nullable TKwnew
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                       var pablenode3 = nodearraylist2
+                                       assert pablenode3 isa nullable AAble
+                                       var pablenode4 = nodearraylist3
+                                       assert pablenode4 isa nullable AAble
+                                       var tkwredefnode5 = nodearraylist4
+                                       assert tkwredefnode5 isa nullable TKwredef
+                                       var pvisibilitynode6 = nodearraylist5
+                                       assert pvisibilitynode6 isa nullable AVisibility
+                                       var tkwvarnode7 = nodearraylist6
+                                       assert tkwvarnode7 isa nullable TKwvar
+                                       var tattridnode8 = nodearraylist7
+                                       assert tattridnode8 isa nullable TAttrid
+                                       var ptypenode10 = nodearraylist8
+                                       assert ptypenode10 isa nullable AType
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwnewnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
+                                               pablenode3,
+                                               pablenode4,
+                                               tkwredefnode5,
+                                               pvisibilitynode6,
+                                               tkwvarnode7,
+                                               tattridnode8,
                                                null,
                                                null,
+                                               ptypenode10,
                                                null,
                                                null
                                        )
                                                null,
                                                null
                                        )
@@ -8973,7 +9959,7 @@ private class ReduceAction207
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction208
+private class ReduceAction205
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -8987,30 +9973,32 @@ private class ReduceAction208
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwnewnode5 = nodearraylist3
-                                       assert tkwnewnode5 isa nullable TKwnew
-                                       var psignaturenode7 = nodearraylist4
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var tstringnode8 = nodearraylist7
-                                       assert tstringnode8 isa nullable TString
-                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                       var pvisibilitynode6 = nodearraylist2
+                                       assert pvisibilitynode6 isa nullable AVisibility
+                                       var tkwvarnode7 = nodearraylist3
+                                       assert tkwvarnode7 isa nullable TKwvar
+                                       var tattridnode8 = nodearraylist4
+                                       assert tattridnode8 isa nullable TAttrid
+                                       var pexprnode12 = nodearraylist7
+                                       assert pexprnode12 isa nullable AExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pdocnode2,
                                                null,
-                                               pvisibilitynode4,
-                                               tkwnewnode5,
                                                null,
                                                null,
-                                               psignaturenode7,
-                                               tstringnode8,
                                                null,
                                                null,
-                                               null
+                                               pvisibilitynode6,
+                                               tkwvarnode7,
+                                               tattridnode8,
+                                               null,
+                                               null,
+                                               null,
+                                               pexprnode12
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction209
+private class ReduceAction206
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -9025,32 +10013,34 @@ private class ReduceAction209
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwnewnode5 = nodearraylist4
-                                       assert tkwnewnode5 isa nullable TKwnew
-                                       var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var tstringnode8 = nodearraylist8
-                                       assert tstringnode8 isa nullable TString
-                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                       var tkwredefnode5 = nodearraylist2
+                                       assert tkwredefnode5 isa nullable TKwredef
+                                       var pvisibilitynode6 = nodearraylist3
+                                       assert pvisibilitynode6 isa nullable AVisibility
+                                       var tkwvarnode7 = nodearraylist4
+                                       assert tkwvarnode7 isa nullable TKwvar
+                                       var tattridnode8 = nodearraylist5
+                                       assert tattridnode8 isa nullable TAttrid
+                                       var pexprnode12 = nodearraylist8
+                                       assert pexprnode12 isa nullable AExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwnewnode5,
                                                null,
                                                null,
-                                               psignaturenode7,
-                                               tstringnode8,
                                                null,
                                                null,
-                                               null
+                                               tkwredefnode5,
+                                               pvisibilitynode6,
+                                               tkwvarnode7,
+                                               tattridnode8,
+                                               null,
+                                               null,
+                                               null,
+                                               pexprnode12
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction210
+private class ReduceAction207
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -9065,32 +10055,34 @@ private class ReduceAction210
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwnewnode5 = nodearraylist3
-                                       assert tkwnewnode5 isa nullable TKwnew
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var tstringnode8 = nodearraylist8
-                                       assert tstringnode8 isa nullable TString
-                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                       var pablenode3 = nodearraylist2
+                                       assert pablenode3 isa nullable AAble
+                                       var pvisibilitynode6 = nodearraylist3
+                                       assert pvisibilitynode6 isa nullable AVisibility
+                                       var tkwvarnode7 = nodearraylist4
+                                       assert tkwvarnode7 isa nullable TKwvar
+                                       var tattridnode8 = nodearraylist5
+                                       assert tattridnode8 isa nullable TAttrid
+                                       var pexprnode12 = nodearraylist8
+                                       assert pexprnode12 isa nullable AExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pdocnode2,
+                                               pablenode3,
                                                null,
                                                null,
-                                               pvisibilitynode4,
-                                               tkwnewnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               tstringnode8,
                                                null,
                                                null,
-                                               null
+                                               pvisibilitynode6,
+                                               tkwvarnode7,
+                                               tattridnode8,
+                                               null,
+                                               null,
+                                               null,
+                                               pexprnode12
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction211
+private class ReduceAction208
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -9106,38 +10098,41 @@ private class ReduceAction211
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwnewnode5 = nodearraylist4
-                                       assert tkwnewnode5 isa nullable TKwnew
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var tstringnode8 = nodearraylist9
-                                       assert tstringnode8 isa nullable TString
-                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                       var pablenode3 = nodearraylist2
+                                       assert pablenode3 isa nullable AAble
+                                       var tkwredefnode5 = nodearraylist3
+                                       assert tkwredefnode5 isa nullable TKwredef
+                                       var pvisibilitynode6 = nodearraylist4
+                                       assert pvisibilitynode6 isa nullable AVisibility
+                                       var tkwvarnode7 = nodearraylist5
+                                       assert tkwvarnode7 isa nullable TKwvar
+                                       var tattridnode8 = nodearraylist6
+                                       assert tattridnode8 isa nullable TAttrid
+                                       var pexprnode12 = nodearraylist9
+                                       assert pexprnode12 isa nullable AExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwnewnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               tstringnode8,
+                                               pablenode3,
                                                null,
                                                null,
-                                               null
+                                               tkwredefnode5,
+                                               pvisibilitynode6,
+                                               tkwvarnode7,
+                                               tattridnode8,
+                                               null,
+                                               null,
+                                               null,
+                                               pexprnode12
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction212
+private class ReduceAction209
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -9147,34 +10142,39 @@ private class ReduceAction212
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwnewnode5 = nodearraylist3
-                                       assert tkwnewnode5 isa nullable TKwnew
-                                       var psignaturenode7 = nodearraylist4
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var pexterncallsnode9 = nodearraylist7
-                                       assert pexterncallsnode9 isa nullable AExternCalls
-                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                       var pablenode4 = nodearraylist2
+                                       assert pablenode4 isa nullable AAble
+                                       var pvisibilitynode6 = nodearraylist3
+                                       assert pvisibilitynode6 isa nullable AVisibility
+                                       var tkwvarnode7 = nodearraylist4
+                                       assert tkwvarnode7 isa nullable TKwvar
+                                       var tattridnode8 = nodearraylist5
+                                       assert tattridnode8 isa nullable TAttrid
+                                       var pexprnode12 = nodearraylist8
+                                       assert pexprnode12 isa nullable AExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pdocnode2,
                                                null,
-                                               pvisibilitynode4,
-                                               tkwnewnode5,
+                                               pablenode4,
                                                null,
                                                null,
-                                               psignaturenode7,
+                                               pvisibilitynode6,
+                                               tkwvarnode7,
+                                               tattridnode8,
                                                null,
                                                null,
-                                               pexterncallsnode9,
-                                               null
+                                               null,
+                                               null,
+                                               pexprnode12
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction213
+private class ReduceAction210
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -9185,36 +10185,41 @@ private class ReduceAction213
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwnewnode5 = nodearraylist4
-                                       assert tkwnewnode5 isa nullable TKwnew
-                                       var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var pexterncallsnode9 = nodearraylist8
-                                       assert pexterncallsnode9 isa nullable AExternCalls
-                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                       var pablenode4 = nodearraylist2
+                                       assert pablenode4 isa nullable AAble
+                                       var tkwredefnode5 = nodearraylist3
+                                       assert tkwredefnode5 isa nullable TKwredef
+                                       var pvisibilitynode6 = nodearraylist4
+                                       assert pvisibilitynode6 isa nullable AVisibility
+                                       var tkwvarnode7 = nodearraylist5
+                                       assert tkwvarnode7 isa nullable TKwvar
+                                       var tattridnode8 = nodearraylist6
+                                       assert tattridnode8 isa nullable TAttrid
+                                       var pexprnode12 = nodearraylist9
+                                       assert pexprnode12 isa nullable AExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwnewnode5,
                                                null,
                                                null,
-                                               psignaturenode7,
+                                               pablenode4,
+                                               tkwredefnode5,
+                                               pvisibilitynode6,
+                                               tkwvarnode7,
+                                               tattridnode8,
                                                null,
                                                null,
-                                               pexterncallsnode9,
-                                               null
+                                               null,
+                                               null,
+                                               pexprnode12
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction214
+private class ReduceAction211
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -9225,36 +10230,41 @@ private class ReduceAction214
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwnewnode5 = nodearraylist3
-                                       assert tkwnewnode5 isa nullable TKwnew
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var pexterncallsnode9 = nodearraylist8
-                                       assert pexterncallsnode9 isa nullable AExternCalls
-                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                       var pablenode3 = nodearraylist2
+                                       assert pablenode3 isa nullable AAble
+                                       var pablenode4 = nodearraylist3
+                                       assert pablenode4 isa nullable AAble
+                                       var pvisibilitynode6 = nodearraylist4
+                                       assert pvisibilitynode6 isa nullable AVisibility
+                                       var tkwvarnode7 = nodearraylist5
+                                       assert tkwvarnode7 isa nullable TKwvar
+                                       var tattridnode8 = nodearraylist6
+                                       assert tattridnode8 isa nullable TAttrid
+                                       var pexprnode12 = nodearraylist9
+                                       assert pexprnode12 isa nullable AExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pdocnode2,
+                                               pablenode3,
+                                               pablenode4,
                                                null,
                                                null,
-                                               pvisibilitynode4,
-                                               tkwnewnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
+                                               pvisibilitynode6,
+                                               tkwvarnode7,
+                                               tattridnode8,
                                                null,
                                                null,
-                                               pexterncallsnode9,
-                                               null
+                                               null,
+                                               null,
+                                               pexprnode12
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction215
+private class ReduceAction212
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -9266,34 +10276,38 @@ private class ReduceAction215
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwnewnode5 = nodearraylist4
-                                       assert tkwnewnode5 isa nullable TKwnew
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var pexterncallsnode9 = nodearraylist9
-                                       assert pexterncallsnode9 isa nullable AExternCalls
-                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                       var pablenode3 = nodearraylist2
+                                       assert pablenode3 isa nullable AAble
+                                       var pablenode4 = nodearraylist3
+                                       assert pablenode4 isa nullable AAble
+                                       var tkwredefnode5 = nodearraylist4
+                                       assert tkwredefnode5 isa nullable TKwredef
+                                       var pvisibilitynode6 = nodearraylist5
+                                       assert pvisibilitynode6 isa nullable AVisibility
+                                       var tkwvarnode7 = nodearraylist6
+                                       assert tkwvarnode7 isa nullable TKwvar
+                                       var tattridnode8 = nodearraylist7
+                                       assert tattridnode8 isa nullable TAttrid
+                                       var pexprnode12 = nodearraylist10
+                                       assert pexprnode12 isa nullable AExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwnewnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
+                                               pablenode3,
+                                               pablenode4,
+                                               tkwredefnode5,
+                                               pvisibilitynode6,
+                                               tkwvarnode7,
+                                               tattridnode8,
                                                null,
                                                null,
-                                               pexterncallsnode9,
-                                               null
+                                               null,
+                                               null,
+                                               pexprnode12
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction216
+private class ReduceAction213
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -9308,32 +10322,34 @@ private class ReduceAction216
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwnewnode5 = nodearraylist3
-                                       assert tkwnewnode5 isa nullable TKwnew
-                                       var psignaturenode7 = nodearraylist4
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var tstringnode8 = nodearraylist7
-                                       assert tstringnode8 isa nullable TString
-                                       var pexterncallsnode9 = nodearraylist8
-                                       assert pexterncallsnode9 isa nullable AExternCalls
-                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                       var pvisibilitynode6 = nodearraylist2
+                                       assert pvisibilitynode6 isa nullable AVisibility
+                                       var tkwvarnode7 = nodearraylist3
+                                       assert tkwvarnode7 isa nullable TKwvar
+                                       var tattridnode8 = nodearraylist4
+                                       assert tattridnode8 isa nullable TAttrid
+                                       var ptypenode10 = nodearraylist5
+                                       assert ptypenode10 isa nullable AType
+                                       var pexprnode12 = nodearraylist8
+                                       assert pexprnode12 isa nullable AExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pdocnode2,
                                                null,
-                                               pvisibilitynode4,
-                                               tkwnewnode5,
                                                null,
                                                null,
-                                               psignaturenode7,
-                                               tstringnode8,
-                                               pexterncallsnode9,
-                                               null
+                                               null,
+                                               pvisibilitynode6,
+                                               tkwvarnode7,
+                                               tattridnode8,
+                                               null,
+                                               ptypenode10,
+                                               null,
+                                               pexprnode12
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction217
+private class ReduceAction214
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -9349,34 +10365,36 @@ private class ReduceAction217
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwnewnode5 = nodearraylist4
-                                       assert tkwnewnode5 isa nullable TKwnew
-                                       var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var tstringnode8 = nodearraylist8
-                                       assert tstringnode8 isa nullable TString
-                                       var pexterncallsnode9 = nodearraylist9
-                                       assert pexterncallsnode9 isa nullable AExternCalls
-                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                       var tkwredefnode5 = nodearraylist2
+                                       assert tkwredefnode5 isa nullable TKwredef
+                                       var pvisibilitynode6 = nodearraylist3
+                                       assert pvisibilitynode6 isa nullable AVisibility
+                                       var tkwvarnode7 = nodearraylist4
+                                       assert tkwvarnode7 isa nullable TKwvar
+                                       var tattridnode8 = nodearraylist5
+                                       assert tattridnode8 isa nullable TAttrid
+                                       var ptypenode10 = nodearraylist6
+                                       assert ptypenode10 isa nullable AType
+                                       var pexprnode12 = nodearraylist9
+                                       assert pexprnode12 isa nullable AExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwnewnode5,
                                                null,
                                                null,
-                                               psignaturenode7,
-                                               tstringnode8,
-                                               pexterncallsnode9,
-                                               null
+                                               null,
+                                               tkwredefnode5,
+                                               pvisibilitynode6,
+                                               tkwvarnode7,
+                                               tattridnode8,
+                                               null,
+                                               ptypenode10,
+                                               null,
+                                               pexprnode12
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction218
+private class ReduceAction215
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -9392,34 +10410,36 @@ private class ReduceAction218
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwnewnode5 = nodearraylist3
-                                       assert tkwnewnode5 isa nullable TKwnew
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var tstringnode8 = nodearraylist8
-                                       assert tstringnode8 isa nullable TString
-                                       var pexterncallsnode9 = nodearraylist9
-                                       assert pexterncallsnode9 isa nullable AExternCalls
-                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                       var pablenode3 = nodearraylist2
+                                       assert pablenode3 isa nullable AAble
+                                       var pvisibilitynode6 = nodearraylist3
+                                       assert pvisibilitynode6 isa nullable AVisibility
+                                       var tkwvarnode7 = nodearraylist4
+                                       assert tkwvarnode7 isa nullable TKwvar
+                                       var tattridnode8 = nodearraylist5
+                                       assert tattridnode8 isa nullable TAttrid
+                                       var ptypenode10 = nodearraylist6
+                                       assert ptypenode10 isa nullable AType
+                                       var pexprnode12 = nodearraylist9
+                                       assert pexprnode12 isa nullable AExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pdocnode2,
+                                               pablenode3,
                                                null,
                                                null,
-                                               pvisibilitynode4,
-                                               tkwnewnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               tstringnode8,
-                                               pexterncallsnode9,
-                                               null
+                                               null,
+                                               pvisibilitynode6,
+                                               tkwvarnode7,
+                                               tattridnode8,
+                                               null,
+                                               ptypenode10,
+                                               null,
+                                               pexprnode12
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction219
+private class ReduceAction216
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -9436,40 +10456,44 @@ private class ReduceAction219
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwnewnode5 = nodearraylist4
-                                       assert tkwnewnode5 isa nullable TKwnew
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var tstringnode8 = nodearraylist9
-                                       assert tstringnode8 isa nullable TString
-                                       var pexterncallsnode9 = nodearraylist10
-                                       assert pexterncallsnode9 isa nullable AExternCalls
-                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                       var pablenode3 = nodearraylist2
+                                       assert pablenode3 isa nullable AAble
+                                       var tkwredefnode5 = nodearraylist3
+                                       assert tkwredefnode5 isa nullable TKwredef
+                                       var pvisibilitynode6 = nodearraylist4
+                                       assert pvisibilitynode6 isa nullable AVisibility
+                                       var tkwvarnode7 = nodearraylist5
+                                       assert tkwvarnode7 isa nullable TKwvar
+                                       var tattridnode8 = nodearraylist6
+                                       assert tattridnode8 isa nullable TAttrid
+                                       var ptypenode10 = nodearraylist7
+                                       assert ptypenode10 isa nullable AType
+                                       var pexprnode12 = nodearraylist10
+                                       assert pexprnode12 isa nullable AExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwnewnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               tstringnode8,
-                                               pexterncallsnode9,
-                                               null
+                                               pablenode3,
+                                               null,
+                                               tkwredefnode5,
+                                               pvisibilitynode6,
+                                               tkwvarnode7,
+                                               tattridnode8,
+                                               null,
+                                               ptypenode10,
+                                               null,
+                                               pexprnode12
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction220
+private class ReduceAction217
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -9479,34 +10503,42 @@ private class ReduceAction220
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwnewnode5 = nodearraylist3
-                                       assert tkwnewnode5 isa nullable TKwnew
-                                       var psignaturenode7 = nodearraylist4
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var pexterncodeblocknode10 = nodearraylist7
-                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
-                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                       var pablenode4 = nodearraylist2
+                                       assert pablenode4 isa nullable AAble
+                                       var pvisibilitynode6 = nodearraylist3
+                                       assert pvisibilitynode6 isa nullable AVisibility
+                                       var tkwvarnode7 = nodearraylist4
+                                       assert tkwvarnode7 isa nullable TKwvar
+                                       var tattridnode8 = nodearraylist5
+                                       assert tattridnode8 isa nullable TAttrid
+                                       var ptypenode10 = nodearraylist6
+                                       assert ptypenode10 isa nullable AType
+                                       var pexprnode12 = nodearraylist9
+                                       assert pexprnode12 isa nullable AExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pdocnode2,
                                                null,
-                                               pvisibilitynode4,
-                                               tkwnewnode5,
+                                               pablenode4,
                                                null,
                                                null,
-                                               psignaturenode7,
+                                               pvisibilitynode6,
+                                               tkwvarnode7,
+                                               tattridnode8,
                                                null,
                                                null,
+                                               ptypenode10,
                                                null,
                                                null,
-                                               pexterncodeblocknode10
+                                               pexprnode12
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction221
+private class ReduceAction218
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -9517,36 +10549,44 @@ private class ReduceAction221
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwnewnode5 = nodearraylist4
-                                       assert tkwnewnode5 isa nullable TKwnew
-                                       var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var pexterncodeblocknode10 = nodearraylist8
-                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
-                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                       var pablenode4 = nodearraylist2
+                                       assert pablenode4 isa nullable AAble
+                                       var tkwredefnode5 = nodearraylist3
+                                       assert tkwredefnode5 isa nullable TKwredef
+                                       var pvisibilitynode6 = nodearraylist4
+                                       assert pvisibilitynode6 isa nullable AVisibility
+                                       var tkwvarnode7 = nodearraylist5
+                                       assert tkwvarnode7 isa nullable TKwvar
+                                       var tattridnode8 = nodearraylist6
+                                       assert tattridnode8 isa nullable TAttrid
+                                       var ptypenode10 = nodearraylist7
+                                       assert ptypenode10 isa nullable AType
+                                       var pexprnode12 = nodearraylist10
+                                       assert pexprnode12 isa nullable AExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwnewnode5,
                                                null,
                                                null,
-                                               psignaturenode7,
+                                               pablenode4,
+                                               tkwredefnode5,
+                                               pvisibilitynode6,
+                                               tkwvarnode7,
+                                               tattridnode8,
                                                null,
                                                null,
+                                               ptypenode10,
                                                null,
                                                null,
-                                               pexterncodeblocknode10
+                                               pexprnode12
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction222
+private class ReduceAction219
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -9557,36 +10597,44 @@ private class ReduceAction222
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwnewnode5 = nodearraylist3
-                                       assert tkwnewnode5 isa nullable TKwnew
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var pexterncodeblocknode10 = nodearraylist8
-                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
-                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                       var pablenode3 = nodearraylist2
+                                       assert pablenode3 isa nullable AAble
+                                       var pablenode4 = nodearraylist3
+                                       assert pablenode4 isa nullable AAble
+                                       var pvisibilitynode6 = nodearraylist4
+                                       assert pvisibilitynode6 isa nullable AVisibility
+                                       var tkwvarnode7 = nodearraylist5
+                                       assert tkwvarnode7 isa nullable TKwvar
+                                       var tattridnode8 = nodearraylist6
+                                       assert tattridnode8 isa nullable TAttrid
+                                       var ptypenode10 = nodearraylist7
+                                       assert ptypenode10 isa nullable AType
+                                       var pexprnode12 = nodearraylist10
+                                       assert pexprnode12 isa nullable AExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pdocnode2,
+                                               pablenode3,
+                                               pablenode4,
                                                null,
                                                null,
-                                               pvisibilitynode4,
-                                               tkwnewnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
+                                               pvisibilitynode6,
+                                               tkwvarnode7,
+                                               tattridnode8,
                                                null,
                                                null,
+                                               ptypenode10,
                                                null,
                                                null,
-                                               pexterncodeblocknode10
+                                               pexprnode12
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction223
+private class ReduceAction220
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -9598,82 +10646,78 @@ private class ReduceAction223
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwnewnode5 = nodearraylist4
-                                       assert tkwnewnode5 isa nullable TKwnew
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var pexterncodeblocknode10 = nodearraylist9
-                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
-                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                       var pablenode3 = nodearraylist2
+                                       assert pablenode3 isa nullable AAble
+                                       var pablenode4 = nodearraylist3
+                                       assert pablenode4 isa nullable AAble
+                                       var tkwredefnode5 = nodearraylist4
+                                       assert tkwredefnode5 isa nullable TKwredef
+                                       var pvisibilitynode6 = nodearraylist5
+                                       assert pvisibilitynode6 isa nullable AVisibility
+                                       var tkwvarnode7 = nodearraylist6
+                                       assert tkwvarnode7 isa nullable TKwvar
+                                       var tattridnode8 = nodearraylist7
+                                       assert tattridnode8 isa nullable TAttrid
+                                       var ptypenode10 = nodearraylist8
+                                       assert ptypenode10 isa nullable AType
+                                       var pexprnode12 = nodearraylist11
+                                       assert pexprnode12 isa nullable AExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwnewnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
+                                               pablenode3,
+                                               pablenode4,
+                                               tkwredefnode5,
+                                               pvisibilitynode6,
+                                               tkwvarnode7,
+                                               tattridnode8,
                                                null,
                                                null,
+                                               ptypenode10,
                                                null,
                                                null,
-                                               pexterncodeblocknode10
+                                               pexprnode12
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction224
+private class ReduceAction221
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwnewnode5 = nodearraylist3
-                                       assert tkwnewnode5 isa nullable TKwnew
-                                       var psignaturenode7 = nodearraylist4
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var tstringnode8 = nodearraylist7
-                                       assert tstringnode8 isa nullable TString
-                                       var pexterncodeblocknode10 = nodearraylist8
-                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
-                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                       var pvisibilitynode6 = nodearraylist2
+                                       assert pvisibilitynode6 isa nullable AVisibility
+                                       var tkwvarnode7 = nodearraylist3
+                                       assert tkwvarnode7 isa nullable TKwvar
+                                       var tidnode9 = nodearraylist4
+                                       assert tidnode9 isa nullable TId
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pdocnode2,
                                                null,
-                                               pvisibilitynode4,
-                                               tkwnewnode5,
                                                null,
                                                null,
-                                               psignaturenode7,
-                                               tstringnode8,
                                                null,
                                                null,
-                                               pexterncodeblocknode10
+                                               pvisibilitynode6,
+                                               tkwvarnode7,
+                                               null,
+                                               tidnode9,
+                                               null,
+                                               null,
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction225
+private class ReduceAction222
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -9681,42 +10725,36 @@ private class ReduceAction225
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwnewnode5 = nodearraylist4
-                                       assert tkwnewnode5 isa nullable TKwnew
-                                       var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var tstringnode8 = nodearraylist8
-                                       assert tstringnode8 isa nullable TString
-                                       var pexterncodeblocknode10 = nodearraylist9
-                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
-                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                       var tkwredefnode5 = nodearraylist2
+                                       assert tkwredefnode5 isa nullable TKwredef
+                                       var pvisibilitynode6 = nodearraylist3
+                                       assert pvisibilitynode6 isa nullable AVisibility
+                                       var tkwvarnode7 = nodearraylist4
+                                       assert tkwvarnode7 isa nullable TKwvar
+                                       var tidnode9 = nodearraylist5
+                                       assert tidnode9 isa nullable TId
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwnewnode5,
                                                null,
                                                null,
-                                               psignaturenode7,
-                                               tstringnode8,
                                                null,
                                                null,
-                                               pexterncodeblocknode10
+                                               tkwredefnode5,
+                                               pvisibilitynode6,
+                                               tkwvarnode7,
+                                               null,
+                                               tidnode9,
+                                               null,
+                                               null,
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction226
+private class ReduceAction223
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -9724,42 +10762,36 @@ private class ReduceAction226
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwnewnode5 = nodearraylist3
-                                       assert tkwnewnode5 isa nullable TKwnew
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var tstringnode8 = nodearraylist8
-                                       assert tstringnode8 isa nullable TString
-                                       var pexterncodeblocknode10 = nodearraylist9
-                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
-                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                       var pvisibilitynode6 = nodearraylist2
+                                       assert pvisibilitynode6 isa nullable AVisibility
+                                       var tkwvarnode7 = nodearraylist3
+                                       assert tkwvarnode7 isa nullable TKwvar
+                                       var tidnode9 = nodearraylist4
+                                       assert tidnode9 isa nullable TId
+                                       var ptypenode10 = nodearraylist5
+                                       assert ptypenode10 isa nullable AType
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pdocnode2,
                                                null,
-                                               pvisibilitynode4,
-                                               tkwnewnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               tstringnode8,
                                                null,
                                                null,
-                                               pexterncodeblocknode10
+                                               null,
+                                               pvisibilitynode6,
+                                               tkwvarnode7,
+                                               null,
+                                               tidnode9,
+                                               ptypenode10,
+                                               null,
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction227
+private class ReduceAction224
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist10 = p.pop
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -9768,43 +10800,38 @@ private class ReduceAction227
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwnewnode5 = nodearraylist4
-                                       assert tkwnewnode5 isa nullable TKwnew
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var tstringnode8 = nodearraylist9
-                                       assert tstringnode8 isa nullable TString
-                                       var pexterncodeblocknode10 = nodearraylist10
-                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
-                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                       var tkwredefnode5 = nodearraylist2
+                                       assert tkwredefnode5 isa nullable TKwredef
+                                       var pvisibilitynode6 = nodearraylist3
+                                       assert pvisibilitynode6 isa nullable AVisibility
+                                       var tkwvarnode7 = nodearraylist4
+                                       assert tkwvarnode7 isa nullable TKwvar
+                                       var tidnode9 = nodearraylist5
+                                       assert tidnode9 isa nullable TId
+                                       var ptypenode10 = nodearraylist6
+                                       assert ptypenode10 isa nullable AType
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwnewnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               tstringnode8,
                                                null,
                                                null,
-                                               pexterncodeblocknode10
+                                               null,
+                                               tkwredefnode5,
+                                               pvisibilitynode6,
+                                               tkwvarnode7,
+                                               null,
+                                               tidnode9,
+                                               ptypenode10,
+                                               null,
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction228
+private class ReduceAction225
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -9812,39 +10839,36 @@ private class ReduceAction228
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwnewnode5 = nodearraylist3
-                                       assert tkwnewnode5 isa nullable TKwnew
-                                       var psignaturenode7 = nodearraylist4
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var pexterncallsnode9 = nodearraylist7
-                                       assert pexterncallsnode9 isa nullable AExternCalls
-                                       var pexterncodeblocknode10 = nodearraylist8
-                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
-                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                       var pablenode4 = nodearraylist5
+                                       assert pablenode4 isa nullable AAble
+                                       var pvisibilitynode6 = nodearraylist2
+                                       assert pvisibilitynode6 isa nullable AVisibility
+                                       var tkwvarnode7 = nodearraylist3
+                                       assert tkwvarnode7 isa nullable TKwvar
+                                       var tidnode9 = nodearraylist4
+                                       assert tidnode9 isa nullable TId
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pdocnode2,
                                                null,
-                                               pvisibilitynode4,
-                                               tkwnewnode5,
+                                               pablenode4,
                                                null,
                                                null,
-                                               psignaturenode7,
+                                               pvisibilitynode6,
+                                               tkwvarnode7,
                                                null,
                                                null,
-                                               pexterncallsnode9,
-                                               pexterncodeblocknode10
+                                               tidnode9,
+                                               null,
+                                               null,
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction229
+private class ReduceAction226
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -9853,41 +10877,38 @@ private class ReduceAction229
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwnewnode5 = nodearraylist4
-                                       assert tkwnewnode5 isa nullable TKwnew
-                                       var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var pexterncallsnode9 = nodearraylist8
-                                       assert pexterncallsnode9 isa nullable AExternCalls
-                                       var pexterncodeblocknode10 = nodearraylist9
-                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
-                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                       var pablenode4 = nodearraylist6
+                                       assert pablenode4 isa nullable AAble
+                                       var tkwredefnode5 = nodearraylist2
+                                       assert tkwredefnode5 isa nullable TKwredef
+                                       var pvisibilitynode6 = nodearraylist3
+                                       assert pvisibilitynode6 isa nullable AVisibility
+                                       var tkwvarnode7 = nodearraylist4
+                                       assert tkwvarnode7 isa nullable TKwvar
+                                       var tidnode9 = nodearraylist5
+                                       assert tidnode9 isa nullable TId
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwnewnode5,
                                                null,
                                                null,
-                                               psignaturenode7,
+                                               pablenode4,
+                                               tkwredefnode5,
+                                               pvisibilitynode6,
+                                               tkwvarnode7,
                                                null,
                                                null,
-                                               pexterncallsnode9,
-                                               pexterncodeblocknode10
+                                               tidnode9,
+                                               null,
+                                               null,
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction230
+private class ReduceAction227
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -9896,41 +10917,38 @@ private class ReduceAction230
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwnewnode5 = nodearraylist3
-                                       assert tkwnewnode5 isa nullable TKwnew
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var pexterncallsnode9 = nodearraylist8
-                                       assert pexterncallsnode9 isa nullable AExternCalls
-                                       var pexterncodeblocknode10 = nodearraylist9
-                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
-                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                       var pablenode4 = nodearraylist6
+                                       assert pablenode4 isa nullable AAble
+                                       var pvisibilitynode6 = nodearraylist2
+                                       assert pvisibilitynode6 isa nullable AVisibility
+                                       var tkwvarnode7 = nodearraylist3
+                                       assert tkwvarnode7 isa nullable TKwvar
+                                       var tidnode9 = nodearraylist4
+                                       assert tidnode9 isa nullable TId
+                                       var ptypenode10 = nodearraylist5
+                                       assert ptypenode10 isa nullable AType
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pdocnode2,
                                                null,
-                                               pvisibilitynode4,
-                                               tkwnewnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
+                                               pablenode4,
                                                null,
                                                null,
-                                               pexterncallsnode9,
-                                               pexterncodeblocknode10
+                                               pvisibilitynode6,
+                                               tkwvarnode7,
+                                               null,
+                                               tidnode9,
+                                               ptypenode10,
+                                               null,
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction231
+private class ReduceAction228
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist10 = p.pop
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -9940,44 +10958,40 @@ private class ReduceAction231
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwnewnode5 = nodearraylist4
-                                       assert tkwnewnode5 isa nullable TKwnew
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var pexterncallsnode9 = nodearraylist9
-                                       assert pexterncallsnode9 isa nullable AExternCalls
-                                       var pexterncodeblocknode10 = nodearraylist10
-                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
-                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                       var pablenode4 = nodearraylist7
+                                       assert pablenode4 isa nullable AAble
+                                       var tkwredefnode5 = nodearraylist2
+                                       assert tkwredefnode5 isa nullable TKwredef
+                                       var pvisibilitynode6 = nodearraylist3
+                                       assert pvisibilitynode6 isa nullable AVisibility
+                                       var tkwvarnode7 = nodearraylist4
+                                       assert tkwvarnode7 isa nullable TKwvar
+                                       var tidnode9 = nodearraylist5
+                                       assert tidnode9 isa nullable TId
+                                       var ptypenode10 = nodearraylist6
+                                       assert ptypenode10 isa nullable AType
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwnewnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
                                                null,
                                                null,
-                                               pexterncallsnode9,
-                                               pexterncodeblocknode10
+                                               pablenode4,
+                                               tkwredefnode5,
+                                               pvisibilitynode6,
+                                               tkwvarnode7,
+                                               null,
+                                               tidnode9,
+                                               ptypenode10,
+                                               null,
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction232
+private class ReduceAction229
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -9985,42 +10999,36 @@ private class ReduceAction232
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwnewnode5 = nodearraylist3
-                                       assert tkwnewnode5 isa nullable TKwnew
-                                       var psignaturenode7 = nodearraylist4
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var tstringnode8 = nodearraylist7
-                                       assert tstringnode8 isa nullable TString
-                                       var pexterncallsnode9 = nodearraylist8
-                                       assert pexterncallsnode9 isa nullable AExternCalls
-                                       var pexterncodeblocknode10 = nodearraylist9
-                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
-                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                       var pvisibilitynode6 = nodearraylist2
+                                       assert pvisibilitynode6 isa nullable AVisibility
+                                       var tkwvarnode7 = nodearraylist3
+                                       assert tkwvarnode7 isa nullable TKwvar
+                                       var tidnode9 = nodearraylist4
+                                       assert tidnode9 isa nullable TId
+                                       var pannotationsnode11 = nodearraylist5
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pdocnode2,
                                                null,
-                                               pvisibilitynode4,
-                                               tkwnewnode5,
                                                null,
                                                null,
-                                               psignaturenode7,
-                                               tstringnode8,
-                                               pexterncallsnode9,
-                                               pexterncodeblocknode10
+                                               null,
+                                               pvisibilitynode6,
+                                               tkwvarnode7,
+                                               null,
+                                               tidnode9,
+                                               null,
+                                               pannotationsnode11,
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction233
+private class ReduceAction230
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist10 = p.pop
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -10029,44 +11037,38 @@ private class ReduceAction233
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwnewnode5 = nodearraylist4
-                                       assert tkwnewnode5 isa nullable TKwnew
-                                       var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var tstringnode8 = nodearraylist8
-                                       assert tstringnode8 isa nullable TString
-                                       var pexterncallsnode9 = nodearraylist9
-                                       assert pexterncallsnode9 isa nullable AExternCalls
-                                       var pexterncodeblocknode10 = nodearraylist10
-                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
-                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                       var tkwredefnode5 = nodearraylist2
+                                       assert tkwredefnode5 isa nullable TKwredef
+                                       var pvisibilitynode6 = nodearraylist3
+                                       assert pvisibilitynode6 isa nullable AVisibility
+                                       var tkwvarnode7 = nodearraylist4
+                                       assert tkwvarnode7 isa nullable TKwvar
+                                       var tidnode9 = nodearraylist5
+                                       assert tidnode9 isa nullable TId
+                                       var pannotationsnode11 = nodearraylist6
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwnewnode5,
                                                null,
                                                null,
-                                               psignaturenode7,
-                                               tstringnode8,
-                                               pexterncallsnode9,
-                                               pexterncodeblocknode10
+                                               null,
+                                               tkwredefnode5,
+                                               pvisibilitynode6,
+                                               tkwvarnode7,
+                                               null,
+                                               tidnode9,
+                                               null,
+                                               pannotationsnode11,
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction234
+private class ReduceAction231
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist10 = p.pop
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -10075,44 +11077,38 @@ private class ReduceAction234
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwnewnode5 = nodearraylist3
-                                       assert tkwnewnode5 isa nullable TKwnew
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var tstringnode8 = nodearraylist8
-                                       assert tstringnode8 isa nullable TString
-                                       var pexterncallsnode9 = nodearraylist9
-                                       assert pexterncallsnode9 isa nullable AExternCalls
-                                       var pexterncodeblocknode10 = nodearraylist10
-                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
-                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                       var pvisibilitynode6 = nodearraylist2
+                                       assert pvisibilitynode6 isa nullable AVisibility
+                                       var tkwvarnode7 = nodearraylist3
+                                       assert tkwvarnode7 isa nullable TKwvar
+                                       var tidnode9 = nodearraylist4
+                                       assert tidnode9 isa nullable TId
+                                       var ptypenode10 = nodearraylist5
+                                       assert ptypenode10 isa nullable AType
+                                       var pannotationsnode11 = nodearraylist6
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pdocnode2,
                                                null,
-                                               pvisibilitynode4,
-                                               tkwnewnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               tstringnode8,
-                                               pexterncallsnode9,
-                                               pexterncodeblocknode10
+                                               null,
+                                               null,
+                                               pvisibilitynode6,
+                                               tkwvarnode7,
+                                               null,
+                                               tidnode9,
+                                               ptypenode10,
+                                               pannotationsnode11,
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction235
+private class ReduceAction232
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist11 = p.pop
-                                       var nodearraylist10 = p.pop
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -10122,42 +11118,41 @@ private class ReduceAction235
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwnewnode5 = nodearraylist4
-                                       assert tkwnewnode5 isa nullable TKwnew
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var tstringnode8 = nodearraylist9
-                                       assert tstringnode8 isa nullable TString
-                                       var pexterncallsnode9 = nodearraylist10
-                                       assert pexterncallsnode9 isa nullable AExternCalls
-                                       var pexterncodeblocknode10 = nodearraylist11
-                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
-                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                       var tkwredefnode5 = nodearraylist2
+                                       assert tkwredefnode5 isa nullable TKwredef
+                                       var pvisibilitynode6 = nodearraylist3
+                                       assert pvisibilitynode6 isa nullable AVisibility
+                                       var tkwvarnode7 = nodearraylist4
+                                       assert tkwvarnode7 isa nullable TKwvar
+                                       var tidnode9 = nodearraylist5
+                                       assert tidnode9 isa nullable TId
+                                       var ptypenode10 = nodearraylist6
+                                       assert ptypenode10 isa nullable AType
+                                       var pannotationsnode11 = nodearraylist7
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwnewnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               tstringnode8,
-                                               pexterncallsnode9,
-                                               pexterncodeblocknode10
+                                               null,
+                                               null,
+                                               tkwredefnode5,
+                                               pvisibilitynode6,
+                                               tkwvarnode7,
+                                               null,
+                                               tidnode9,
+                                               ptypenode10,
+                                               pannotationsnode11,
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction236
+private class ReduceAction233
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -10165,34 +11160,39 @@ private class ReduceAction236
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwnewnode5 = nodearraylist3
-                                       assert tkwnewnode5 isa nullable TKwnew
-                                       var psignaturenode7 = nodearraylist4
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var pexterncodeblocknode10 = nodearraylist5
-                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
-                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                       var pablenode4 = nodearraylist5
+                                       assert pablenode4 isa nullable AAble
+                                       var pvisibilitynode6 = nodearraylist2
+                                       assert pvisibilitynode6 isa nullable AVisibility
+                                       var tkwvarnode7 = nodearraylist3
+                                       assert tkwvarnode7 isa nullable TKwvar
+                                       var tidnode9 = nodearraylist4
+                                       assert tidnode9 isa nullable TId
+                                       var pannotationsnode11 = nodearraylist6
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pdocnode2,
                                                null,
-                                               pvisibilitynode4,
-                                               tkwnewnode5,
+                                               pablenode4,
                                                null,
                                                null,
-                                               psignaturenode7,
+                                               pvisibilitynode6,
+                                               tkwvarnode7,
                                                null,
                                                null,
+                                               tidnode9,
                                                null,
                                                null,
-                                               pexterncodeblocknode10
+                                               pannotationsnode11,
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction237
+private class ReduceAction234
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -10201,36 +11201,41 @@ private class ReduceAction237
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwnewnode5 = nodearraylist4
-                                       assert tkwnewnode5 isa nullable TKwnew
-                                       var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var pexterncodeblocknode10 = nodearraylist6
-                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
-                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                       var pablenode4 = nodearraylist6
+                                       assert pablenode4 isa nullable AAble
+                                       var tkwredefnode5 = nodearraylist2
+                                       assert tkwredefnode5 isa nullable TKwredef
+                                       var pvisibilitynode6 = nodearraylist3
+                                       assert pvisibilitynode6 isa nullable AVisibility
+                                       var tkwvarnode7 = nodearraylist4
+                                       assert tkwvarnode7 isa nullable TKwvar
+                                       var tidnode9 = nodearraylist5
+                                       assert tidnode9 isa nullable TId
+                                       var pannotationsnode11 = nodearraylist7
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwnewnode5,
                                                null,
                                                null,
-                                               psignaturenode7,
+                                               pablenode4,
+                                               tkwredefnode5,
+                                               pvisibilitynode6,
+                                               tkwvarnode7,
                                                null,
                                                null,
+                                               tidnode9,
                                                null,
                                                null,
-                                               pexterncodeblocknode10
+                                               pannotationsnode11,
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction238
+private class ReduceAction235
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -10239,36 +11244,41 @@ private class ReduceAction238
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwnewnode5 = nodearraylist3
-                                       assert tkwnewnode5 isa nullable TKwnew
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var pexterncodeblocknode10 = nodearraylist6
-                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
-                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                       var pablenode4 = nodearraylist6
+                                       assert pablenode4 isa nullable AAble
+                                       var pvisibilitynode6 = nodearraylist2
+                                       assert pvisibilitynode6 isa nullable AVisibility
+                                       var tkwvarnode7 = nodearraylist3
+                                       assert tkwvarnode7 isa nullable TKwvar
+                                       var tidnode9 = nodearraylist4
+                                       assert tidnode9 isa nullable TId
+                                       var ptypenode10 = nodearraylist5
+                                       assert ptypenode10 isa nullable AType
+                                       var pannotationsnode11 = nodearraylist7
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pdocnode2,
                                                null,
-                                               pvisibilitynode4,
-                                               tkwnewnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
+                                               pablenode4,
                                                null,
                                                null,
+                                               pvisibilitynode6,
+                                               tkwvarnode7,
                                                null,
                                                null,
-                                               pexterncodeblocknode10
+                                               tidnode9,
+                                               ptypenode10,
+                                               pannotationsnode11,
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction239
+private class ReduceAction236
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -10278,38 +11288,43 @@ private class ReduceAction239
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwnewnode5 = nodearraylist4
-                                       assert tkwnewnode5 isa nullable TKwnew
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var pexterncodeblocknode10 = nodearraylist7
-                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
-                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                       var pablenode4 = nodearraylist7
+                                       assert pablenode4 isa nullable AAble
+                                       var tkwredefnode5 = nodearraylist2
+                                       assert tkwredefnode5 isa nullable TKwredef
+                                       var pvisibilitynode6 = nodearraylist3
+                                       assert pvisibilitynode6 isa nullable AVisibility
+                                       var tkwvarnode7 = nodearraylist4
+                                       assert tkwvarnode7 isa nullable TKwvar
+                                       var tidnode9 = nodearraylist5
+                                       assert tidnode9 isa nullable TId
+                                       var ptypenode10 = nodearraylist6
+                                       assert ptypenode10 isa nullable AType
+                                       var pannotationsnode11 = nodearraylist8
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwnewnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
                                                null,
                                                null,
+                                               pablenode4,
+                                               tkwredefnode5,
+                                               pvisibilitynode6,
+                                               tkwvarnode7,
                                                null,
                                                null,
-                                               pexterncodeblocknode10
+                                               tidnode9,
+                                               ptypenode10,
+                                               pannotationsnode11,
+                                               null
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction240
+private class ReduceAction237
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -10318,36 +11333,37 @@ private class ReduceAction240
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwnewnode5 = nodearraylist3
-                                       assert tkwnewnode5 isa nullable TKwnew
-                                       var psignaturenode7 = nodearraylist4
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var tstringnode8 = nodearraylist5
-                                       assert tstringnode8 isa nullable TString
-                                       var pexterncodeblocknode10 = nodearraylist6
-                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
-                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                       var pvisibilitynode6 = nodearraylist2
+                                       assert pvisibilitynode6 isa nullable AVisibility
+                                       var tkwvarnode7 = nodearraylist3
+                                       assert tkwvarnode7 isa nullable TKwvar
+                                       var tidnode9 = nodearraylist4
+                                       assert tidnode9 isa nullable TId
+                                       var pexprnode12 = nodearraylist7
+                                       assert pexprnode12 isa nullable AExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pdocnode2,
                                                null,
-                                               pvisibilitynode4,
-                                               tkwnewnode5,
                                                null,
                                                null,
-                                               psignaturenode7,
-                                               tstringnode8,
                                                null,
                                                null,
-                                               pexterncodeblocknode10
+                                               pvisibilitynode6,
+                                               tkwvarnode7,
+                                               null,
+                                               tidnode9,
+                                               null,
+                                               null,
+                                               pexprnode12
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction241
+private class ReduceAction238
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -10357,38 +11373,39 @@ private class ReduceAction241
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwnewnode5 = nodearraylist4
-                                       assert tkwnewnode5 isa nullable TKwnew
-                                       var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var tstringnode8 = nodearraylist6
-                                       assert tstringnode8 isa nullable TString
-                                       var pexterncodeblocknode10 = nodearraylist7
-                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
-                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                       var tkwredefnode5 = nodearraylist2
+                                       assert tkwredefnode5 isa nullable TKwredef
+                                       var pvisibilitynode6 = nodearraylist3
+                                       assert pvisibilitynode6 isa nullable AVisibility
+                                       var tkwvarnode7 = nodearraylist4
+                                       assert tkwvarnode7 isa nullable TKwvar
+                                       var tidnode9 = nodearraylist5
+                                       assert tidnode9 isa nullable TId
+                                       var pexprnode12 = nodearraylist8
+                                       assert pexprnode12 isa nullable AExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwnewnode5,
                                                null,
                                                null,
-                                               psignaturenode7,
-                                               tstringnode8,
                                                null,
                                                null,
-                                               pexterncodeblocknode10
+                                               tkwredefnode5,
+                                               pvisibilitynode6,
+                                               tkwvarnode7,
+                                               null,
+                                               tidnode9,
+                                               null,
+                                               null,
+                                               pexprnode12
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction242
+private class ReduceAction239
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -10398,38 +11415,39 @@ private class ReduceAction242
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwnewnode5 = nodearraylist3
-                                       assert tkwnewnode5 isa nullable TKwnew
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var tstringnode8 = nodearraylist6
-                                       assert tstringnode8 isa nullable TString
-                                       var pexterncodeblocknode10 = nodearraylist7
-                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
-                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                       var pvisibilitynode6 = nodearraylist2
+                                       assert pvisibilitynode6 isa nullable AVisibility
+                                       var tkwvarnode7 = nodearraylist3
+                                       assert tkwvarnode7 isa nullable TKwvar
+                                       var tidnode9 = nodearraylist4
+                                       assert tidnode9 isa nullable TId
+                                       var ptypenode10 = nodearraylist5
+                                       assert ptypenode10 isa nullable AType
+                                       var pexprnode12 = nodearraylist8
+                                       assert pexprnode12 isa nullable AExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pdocnode2,
                                                null,
-                                               pvisibilitynode4,
-                                               tkwnewnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               tstringnode8,
                                                null,
                                                null,
-                                               pexterncodeblocknode10
+                                               null,
+                                               pvisibilitynode6,
+                                               tkwvarnode7,
+                                               null,
+                                               tidnode9,
+                                               ptypenode10,
+                                               null,
+                                               pexprnode12
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction243
+private class ReduceAction240
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -10440,40 +11458,42 @@ private class ReduceAction243
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwnewnode5 = nodearraylist4
-                                       assert tkwnewnode5 isa nullable TKwnew
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var tstringnode8 = nodearraylist7
-                                       assert tstringnode8 isa nullable TString
-                                       var pexterncodeblocknode10 = nodearraylist8
-                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
-                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                       var tkwredefnode5 = nodearraylist2
+                                       assert tkwredefnode5 isa nullable TKwredef
+                                       var pvisibilitynode6 = nodearraylist3
+                                       assert pvisibilitynode6 isa nullable AVisibility
+                                       var tkwvarnode7 = nodearraylist4
+                                       assert tkwvarnode7 isa nullable TKwvar
+                                       var tidnode9 = nodearraylist5
+                                       assert tidnode9 isa nullable TId
+                                       var ptypenode10 = nodearraylist6
+                                       assert ptypenode10 isa nullable AType
+                                       var pexprnode12 = nodearraylist9
+                                       assert pexprnode12 isa nullable AExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwnewnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               tstringnode8,
                                                null,
                                                null,
-                                               pexterncodeblocknode10
-                                       )
+                                               null,
+                                               tkwredefnode5,
+                                               pvisibilitynode6,
+                                               tkwvarnode7,
+                                               null,
+                                               tidnode9,
+                                               ptypenode10,
+                                               null,
+                                               pexprnode12
+                                       )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction244
+private class ReduceAction241
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -10482,36 +11502,40 @@ private class ReduceAction244
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwnewnode5 = nodearraylist3
-                                       assert tkwnewnode5 isa nullable TKwnew
-                                       var psignaturenode7 = nodearraylist4
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var pexterncallsnode9 = nodearraylist5
-                                       assert pexterncallsnode9 isa nullable AExternCalls
-                                       var pexterncodeblocknode10 = nodearraylist6
-                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
-                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                       var pablenode4 = nodearraylist5
+                                       assert pablenode4 isa nullable AAble
+                                       var pvisibilitynode6 = nodearraylist2
+                                       assert pvisibilitynode6 isa nullable AVisibility
+                                       var tkwvarnode7 = nodearraylist3
+                                       assert tkwvarnode7 isa nullable TKwvar
+                                       var tidnode9 = nodearraylist4
+                                       assert tidnode9 isa nullable TId
+                                       var pexprnode12 = nodearraylist8
+                                       assert pexprnode12 isa nullable AExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pdocnode2,
                                                null,
-                                               pvisibilitynode4,
-                                               tkwnewnode5,
+                                               pablenode4,
                                                null,
                                                null,
-                                               psignaturenode7,
+                                               pvisibilitynode6,
+                                               tkwvarnode7,
                                                null,
                                                null,
-                                               pexterncallsnode9,
-                                               pexterncodeblocknode10
+                                               tidnode9,
+                                               null,
+                                               null,
+                                               pexprnode12
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction245
+private class ReduceAction242
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -10521,38 +11545,42 @@ private class ReduceAction245
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwnewnode5 = nodearraylist4
-                                       assert tkwnewnode5 isa nullable TKwnew
-                                       var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var pexterncallsnode9 = nodearraylist6
-                                       assert pexterncallsnode9 isa nullable AExternCalls
-                                       var pexterncodeblocknode10 = nodearraylist7
-                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
-                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                       var pablenode4 = nodearraylist6
+                                       assert pablenode4 isa nullable AAble
+                                       var tkwredefnode5 = nodearraylist2
+                                       assert tkwredefnode5 isa nullable TKwredef
+                                       var pvisibilitynode6 = nodearraylist3
+                                       assert pvisibilitynode6 isa nullable AVisibility
+                                       var tkwvarnode7 = nodearraylist4
+                                       assert tkwvarnode7 isa nullable TKwvar
+                                       var tidnode9 = nodearraylist5
+                                       assert tidnode9 isa nullable TId
+                                       var pexprnode12 = nodearraylist9
+                                       assert pexprnode12 isa nullable AExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwnewnode5,
                                                null,
                                                null,
-                                               psignaturenode7,
+                                               pablenode4,
+                                               tkwredefnode5,
+                                               pvisibilitynode6,
+                                               tkwvarnode7,
                                                null,
                                                null,
-                                               pexterncallsnode9,
-                                               pexterncodeblocknode10
+                                               tidnode9,
+                                               null,
+                                               null,
+                                               pexprnode12
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction246
+private class ReduceAction243
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -10562,38 +11590,42 @@ private class ReduceAction246
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwnewnode5 = nodearraylist3
-                                       assert tkwnewnode5 isa nullable TKwnew
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var pexterncallsnode9 = nodearraylist6
-                                       assert pexterncallsnode9 isa nullable AExternCalls
-                                       var pexterncodeblocknode10 = nodearraylist7
-                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
-                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                       var pablenode4 = nodearraylist6
+                                       assert pablenode4 isa nullable AAble
+                                       var pvisibilitynode6 = nodearraylist2
+                                       assert pvisibilitynode6 isa nullable AVisibility
+                                       var tkwvarnode7 = nodearraylist3
+                                       assert tkwvarnode7 isa nullable TKwvar
+                                       var tidnode9 = nodearraylist4
+                                       assert tidnode9 isa nullable TId
+                                       var ptypenode10 = nodearraylist5
+                                       assert ptypenode10 isa nullable AType
+                                       var pexprnode12 = nodearraylist9
+                                       assert pexprnode12 isa nullable AExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pdocnode2,
                                                null,
-                                               pvisibilitynode4,
-                                               tkwnewnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
+                                               pablenode4,
                                                null,
                                                null,
-                                               pexterncallsnode9,
-                                               pexterncodeblocknode10
+                                               pvisibilitynode6,
+                                               tkwvarnode7,
+                                               null,
+                                               tidnode9,
+                                               ptypenode10,
+                                               null,
+                                               pexprnode12
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction247
+private class ReduceAction244
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -10604,40 +11636,43 @@ private class ReduceAction247
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwnewnode5 = nodearraylist4
-                                       assert tkwnewnode5 isa nullable TKwnew
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var pexterncallsnode9 = nodearraylist7
-                                       assert pexterncallsnode9 isa nullable AExternCalls
-                                       var pexterncodeblocknode10 = nodearraylist8
-                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
-                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                       var pablenode4 = nodearraylist7
+                                       assert pablenode4 isa nullable AAble
+                                       var tkwredefnode5 = nodearraylist2
+                                       assert tkwredefnode5 isa nullable TKwredef
+                                       var pvisibilitynode6 = nodearraylist3
+                                       assert pvisibilitynode6 isa nullable AVisibility
+                                       var tkwvarnode7 = nodearraylist4
+                                       assert tkwvarnode7 isa nullable TKwvar
+                                       var tidnode9 = nodearraylist5
+                                       assert tidnode9 isa nullable TId
+                                       var ptypenode10 = nodearraylist6
+                                       assert ptypenode10 isa nullable AType
+                                       var pexprnode12 = nodearraylist10
+                                       assert pexprnode12 isa nullable AExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwnewnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
                                                null,
                                                null,
-                                               pexterncallsnode9,
-                                               pexterncodeblocknode10
+                                               pablenode4,
+                                               tkwredefnode5,
+                                               pvisibilitynode6,
+                                               tkwvarnode7,
+                                               null,
+                                               tidnode9,
+                                               ptypenode10,
+                                               null,
+                                               pexprnode12
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction248
+private class ReduceAction245
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -10647,38 +11682,39 @@ private class ReduceAction248
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwnewnode5 = nodearraylist3
-                                       assert tkwnewnode5 isa nullable TKwnew
-                                       var psignaturenode7 = nodearraylist4
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var tstringnode8 = nodearraylist5
-                                       assert tstringnode8 isa nullable TString
-                                       var pexterncallsnode9 = nodearraylist6
-                                       assert pexterncallsnode9 isa nullable AExternCalls
-                                       var pexterncodeblocknode10 = nodearraylist7
-                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
-                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                       var pvisibilitynode6 = nodearraylist2
+                                       assert pvisibilitynode6 isa nullable AVisibility
+                                       var tkwvarnode7 = nodearraylist3
+                                       assert tkwvarnode7 isa nullable TKwvar
+                                       var tidnode9 = nodearraylist4
+                                       assert tidnode9 isa nullable TId
+                                       var pannotationsnode11 = nodearraylist8
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var pexprnode12 = nodearraylist7
+                                       assert pexprnode12 isa nullable AExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pdocnode2,
                                                null,
-                                               pvisibilitynode4,
-                                               tkwnewnode5,
                                                null,
                                                null,
-                                               psignaturenode7,
-                                               tstringnode8,
-                                               pexterncallsnode9,
-                                               pexterncodeblocknode10
+                                               null,
+                                               pvisibilitynode6,
+                                               tkwvarnode7,
+                                               null,
+                                               tidnode9,
+                                               null,
+                                               pannotationsnode11,
+                                               pexprnode12
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction249
+private class ReduceAction246
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -10689,615 +11725,4858 @@ private class ReduceAction249
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
                                        assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwnewnode5 = nodearraylist4
-                                       assert tkwnewnode5 isa nullable TKwnew
-                                       var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var tstringnode8 = nodearraylist6
-                                       assert tstringnode8 isa nullable TString
-                                       var pexterncallsnode9 = nodearraylist7
-                                       assert pexterncallsnode9 isa nullable AExternCalls
-                                       var pexterncodeblocknode10 = nodearraylist8
-                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
-                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                       var tkwredefnode5 = nodearraylist2
+                                       assert tkwredefnode5 isa nullable TKwredef
+                                       var pvisibilitynode6 = nodearraylist3
+                                       assert pvisibilitynode6 isa nullable AVisibility
+                                       var tkwvarnode7 = nodearraylist4
+                                       assert tkwvarnode7 isa nullable TKwvar
+                                       var tidnode9 = nodearraylist5
+                                       assert tidnode9 isa nullable TId
+                                       var pannotationsnode11 = nodearraylist9
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var pexprnode12 = nodearraylist8
+                                       assert pexprnode12 isa nullable AExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwnewnode5,
                                                null,
                                                null,
-                                               psignaturenode7,
-                                               tstringnode8,
-                                               pexterncallsnode9,
-                                               pexterncodeblocknode10
+                                               null,
+                                               tkwredefnode5,
+                                               pvisibilitynode6,
+                                               tkwvarnode7,
+                                               null,
+                                               tidnode9,
+                                               null,
+                                               pannotationsnode11,
+                                               pexprnode12
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction250
+private class ReduceAction247
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode6 = nodearraylist2
+                                       assert pvisibilitynode6 isa nullable AVisibility
+                                       var tkwvarnode7 = nodearraylist3
+                                       assert tkwvarnode7 isa nullable TKwvar
+                                       var tidnode9 = nodearraylist4
+                                       assert tidnode9 isa nullable TId
+                                       var ptypenode10 = nodearraylist5
+                                       assert ptypenode10 isa nullable AType
+                                       var pannotationsnode11 = nodearraylist9
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var pexprnode12 = nodearraylist8
+                                       assert pexprnode12 isa nullable AExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               null,
+                                               null,
+                                               null,
+                                               pvisibilitynode6,
+                                               tkwvarnode7,
+                                               null,
+                                               tidnode9,
+                                               ptypenode10,
+                                               pannotationsnode11,
+                                               pexprnode12
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction248
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode5 = nodearraylist2
+                                       assert tkwredefnode5 isa nullable TKwredef
+                                       var pvisibilitynode6 = nodearraylist3
+                                       assert pvisibilitynode6 isa nullable AVisibility
+                                       var tkwvarnode7 = nodearraylist4
+                                       assert tkwvarnode7 isa nullable TKwvar
+                                       var tidnode9 = nodearraylist5
+                                       assert tidnode9 isa nullable TId
+                                       var ptypenode10 = nodearraylist6
+                                       assert ptypenode10 isa nullable AType
+                                       var pannotationsnode11 = nodearraylist10
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var pexprnode12 = nodearraylist9
+                                       assert pexprnode12 isa nullable AExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               null,
+                                               null,
+                                               tkwredefnode5,
+                                               pvisibilitynode6,
+                                               tkwvarnode7,
+                                               null,
+                                               tidnode9,
+                                               ptypenode10,
+                                               pannotationsnode11,
+                                               pexprnode12
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction249
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pablenode4 = nodearraylist5
+                                       assert pablenode4 isa nullable AAble
+                                       var pvisibilitynode6 = nodearraylist2
+                                       assert pvisibilitynode6 isa nullable AVisibility
+                                       var tkwvarnode7 = nodearraylist3
+                                       assert tkwvarnode7 isa nullable TKwvar
+                                       var tidnode9 = nodearraylist4
+                                       assert tidnode9 isa nullable TId
+                                       var pannotationsnode11 = nodearraylist9
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var pexprnode12 = nodearraylist8
+                                       assert pexprnode12 isa nullable AExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pablenode4,
+                                               null,
+                                               pvisibilitynode6,
+                                               tkwvarnode7,
+                                               null,
+                                               tidnode9,
+                                               null,
+                                               pannotationsnode11,
+                                               pexprnode12
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction250
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pablenode4 = nodearraylist6
+                                       assert pablenode4 isa nullable AAble
+                                       var tkwredefnode5 = nodearraylist2
+                                       assert tkwredefnode5 isa nullable TKwredef
+                                       var pvisibilitynode6 = nodearraylist3
+                                       assert pvisibilitynode6 isa nullable AVisibility
+                                       var tkwvarnode7 = nodearraylist4
+                                       assert tkwvarnode7 isa nullable TKwvar
+                                       var tidnode9 = nodearraylist5
+                                       assert tidnode9 isa nullable TId
+                                       var pannotationsnode11 = nodearraylist10
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var pexprnode12 = nodearraylist9
+                                       assert pexprnode12 isa nullable AExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pablenode4,
+                                               tkwredefnode5,
+                                               pvisibilitynode6,
+                                               tkwvarnode7,
+                                               null,
+                                               tidnode9,
+                                               null,
+                                               pannotationsnode11,
+                                               pexprnode12
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction251
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pablenode4 = nodearraylist6
+                                       assert pablenode4 isa nullable AAble
+                                       var pvisibilitynode6 = nodearraylist2
+                                       assert pvisibilitynode6 isa nullable AVisibility
+                                       var tkwvarnode7 = nodearraylist3
+                                       assert tkwvarnode7 isa nullable TKwvar
+                                       var tidnode9 = nodearraylist4
+                                       assert tidnode9 isa nullable TId
+                                       var ptypenode10 = nodearraylist5
+                                       assert ptypenode10 isa nullable AType
+                                       var pannotationsnode11 = nodearraylist10
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var pexprnode12 = nodearraylist9
+                                       assert pexprnode12 isa nullable AExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pablenode4,
+                                               null,
+                                               pvisibilitynode6,
+                                               tkwvarnode7,
+                                               null,
+                                               tidnode9,
+                                               ptypenode10,
+                                               pannotationsnode11,
+                                               pexprnode12
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction252
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pablenode4 = nodearraylist7
+                                       assert pablenode4 isa nullable AAble
+                                       var tkwredefnode5 = nodearraylist2
+                                       assert tkwredefnode5 isa nullable TKwredef
+                                       var pvisibilitynode6 = nodearraylist3
+                                       assert pvisibilitynode6 isa nullable AVisibility
+                                       var tkwvarnode7 = nodearraylist4
+                                       assert tkwvarnode7 isa nullable TKwvar
+                                       var tidnode9 = nodearraylist5
+                                       assert tidnode9 isa nullable TId
+                                       var ptypenode10 = nodearraylist6
+                                       assert ptypenode10 isa nullable AType
+                                       var pannotationsnode11 = nodearraylist11
+                                       assert pannotationsnode11 isa nullable AAnnotations
+                                       var pexprnode12 = nodearraylist10
+                                       assert pexprnode12 isa nullable AExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pablenode4,
+                                               tkwredefnode5,
+                                               pvisibilitynode6,
+                                               tkwvarnode7,
+                                               null,
+                                               tidnode9,
+                                               ptypenode10,
+                                               pannotationsnode11,
+                                               pexprnode12
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction253
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4 = nodearraylist2
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwinitnode5 = nodearraylist3
+                                       assert tkwinitnode5 isa nullable TKwinit
+                                       var psignaturenode7 = nodearraylist4
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var pexprnode9 = nodearraylist6
+                                       assert pexprnode9 isa nullable AExpr
+                                       var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwinitnode5,
+                                               null,
+                                               psignaturenode7,
+                                               null,
+                                               pexprnode9
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction254
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwinitnode5 = nodearraylist4
+                                       assert tkwinitnode5 isa nullable TKwinit
+                                       var psignaturenode7 = nodearraylist5
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var pexprnode9 = nodearraylist7
+                                       assert pexprnode9 isa nullable AExpr
+                                       var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwinitnode5,
+                                               null,
+                                               psignaturenode7,
+                                               null,
+                                               pexprnode9
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction255
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4 = nodearraylist2
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwinitnode5 = nodearraylist3
+                                       assert tkwinitnode5 isa nullable TKwinit
+                                       var pmethidnode6 = nodearraylist4
+                                       assert pmethidnode6 isa nullable AMethid
+                                       var psignaturenode7 = nodearraylist5
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var pexprnode9 = nodearraylist7
+                                       assert pexprnode9 isa nullable AExpr
+                                       var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwinitnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               null,
+                                               pexprnode9
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction256
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwinitnode5 = nodearraylist4
+                                       assert tkwinitnode5 isa nullable TKwinit
+                                       var pmethidnode6 = nodearraylist5
+                                       assert pmethidnode6 isa nullable AMethid
+                                       var psignaturenode7 = nodearraylist6
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var pexprnode9 = nodearraylist8
+                                       assert pexprnode9 isa nullable AExpr
+                                       var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwinitnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               null,
+                                               pexprnode9
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction257
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4 = nodearraylist2
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwinitnode5 = nodearraylist3
+                                       assert tkwinitnode5 isa nullable TKwinit
+                                       var psignaturenode7 = nodearraylist4
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var pannotationsnode8 = nodearraylist5
+                                       assert pannotationsnode8 isa nullable AAnnotations
+                                       var pexprnode9 = nodearraylist7
+                                       assert pexprnode9 isa nullable AExpr
+                                       var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwinitnode5,
+                                               null,
+                                               psignaturenode7,
+                                               pannotationsnode8,
+                                               pexprnode9
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction258
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwinitnode5 = nodearraylist4
+                                       assert tkwinitnode5 isa nullable TKwinit
+                                       var psignaturenode7 = nodearraylist5
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var pannotationsnode8 = nodearraylist6
+                                       assert pannotationsnode8 isa nullable AAnnotations
+                                       var pexprnode9 = nodearraylist8
+                                       assert pexprnode9 isa nullable AExpr
+                                       var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwinitnode5,
+                                               null,
+                                               psignaturenode7,
+                                               pannotationsnode8,
+                                               pexprnode9
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction259
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4 = nodearraylist2
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwinitnode5 = nodearraylist3
+                                       assert tkwinitnode5 isa nullable TKwinit
+                                       var pmethidnode6 = nodearraylist4
+                                       assert pmethidnode6 isa nullable AMethid
+                                       var psignaturenode7 = nodearraylist5
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var pannotationsnode8 = nodearraylist6
+                                       assert pannotationsnode8 isa nullable AAnnotations
+                                       var pexprnode9 = nodearraylist8
+                                       assert pexprnode9 isa nullable AExpr
+                                       var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwinitnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               pannotationsnode8,
+                                               pexprnode9
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction260
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwinitnode5 = nodearraylist4
+                                       assert tkwinitnode5 isa nullable TKwinit
+                                       var pmethidnode6 = nodearraylist5
+                                       assert pmethidnode6 isa nullable AMethid
+                                       var psignaturenode7 = nodearraylist6
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var pannotationsnode8 = nodearraylist7
+                                       assert pannotationsnode8 isa nullable AAnnotations
+                                       var pexprnode9 = nodearraylist9
+                                       assert pexprnode9 isa nullable AExpr
+                                       var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwinitnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               pannotationsnode8,
+                                               pexprnode9
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction261
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4 = nodearraylist2
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwinitnode5 = nodearraylist3
+                                       assert tkwinitnode5 isa nullable TKwinit
+                                       var psignaturenode7 = nodearraylist4
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var pexprnode9 = nodearraylist6
+                                       assert pexprnode9 isa nullable AExpr
+                                       var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwinitnode5,
+                                               null,
+                                               psignaturenode7,
+                                               null,
+                                               pexprnode9
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction262
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwinitnode5 = nodearraylist4
+                                       assert tkwinitnode5 isa nullable TKwinit
+                                       var psignaturenode7 = nodearraylist5
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var pexprnode9 = nodearraylist7
+                                       assert pexprnode9 isa nullable AExpr
+                                       var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwinitnode5,
+                                               null,
+                                               psignaturenode7,
+                                               null,
+                                               pexprnode9
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction263
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4 = nodearraylist2
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwinitnode5 = nodearraylist3
+                                       assert tkwinitnode5 isa nullable TKwinit
+                                       var pmethidnode6 = nodearraylist4
+                                       assert pmethidnode6 isa nullable AMethid
+                                       var psignaturenode7 = nodearraylist5
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var pexprnode9 = nodearraylist7
+                                       assert pexprnode9 isa nullable AExpr
+                                       var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwinitnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               null,
+                                               pexprnode9
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction264
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwinitnode5 = nodearraylist4
+                                       assert tkwinitnode5 isa nullable TKwinit
+                                       var pmethidnode6 = nodearraylist5
+                                       assert pmethidnode6 isa nullable AMethid
+                                       var psignaturenode7 = nodearraylist6
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var pexprnode9 = nodearraylist8
+                                       assert pexprnode9 isa nullable AExpr
+                                       var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwinitnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               null,
+                                               pexprnode9
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction265
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4 = nodearraylist2
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwinitnode5 = nodearraylist3
+                                       assert tkwinitnode5 isa nullable TKwinit
+                                       var psignaturenode7 = nodearraylist4
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var pannotationsnode8 = nodearraylist5
+                                       assert pannotationsnode8 isa nullable AAnnotations
+                                       var pexprnode9 = nodearraylist7
+                                       assert pexprnode9 isa nullable AExpr
+                                       var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwinitnode5,
+                                               null,
+                                               psignaturenode7,
+                                               pannotationsnode8,
+                                               pexprnode9
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction266
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwinitnode5 = nodearraylist4
+                                       assert tkwinitnode5 isa nullable TKwinit
+                                       var psignaturenode7 = nodearraylist5
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var pannotationsnode8 = nodearraylist6
+                                       assert pannotationsnode8 isa nullable AAnnotations
+                                       var pexprnode9 = nodearraylist8
+                                       assert pexprnode9 isa nullable AExpr
+                                       var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwinitnode5,
+                                               null,
+                                               psignaturenode7,
+                                               pannotationsnode8,
+                                               pexprnode9
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction267
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4 = nodearraylist2
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwinitnode5 = nodearraylist3
+                                       assert tkwinitnode5 isa nullable TKwinit
+                                       var pmethidnode6 = nodearraylist4
+                                       assert pmethidnode6 isa nullable AMethid
+                                       var psignaturenode7 = nodearraylist5
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var pannotationsnode8 = nodearraylist6
+                                       assert pannotationsnode8 isa nullable AAnnotations
+                                       var pexprnode9 = nodearraylist8
+                                       assert pexprnode9 isa nullable AExpr
+                                       var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwinitnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               pannotationsnode8,
+                                               pexprnode9
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction268
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwinitnode5 = nodearraylist4
+                                       assert tkwinitnode5 isa nullable TKwinit
+                                       var pmethidnode6 = nodearraylist5
+                                       assert pmethidnode6 isa nullable AMethid
+                                       var psignaturenode7 = nodearraylist6
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var pannotationsnode8 = nodearraylist7
+                                       assert pannotationsnode8 isa nullable AAnnotations
+                                       var pexprnode9 = nodearraylist9
+                                       assert pexprnode9 isa nullable AExpr
+                                       var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwinitnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               pannotationsnode8,
+                                               pexprnode9
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction269
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4 = nodearraylist2
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwtypenode5 = nodearraylist3
+                                       assert tkwtypenode5 isa nullable TKwtype
+                                       var tclassidnode6 = nodearraylist4
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var ptypenode7 = nodearraylist5
+                                       assert ptypenode7 isa nullable AType
+                                       var ppropdefnode1: nullable ATypePropdef = new ATypePropdef.init_atypepropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwtypenode5,
+                                               tclassidnode6,
+                                               ptypenode7,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction270
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwtypenode5 = nodearraylist4
+                                       assert tkwtypenode5 isa nullable TKwtype
+                                       var tclassidnode6 = nodearraylist5
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var ptypenode7 = nodearraylist6
+                                       assert ptypenode7 isa nullable AType
+                                       var ppropdefnode1: nullable ATypePropdef = new ATypePropdef.init_atypepropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwtypenode5,
+                                               tclassidnode6,
+                                               ptypenode7,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction271
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4 = nodearraylist2
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwtypenode5 = nodearraylist3
+                                       assert tkwtypenode5 isa nullable TKwtype
+                                       var tclassidnode6 = nodearraylist4
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var ptypenode7 = nodearraylist5
+                                       assert ptypenode7 isa nullable AType
+                                       var pannotationsnode8 = nodearraylist6
+                                       assert pannotationsnode8 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable ATypePropdef = new ATypePropdef.init_atypepropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwtypenode5,
+                                               tclassidnode6,
+                                               ptypenode7,
+                                               pannotationsnode8
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction272
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwtypenode5 = nodearraylist4
+                                       assert tkwtypenode5 isa nullable TKwtype
+                                       var tclassidnode6 = nodearraylist5
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var ptypenode7 = nodearraylist6
+                                       assert ptypenode7 isa nullable AType
+                                       var pannotationsnode8 = nodearraylist7
+                                       assert pannotationsnode8 isa nullable AAnnotations
+                                       var ppropdefnode1: nullable ATypePropdef = new ATypePropdef.init_atypepropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwtypenode5,
+                                               tclassidnode6,
+                                               ptypenode7,
+                                               pannotationsnode8
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction273
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4 = nodearraylist2
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwnewnode5 = nodearraylist3
+                                       assert tkwnewnode5 isa nullable TKwnew
+                                       var psignaturenode7 = nodearraylist4
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwnewnode5,
+                                               null,
+                                               psignaturenode7,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction274
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwnewnode5 = nodearraylist4
+                                       assert tkwnewnode5 isa nullable TKwnew
+                                       var psignaturenode7 = nodearraylist5
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwnewnode5,
+                                               null,
+                                               psignaturenode7,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction275
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4 = nodearraylist2
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwnewnode5 = nodearraylist3
+                                       assert tkwnewnode5 isa nullable TKwnew
+                                       var pmethidnode6 = nodearraylist4
+                                       assert pmethidnode6 isa nullable AMethid
+                                       var psignaturenode7 = nodearraylist5
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwnewnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction276
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwnewnode5 = nodearraylist4
+                                       assert tkwnewnode5 isa nullable TKwnew
+                                       var pmethidnode6 = nodearraylist5
+                                       assert pmethidnode6 isa nullable AMethid
+                                       var psignaturenode7 = nodearraylist6
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwnewnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction277
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4 = nodearraylist2
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwnewnode5 = nodearraylist3
+                                       assert tkwnewnode5 isa nullable TKwnew
+                                       var psignaturenode7 = nodearraylist4
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var tstringnode8 = nodearraylist7
+                                       assert tstringnode8 isa nullable TString
+                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwnewnode5,
+                                               null,
+                                               psignaturenode7,
+                                               tstringnode8,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction278
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwnewnode5 = nodearraylist4
+                                       assert tkwnewnode5 isa nullable TKwnew
+                                       var psignaturenode7 = nodearraylist5
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var tstringnode8 = nodearraylist8
+                                       assert tstringnode8 isa nullable TString
+                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwnewnode5,
+                                               null,
+                                               psignaturenode7,
+                                               tstringnode8,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction279
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4 = nodearraylist2
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwnewnode5 = nodearraylist3
+                                       assert tkwnewnode5 isa nullable TKwnew
+                                       var pmethidnode6 = nodearraylist4
+                                       assert pmethidnode6 isa nullable AMethid
+                                       var psignaturenode7 = nodearraylist5
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var tstringnode8 = nodearraylist8
+                                       assert tstringnode8 isa nullable TString
+                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwnewnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               tstringnode8,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction280
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwnewnode5 = nodearraylist4
+                                       assert tkwnewnode5 isa nullable TKwnew
+                                       var pmethidnode6 = nodearraylist5
+                                       assert pmethidnode6 isa nullable AMethid
+                                       var psignaturenode7 = nodearraylist6
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var tstringnode8 = nodearraylist9
+                                       assert tstringnode8 isa nullable TString
+                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwnewnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               tstringnode8,
+                                               null,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction281
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4 = nodearraylist2
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwnewnode5 = nodearraylist3
+                                       assert tkwnewnode5 isa nullable TKwnew
+                                       var psignaturenode7 = nodearraylist4
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var pexterncallsnode9 = nodearraylist7
+                                       assert pexterncallsnode9 isa nullable AExternCalls
+                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwnewnode5,
+                                               null,
+                                               psignaturenode7,
+                                               null,
+                                               pexterncallsnode9,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction282
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwnewnode5 = nodearraylist4
+                                       assert tkwnewnode5 isa nullable TKwnew
+                                       var psignaturenode7 = nodearraylist5
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var pexterncallsnode9 = nodearraylist8
+                                       assert pexterncallsnode9 isa nullable AExternCalls
+                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwnewnode5,
+                                               null,
+                                               psignaturenode7,
+                                               null,
+                                               pexterncallsnode9,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction283
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4 = nodearraylist2
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwnewnode5 = nodearraylist3
+                                       assert tkwnewnode5 isa nullable TKwnew
+                                       var pmethidnode6 = nodearraylist4
+                                       assert pmethidnode6 isa nullable AMethid
+                                       var psignaturenode7 = nodearraylist5
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var pexterncallsnode9 = nodearraylist8
+                                       assert pexterncallsnode9 isa nullable AExternCalls
+                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwnewnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               null,
+                                               pexterncallsnode9,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction284
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwnewnode5 = nodearraylist4
+                                       assert tkwnewnode5 isa nullable TKwnew
+                                       var pmethidnode6 = nodearraylist5
+                                       assert pmethidnode6 isa nullable AMethid
+                                       var psignaturenode7 = nodearraylist6
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var pexterncallsnode9 = nodearraylist9
+                                       assert pexterncallsnode9 isa nullable AExternCalls
+                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwnewnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               null,
+                                               pexterncallsnode9,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction285
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4 = nodearraylist2
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwnewnode5 = nodearraylist3
+                                       assert tkwnewnode5 isa nullable TKwnew
+                                       var psignaturenode7 = nodearraylist4
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var tstringnode8 = nodearraylist7
+                                       assert tstringnode8 isa nullable TString
+                                       var pexterncallsnode9 = nodearraylist8
+                                       assert pexterncallsnode9 isa nullable AExternCalls
+                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwnewnode5,
+                                               null,
+                                               psignaturenode7,
+                                               tstringnode8,
+                                               pexterncallsnode9,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction286
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwnewnode5 = nodearraylist4
+                                       assert tkwnewnode5 isa nullable TKwnew
+                                       var psignaturenode7 = nodearraylist5
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var tstringnode8 = nodearraylist8
+                                       assert tstringnode8 isa nullable TString
+                                       var pexterncallsnode9 = nodearraylist9
+                                       assert pexterncallsnode9 isa nullable AExternCalls
+                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwnewnode5,
+                                               null,
+                                               psignaturenode7,
+                                               tstringnode8,
+                                               pexterncallsnode9,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction287
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4 = nodearraylist2
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwnewnode5 = nodearraylist3
+                                       assert tkwnewnode5 isa nullable TKwnew
+                                       var pmethidnode6 = nodearraylist4
+                                       assert pmethidnode6 isa nullable AMethid
+                                       var psignaturenode7 = nodearraylist5
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var tstringnode8 = nodearraylist8
+                                       assert tstringnode8 isa nullable TString
+                                       var pexterncallsnode9 = nodearraylist9
+                                       assert pexterncallsnode9 isa nullable AExternCalls
+                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwnewnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               tstringnode8,
+                                               pexterncallsnode9,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction288
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwnewnode5 = nodearraylist4
+                                       assert tkwnewnode5 isa nullable TKwnew
+                                       var pmethidnode6 = nodearraylist5
+                                       assert pmethidnode6 isa nullable AMethid
+                                       var psignaturenode7 = nodearraylist6
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var tstringnode8 = nodearraylist9
+                                       assert tstringnode8 isa nullable TString
+                                       var pexterncallsnode9 = nodearraylist10
+                                       assert pexterncallsnode9 isa nullable AExternCalls
+                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwnewnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               tstringnode8,
+                                               pexterncallsnode9,
+                                               null
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction289
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4 = nodearraylist2
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwnewnode5 = nodearraylist3
+                                       assert tkwnewnode5 isa nullable TKwnew
+                                       var psignaturenode7 = nodearraylist4
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var pexterncodeblocknode10 = nodearraylist7
+                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwnewnode5,
+                                               null,
+                                               psignaturenode7,
+                                               null,
+                                               null,
+                                               pexterncodeblocknode10
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction290
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwnewnode5 = nodearraylist4
+                                       assert tkwnewnode5 isa nullable TKwnew
+                                       var psignaturenode7 = nodearraylist5
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var pexterncodeblocknode10 = nodearraylist8
+                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwnewnode5,
+                                               null,
+                                               psignaturenode7,
+                                               null,
+                                               null,
+                                               pexterncodeblocknode10
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction291
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4 = nodearraylist2
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwnewnode5 = nodearraylist3
+                                       assert tkwnewnode5 isa nullable TKwnew
+                                       var pmethidnode6 = nodearraylist4
+                                       assert pmethidnode6 isa nullable AMethid
+                                       var psignaturenode7 = nodearraylist5
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var pexterncodeblocknode10 = nodearraylist8
+                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwnewnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               null,
+                                               null,
+                                               pexterncodeblocknode10
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction292
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwnewnode5 = nodearraylist4
+                                       assert tkwnewnode5 isa nullable TKwnew
+                                       var pmethidnode6 = nodearraylist5
+                                       assert pmethidnode6 isa nullable AMethid
+                                       var psignaturenode7 = nodearraylist6
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var pexterncodeblocknode10 = nodearraylist9
+                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwnewnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               null,
+                                               null,
+                                               pexterncodeblocknode10
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction293
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4 = nodearraylist2
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwnewnode5 = nodearraylist3
+                                       assert tkwnewnode5 isa nullable TKwnew
+                                       var psignaturenode7 = nodearraylist4
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var tstringnode8 = nodearraylist7
+                                       assert tstringnode8 isa nullable TString
+                                       var pexterncodeblocknode10 = nodearraylist8
+                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwnewnode5,
+                                               null,
+                                               psignaturenode7,
+                                               tstringnode8,
+                                               null,
+                                               pexterncodeblocknode10
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction294
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwnewnode5 = nodearraylist4
+                                       assert tkwnewnode5 isa nullable TKwnew
+                                       var psignaturenode7 = nodearraylist5
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var tstringnode8 = nodearraylist8
+                                       assert tstringnode8 isa nullable TString
+                                       var pexterncodeblocknode10 = nodearraylist9
+                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwnewnode5,
+                                               null,
+                                               psignaturenode7,
+                                               tstringnode8,
+                                               null,
+                                               pexterncodeblocknode10
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction295
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4 = nodearraylist2
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwnewnode5 = nodearraylist3
+                                       assert tkwnewnode5 isa nullable TKwnew
+                                       var pmethidnode6 = nodearraylist4
+                                       assert pmethidnode6 isa nullable AMethid
+                                       var psignaturenode7 = nodearraylist5
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var tstringnode8 = nodearraylist8
+                                       assert tstringnode8 isa nullable TString
+                                       var pexterncodeblocknode10 = nodearraylist9
+                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwnewnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               tstringnode8,
+                                               null,
+                                               pexterncodeblocknode10
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction296
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwnewnode5 = nodearraylist4
+                                       assert tkwnewnode5 isa nullable TKwnew
+                                       var pmethidnode6 = nodearraylist5
+                                       assert pmethidnode6 isa nullable AMethid
+                                       var psignaturenode7 = nodearraylist6
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var tstringnode8 = nodearraylist9
+                                       assert tstringnode8 isa nullable TString
+                                       var pexterncodeblocknode10 = nodearraylist10
+                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwnewnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               tstringnode8,
+                                               null,
+                                               pexterncodeblocknode10
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction297
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4 = nodearraylist2
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwnewnode5 = nodearraylist3
+                                       assert tkwnewnode5 isa nullable TKwnew
+                                       var psignaturenode7 = nodearraylist4
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var pexterncallsnode9 = nodearraylist7
+                                       assert pexterncallsnode9 isa nullable AExternCalls
+                                       var pexterncodeblocknode10 = nodearraylist8
+                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwnewnode5,
+                                               null,
+                                               psignaturenode7,
+                                               null,
+                                               pexterncallsnode9,
+                                               pexterncodeblocknode10
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction298
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwnewnode5 = nodearraylist4
+                                       assert tkwnewnode5 isa nullable TKwnew
+                                       var psignaturenode7 = nodearraylist5
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var pexterncallsnode9 = nodearraylist8
+                                       assert pexterncallsnode9 isa nullable AExternCalls
+                                       var pexterncodeblocknode10 = nodearraylist9
+                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwnewnode5,
+                                               null,
+                                               psignaturenode7,
+                                               null,
+                                               pexterncallsnode9,
+                                               pexterncodeblocknode10
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction299
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4 = nodearraylist2
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwnewnode5 = nodearraylist3
+                                       assert tkwnewnode5 isa nullable TKwnew
+                                       var pmethidnode6 = nodearraylist4
+                                       assert pmethidnode6 isa nullable AMethid
+                                       var psignaturenode7 = nodearraylist5
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var pexterncallsnode9 = nodearraylist8
+                                       assert pexterncallsnode9 isa nullable AExternCalls
+                                       var pexterncodeblocknode10 = nodearraylist9
+                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwnewnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               null,
+                                               pexterncallsnode9,
+                                               pexterncodeblocknode10
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction300
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwnewnode5 = nodearraylist4
+                                       assert tkwnewnode5 isa nullable TKwnew
+                                       var pmethidnode6 = nodearraylist5
+                                       assert pmethidnode6 isa nullable AMethid
+                                       var psignaturenode7 = nodearraylist6
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var pexterncallsnode9 = nodearraylist9
+                                       assert pexterncallsnode9 isa nullable AExternCalls
+                                       var pexterncodeblocknode10 = nodearraylist10
+                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwnewnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               null,
+                                               pexterncallsnode9,
+                                               pexterncodeblocknode10
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction301
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4 = nodearraylist2
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwnewnode5 = nodearraylist3
+                                       assert tkwnewnode5 isa nullable TKwnew
+                                       var psignaturenode7 = nodearraylist4
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var tstringnode8 = nodearraylist7
+                                       assert tstringnode8 isa nullable TString
+                                       var pexterncallsnode9 = nodearraylist8
+                                       assert pexterncallsnode9 isa nullable AExternCalls
+                                       var pexterncodeblocknode10 = nodearraylist9
+                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwnewnode5,
+                                               null,
+                                               psignaturenode7,
+                                               tstringnode8,
+                                               pexterncallsnode9,
+                                               pexterncodeblocknode10
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction302
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwnewnode5 = nodearraylist4
+                                       assert tkwnewnode5 isa nullable TKwnew
+                                       var psignaturenode7 = nodearraylist5
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var tstringnode8 = nodearraylist8
+                                       assert tstringnode8 isa nullable TString
+                                       var pexterncallsnode9 = nodearraylist9
+                                       assert pexterncallsnode9 isa nullable AExternCalls
+                                       var pexterncodeblocknode10 = nodearraylist10
+                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwnewnode5,
+                                               null,
+                                               psignaturenode7,
+                                               tstringnode8,
+                                               pexterncallsnode9,
+                                               pexterncodeblocknode10
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction303
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4 = nodearraylist2
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwnewnode5 = nodearraylist3
+                                       assert tkwnewnode5 isa nullable TKwnew
+                                       var pmethidnode6 = nodearraylist4
+                                       assert pmethidnode6 isa nullable AMethid
+                                       var psignaturenode7 = nodearraylist5
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var tstringnode8 = nodearraylist8
+                                       assert tstringnode8 isa nullable TString
+                                       var pexterncallsnode9 = nodearraylist9
+                                       assert pexterncallsnode9 isa nullable AExternCalls
+                                       var pexterncodeblocknode10 = nodearraylist10
+                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwnewnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               tstringnode8,
+                                               pexterncallsnode9,
+                                               pexterncodeblocknode10
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction304
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwnewnode5 = nodearraylist4
+                                       assert tkwnewnode5 isa nullable TKwnew
+                                       var pmethidnode6 = nodearraylist5
+                                       assert pmethidnode6 isa nullable AMethid
+                                       var psignaturenode7 = nodearraylist6
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var tstringnode8 = nodearraylist9
+                                       assert tstringnode8 isa nullable TString
+                                       var pexterncallsnode9 = nodearraylist10
+                                       assert pexterncallsnode9 isa nullable AExternCalls
+                                       var pexterncodeblocknode10 = nodearraylist11
+                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwnewnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               tstringnode8,
+                                               pexterncallsnode9,
+                                               pexterncodeblocknode10
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction305
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4 = nodearraylist2
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwnewnode5 = nodearraylist3
+                                       assert tkwnewnode5 isa nullable TKwnew
+                                       var psignaturenode7 = nodearraylist4
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var pexterncodeblocknode10 = nodearraylist5
+                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwnewnode5,
+                                               null,
+                                               psignaturenode7,
+                                               null,
+                                               null,
+                                               pexterncodeblocknode10
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction306
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwnewnode5 = nodearraylist4
+                                       assert tkwnewnode5 isa nullable TKwnew
+                                       var psignaturenode7 = nodearraylist5
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var pexterncodeblocknode10 = nodearraylist6
+                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwnewnode5,
+                                               null,
+                                               psignaturenode7,
+                                               null,
+                                               null,
+                                               pexterncodeblocknode10
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction307
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4 = nodearraylist2
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwnewnode5 = nodearraylist3
+                                       assert tkwnewnode5 isa nullable TKwnew
+                                       var pmethidnode6 = nodearraylist4
+                                       assert pmethidnode6 isa nullable AMethid
+                                       var psignaturenode7 = nodearraylist5
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var pexterncodeblocknode10 = nodearraylist6
+                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwnewnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               null,
+                                               null,
+                                               pexterncodeblocknode10
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction308
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwnewnode5 = nodearraylist4
+                                       assert tkwnewnode5 isa nullable TKwnew
+                                       var pmethidnode6 = nodearraylist5
+                                       assert pmethidnode6 isa nullable AMethid
+                                       var psignaturenode7 = nodearraylist6
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var pexterncodeblocknode10 = nodearraylist7
+                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwnewnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               null,
+                                               null,
+                                               pexterncodeblocknode10
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction309
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4 = nodearraylist2
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwnewnode5 = nodearraylist3
+                                       assert tkwnewnode5 isa nullable TKwnew
+                                       var psignaturenode7 = nodearraylist4
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var tstringnode8 = nodearraylist5
+                                       assert tstringnode8 isa nullable TString
+                                       var pexterncodeblocknode10 = nodearraylist6
+                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwnewnode5,
+                                               null,
+                                               psignaturenode7,
+                                               tstringnode8,
+                                               null,
+                                               pexterncodeblocknode10
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction310
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwnewnode5 = nodearraylist4
+                                       assert tkwnewnode5 isa nullable TKwnew
+                                       var psignaturenode7 = nodearraylist5
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var tstringnode8 = nodearraylist6
+                                       assert tstringnode8 isa nullable TString
+                                       var pexterncodeblocknode10 = nodearraylist7
+                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwnewnode5,
+                                               null,
+                                               psignaturenode7,
+                                               tstringnode8,
+                                               null,
+                                               pexterncodeblocknode10
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction311
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4 = nodearraylist2
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwnewnode5 = nodearraylist3
+                                       assert tkwnewnode5 isa nullable TKwnew
+                                       var pmethidnode6 = nodearraylist4
+                                       assert pmethidnode6 isa nullable AMethid
+                                       var psignaturenode7 = nodearraylist5
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var tstringnode8 = nodearraylist6
+                                       assert tstringnode8 isa nullable TString
+                                       var pexterncodeblocknode10 = nodearraylist7
+                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwnewnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               tstringnode8,
+                                               null,
+                                               pexterncodeblocknode10
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction312
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwnewnode5 = nodearraylist4
+                                       assert tkwnewnode5 isa nullable TKwnew
+                                       var pmethidnode6 = nodearraylist5
+                                       assert pmethidnode6 isa nullable AMethid
+                                       var psignaturenode7 = nodearraylist6
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var tstringnode8 = nodearraylist7
+                                       assert tstringnode8 isa nullable TString
+                                       var pexterncodeblocknode10 = nodearraylist8
+                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwnewnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               tstringnode8,
+                                               null,
+                                               pexterncodeblocknode10
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction313
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4 = nodearraylist2
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwnewnode5 = nodearraylist3
+                                       assert tkwnewnode5 isa nullable TKwnew
+                                       var psignaturenode7 = nodearraylist4
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var pexterncallsnode9 = nodearraylist5
+                                       assert pexterncallsnode9 isa nullable AExternCalls
+                                       var pexterncodeblocknode10 = nodearraylist6
+                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwnewnode5,
+                                               null,
+                                               psignaturenode7,
+                                               null,
+                                               pexterncallsnode9,
+                                               pexterncodeblocknode10
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction314
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwnewnode5 = nodearraylist4
+                                       assert tkwnewnode5 isa nullable TKwnew
+                                       var psignaturenode7 = nodearraylist5
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var pexterncallsnode9 = nodearraylist6
+                                       assert pexterncallsnode9 isa nullable AExternCalls
+                                       var pexterncodeblocknode10 = nodearraylist7
+                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwnewnode5,
+                                               null,
+                                               psignaturenode7,
+                                               null,
+                                               pexterncallsnode9,
+                                               pexterncodeblocknode10
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction315
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4 = nodearraylist2
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwnewnode5 = nodearraylist3
+                                       assert tkwnewnode5 isa nullable TKwnew
+                                       var pmethidnode6 = nodearraylist4
+                                       assert pmethidnode6 isa nullable AMethid
+                                       var psignaturenode7 = nodearraylist5
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var pexterncallsnode9 = nodearraylist6
+                                       assert pexterncallsnode9 isa nullable AExternCalls
+                                       var pexterncodeblocknode10 = nodearraylist7
+                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwnewnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               null,
+                                               pexterncallsnode9,
+                                               pexterncodeblocknode10
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction316
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwnewnode5 = nodearraylist4
+                                       assert tkwnewnode5 isa nullable TKwnew
+                                       var pmethidnode6 = nodearraylist5
+                                       assert pmethidnode6 isa nullable AMethid
+                                       var psignaturenode7 = nodearraylist6
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var pexterncallsnode9 = nodearraylist7
+                                       assert pexterncallsnode9 isa nullable AExternCalls
+                                       var pexterncodeblocknode10 = nodearraylist8
+                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwnewnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               null,
+                                               pexterncallsnode9,
+                                               pexterncodeblocknode10
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction317
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4 = nodearraylist2
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwnewnode5 = nodearraylist3
+                                       assert tkwnewnode5 isa nullable TKwnew
+                                       var psignaturenode7 = nodearraylist4
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var tstringnode8 = nodearraylist5
+                                       assert tstringnode8 isa nullable TString
+                                       var pexterncallsnode9 = nodearraylist6
+                                       assert pexterncallsnode9 isa nullable AExternCalls
+                                       var pexterncodeblocknode10 = nodearraylist7
+                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwnewnode5,
+                                               null,
+                                               psignaturenode7,
+                                               tstringnode8,
+                                               pexterncallsnode9,
+                                               pexterncodeblocknode10
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction318
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwnewnode5 = nodearraylist4
+                                       assert tkwnewnode5 isa nullable TKwnew
+                                       var psignaturenode7 = nodearraylist5
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var tstringnode8 = nodearraylist6
+                                       assert tstringnode8 isa nullable TString
+                                       var pexterncallsnode9 = nodearraylist7
+                                       assert pexterncallsnode9 isa nullable AExternCalls
+                                       var pexterncodeblocknode10 = nodearraylist8
+                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwnewnode5,
+                                               null,
+                                               psignaturenode7,
+                                               tstringnode8,
+                                               pexterncallsnode9,
+                                               pexterncodeblocknode10
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction319
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var pvisibilitynode4 = nodearraylist2
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwnewnode5 = nodearraylist3
+                                       assert tkwnewnode5 isa nullable TKwnew
+                                       var pmethidnode6 = nodearraylist4
+                                       assert pmethidnode6 isa nullable AMethid
+                                       var psignaturenode7 = nodearraylist5
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var tstringnode8 = nodearraylist6
+                                       assert tstringnode8 isa nullable TString
+                                       var pexterncallsnode9 = nodearraylist7
+                                       assert pexterncallsnode9 isa nullable AExternCalls
+                                       var pexterncodeblocknode10 = nodearraylist8
+                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                               pdocnode2,
+                                               null,
+                                               pvisibilitynode4,
+                                               tkwnewnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               tstringnode8,
+                                               pexterncallsnode9,
+                                               pexterncodeblocknode10
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction320
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pdocnode2 = nodearraylist1
+                                       assert pdocnode2 isa nullable ADoc
+                                       var tkwredefnode3 = nodearraylist2
+                                       assert tkwredefnode3 isa nullable TKwredef
+                                       var pvisibilitynode4 = nodearraylist3
+                                       assert pvisibilitynode4 isa nullable AVisibility
+                                       var tkwnewnode5 = nodearraylist4
+                                       assert tkwnewnode5 isa nullable TKwnew
+                                       var pmethidnode6 = nodearraylist5
+                                       assert pmethidnode6 isa nullable AMethid
+                                       var psignaturenode7 = nodearraylist6
+                                       assert psignaturenode7 isa nullable ASignature
+                                       var tstringnode8 = nodearraylist7
+                                       assert tstringnode8 isa nullable TString
+                                       var pexterncallsnode9 = nodearraylist8
+                                       assert pexterncallsnode9 isa nullable AExternCalls
+                                       var pexterncodeblocknode10 = nodearraylist9
+                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
+                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
+                                               pdocnode2,
+                                               tkwredefnode3,
+                                               pvisibilitynode4,
+                                               tkwnewnode5,
+                                               pmethidnode6,
+                                               psignaturenode7,
+                                               tstringnode8,
+                                               pexterncallsnode9,
+                                               pexterncodeblocknode10
+                                       )
+                                       node_list = ppropdefnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction321
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pannotationsnode1 = nodearraylist2
+                                       node_list = pannotationsnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction322
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pannotationsnode1 = nodearraylist3
+                                       node_list = pannotationsnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction324
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pannotationsnode1 = nodearraylist3
+                                       node_list = pannotationsnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction325
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tkwreadablenode3 = nodearraylist1
+                                       assert tkwreadablenode3 isa nullable TKwreadable
+                                       var pablenode1: nullable AReadAble = new AReadAble.init_areadable(
+                                               null,
+                                               tkwreadablenode3
+                                       )
+                                       node_list = pablenode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction326
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tkwredefnode2 = nodearraylist1
+                                       assert tkwredefnode2 isa nullable TKwredef
+                                       var tkwreadablenode3 = nodearraylist2
+                                       assert tkwreadablenode3 isa nullable TKwreadable
+                                       var pablenode1: nullable AReadAble = new AReadAble.init_areadable(
+                                               tkwredefnode2,
+                                               tkwreadablenode3
+                                       )
+                                       node_list = pablenode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction327
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tkwwritablenode4 = nodearraylist1
+                                       assert tkwwritablenode4 isa nullable TKwwritable
+                                       var pablenode1: nullable AWriteAble = new AWriteAble.init_awriteable(
+                                               null,
+                                               null,
+                                               tkwwritablenode4
+                                       )
+                                       node_list = pablenode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction328
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tkwredefnode2 = nodearraylist1
+                                       assert tkwredefnode2 isa nullable TKwredef
+                                       var tkwwritablenode4 = nodearraylist2
+                                       assert tkwwritablenode4 isa nullable TKwwritable
+                                       var pablenode1: nullable AWriteAble = new AWriteAble.init_awriteable(
+                                               tkwredefnode2,
+                                               null,
+                                               tkwwritablenode4
+                                       )
+                                       node_list = pablenode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction329
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pvisibilitynode3 = nodearraylist1
+                                       assert pvisibilitynode3 isa nullable AVisibility
+                                       var tkwwritablenode4 = nodearraylist2
+                                       assert tkwwritablenode4 isa nullable TKwwritable
+                                       var pablenode1: nullable AWriteAble = new AWriteAble.init_awriteable(
+                                               null,
+                                               pvisibilitynode3,
+                                               tkwwritablenode4
+                                       )
+                                       node_list = pablenode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction330
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tkwredefnode2 = nodearraylist1
+                                       assert tkwredefnode2 isa nullable TKwredef
+                                       var pvisibilitynode3 = nodearraylist2
+                                       assert pvisibilitynode3 isa nullable AVisibility
+                                       var tkwwritablenode4 = nodearraylist3
+                                       assert tkwwritablenode4 isa nullable TKwwritable
+                                       var pablenode1: nullable AWriteAble = new AWriteAble.init_awriteable(
+                                               tkwredefnode2,
+                                               pvisibilitynode3,
+                                               tkwwritablenode4
+                                       )
+                                       node_list = pablenode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction331
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var pvisibilitynode1: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility
+                                       node_list = pvisibilitynode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction332
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tkwprivatenode2 = nodearraylist1
+                                       assert tkwprivatenode2 isa nullable TKwprivate
+                                       var pvisibilitynode1: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
+                                               tkwprivatenode2
+                                       )
+                                       node_list = pvisibilitynode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction333
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tkwprotectednode2 = nodearraylist1
+                                       assert tkwprotectednode2 isa nullable TKwprotected
+                                       var pvisibilitynode1: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
+                                               tkwprotectednode2
+                                       )
+                                       node_list = pvisibilitynode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction334
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tkwintrudenode2 = nodearraylist1
+                                       assert tkwintrudenode2 isa nullable TKwintrude
+                                       var pvisibilitynode1: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
+                                               tkwintrudenode2
+                                       )
+                                       node_list = pvisibilitynode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction335
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tidnode2 = nodearraylist1
+                                       assert tidnode2 isa nullable TId
+                                       var pmethidnode1: nullable AIdMethid = new AIdMethid.init_aidmethid(
+                                               tidnode2
+                                       )
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction336
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tplusnode2 = nodearraylist1
+                                       assert tplusnode2 isa nullable TPlus
+                                       var pmethidnode1: nullable APlusMethid = new APlusMethid.init_aplusmethid(
+                                               tplusnode2
+                                       )
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction337
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tminusnode2 = nodearraylist1
+                                       assert tminusnode2 isa nullable TMinus
+                                       var pmethidnode1: nullable AMinusMethid = new AMinusMethid.init_aminusmethid(
+                                               tminusnode2
+                                       )
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction338
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tstarnode2 = nodearraylist1
+                                       assert tstarnode2 isa nullable TStar
+                                       var pmethidnode1: nullable AStarMethid = new AStarMethid.init_astarmethid(
+                                               tstarnode2
+                                       )
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction339
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tslashnode2 = nodearraylist1
+                                       assert tslashnode2 isa nullable TSlash
+                                       var pmethidnode1: nullable ASlashMethid = new ASlashMethid.init_aslashmethid(
+                                               tslashnode2
+                                       )
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction340
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tpercentnode2 = nodearraylist1
+                                       assert tpercentnode2 isa nullable TPercent
+                                       var pmethidnode1: nullable APercentMethid = new APercentMethid.init_apercentmethid(
+                                               tpercentnode2
+                                       )
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction341
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var teqnode2 = nodearraylist1
+                                       assert teqnode2 isa nullable TEq
+                                       var pmethidnode1: nullable AEqMethid = new AEqMethid.init_aeqmethid(
+                                               teqnode2
+                                       )
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction342
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tnenode2 = nodearraylist1
+                                       assert tnenode2 isa nullable TNe
+                                       var pmethidnode1: nullable ANeMethid = new ANeMethid.init_anemethid(
+                                               tnenode2
+                                       )
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction343
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tlenode2 = nodearraylist1
+                                       assert tlenode2 isa nullable TLe
+                                       var pmethidnode1: nullable ALeMethid = new ALeMethid.init_alemethid(
+                                               tlenode2
+                                       )
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction344
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tgenode2 = nodearraylist1
+                                       assert tgenode2 isa nullable TGe
+                                       var pmethidnode1: nullable AGeMethid = new AGeMethid.init_agemethid(
+                                               tgenode2
+                                       )
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction345
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tltnode2 = nodearraylist1
+                                       assert tltnode2 isa nullable TLt
+                                       var pmethidnode1: nullable ALtMethid = new ALtMethid.init_altmethid(
+                                               tltnode2
+                                       )
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction346
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tgtnode2 = nodearraylist1
+                                       assert tgtnode2 isa nullable TGt
+                                       var pmethidnode1: nullable AGtMethid = new AGtMethid.init_agtmethid(
+                                               tgtnode2
+                                       )
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction347
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tllnode2 = nodearraylist1
+                                       assert tllnode2 isa nullable TLl
+                                       var pmethidnode1: nullable ALlMethid = new ALlMethid.init_allmethid(
+                                               tllnode2
+                                       )
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction348
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tggnode2 = nodearraylist1
+                                       assert tggnode2 isa nullable TGg
+                                       var pmethidnode1: nullable AGgMethid = new AGgMethid.init_aggmethid(
+                                               tggnode2
+                                       )
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction349
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tobranode2 = nodearraylist1
+                                       assert tobranode2 isa nullable TObra
+                                       var tcbranode3 = nodearraylist2
+                                       assert tcbranode3 isa nullable TCbra
+                                       var pmethidnode1: nullable ABraMethid = new ABraMethid.init_abramethid(
+                                               tobranode2,
+                                               tcbranode3
+                                       )
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction350
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tstarshipnode2 = nodearraylist1
+                                       assert tstarshipnode2 isa nullable TStarship
+                                       var pmethidnode1: nullable AStarshipMethid = new AStarshipMethid.init_astarshipmethid(
+                                               tstarshipnode2
+                                       )
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction351
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tidnode2 = nodearraylist1
+                                       assert tidnode2 isa nullable TId
+                                       var tassignnode3 = nodearraylist2
+                                       assert tassignnode3 isa nullable TAssign
+                                       var pmethidnode1: nullable AAssignMethid = new AAssignMethid.init_aassignmethid(
+                                               tidnode2,
+                                               tassignnode3
+                                       )
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction352
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tobranode2 = nodearraylist1
+                                       assert tobranode2 isa nullable TObra
+                                       var tcbranode3 = nodearraylist2
+                                       assert tcbranode3 isa nullable TCbra
+                                       var tassignnode4 = nodearraylist3
+                                       assert tassignnode4 isa nullable TAssign
+                                       var pmethidnode1: nullable ABraassignMethid = new ABraassignMethid.init_abraassignmethid(
+                                               tobranode2,
+                                               tcbranode3,
+                                               tassignnode4
+                                       )
+                                       node_list = pmethidnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction353
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var listnode3 = new Array[Object]
+                                       var listnode6 = new Array[Object]
+                                       var toparnode2 = nodearraylist1
+                                       assert toparnode2 isa nullable TOpar
+                                       var tcparnode4 = nodearraylist3
+                                       assert tcparnode4 isa nullable TCpar
+                                       var ptypenode5 = nodearraylist4
+                                       assert ptypenode5 isa nullable AType
+                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
+                                               toparnode2,
+                                               listnode3,
+                                               tcparnode4,
+                                               ptypenode5,
+                                               listnode6
+                                       )
+                                       node_list = psignaturenode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction354
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var listnode4 = new Array[Object]
+                                       var listnode7 = new Array[Object]
+                                       var toparnode2 = nodearraylist1
+                                       assert toparnode2 isa nullable TOpar
+                                       var listnode3 = nodearraylist3
+                                       assert listnode3 isa Array[Object]
+                                       listnode4 = concat(listnode4, listnode3)
+                                       var tcparnode5 = nodearraylist4
+                                       assert tcparnode5 isa nullable TCpar
+                                       var ptypenode6 = nodearraylist5
+                                       assert ptypenode6 isa nullable AType
+                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
+                                               toparnode2,
+                                               listnode4,
+                                               tcparnode5,
+                                               ptypenode6,
+                                               listnode7
+                                       )
+                                       node_list = psignaturenode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction355
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var listnode3 = new Array[Object]
+                                       var listnode7 = new Array[Object]
+                                       var toparnode2 = nodearraylist1
+                                       assert toparnode2 isa nullable TOpar
+                                       var tcparnode4 = nodearraylist3
+                                       assert tcparnode4 isa nullable TCpar
+                                       var ptypenode5 = nodearraylist4
+                                       assert ptypenode5 isa nullable AType
+                                       var listnode6 = nodearraylist6
+                                       assert listnode6 isa Array[Object]
+                                       listnode7 = concat(listnode7, listnode6)
+                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
+                                               toparnode2,
+                                               listnode3,
+                                               tcparnode4,
+                                               ptypenode5,
+                                               listnode7
+                                       )
+                                       node_list = psignaturenode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction356
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var listnode4 = new Array[Object]
+                                       var listnode8 = new Array[Object]
+                                       var toparnode2 = nodearraylist1
+                                       assert toparnode2 isa nullable TOpar
+                                       var listnode3 = nodearraylist3
+                                       assert listnode3 isa Array[Object]
+                                       listnode4 = concat(listnode4, listnode3)
+                                       var tcparnode5 = nodearraylist4
+                                       assert tcparnode5 isa nullable TCpar
+                                       var ptypenode6 = nodearraylist5
+                                       assert ptypenode6 isa nullable AType
+                                       var listnode7 = nodearraylist7
+                                       assert listnode7 isa Array[Object]
+                                       listnode8 = concat(listnode8, listnode7)
+                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
+                                               toparnode2,
+                                               listnode4,
+                                               tcparnode5,
+                                               ptypenode6,
+                                               listnode8
+                                       )
+                                       node_list = psignaturenode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction357
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var listnode3 = new Array[Object]
+                                       var listnode6 = new Array[Object]
+                                       var toparnode2 = nodearraylist1
+                                       assert toparnode2 isa nullable TOpar
+                                       var tcparnode4 = nodearraylist3
+                                       assert tcparnode4 isa nullable TCpar
+                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
+                                               toparnode2,
+                                               listnode3,
+                                               tcparnode4,
+                                               null,
+                                               listnode6
+                                       )
+                                       node_list = psignaturenode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction358
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var listnode4 = new Array[Object]
+                                       var listnode7 = new Array[Object]
+                                       var toparnode2 = nodearraylist1
+                                       assert toparnode2 isa nullable TOpar
+                                       var listnode3 = nodearraylist3
+                                       assert listnode3 isa Array[Object]
+                                       listnode4 = concat(listnode4, listnode3)
+                                       var tcparnode5 = nodearraylist4
+                                       assert tcparnode5 isa nullable TCpar
+                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
+                                               toparnode2,
+                                               listnode4,
+                                               tcparnode5,
+                                               null,
+                                               listnode7
+                                       )
+                                       node_list = psignaturenode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction359
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var listnode3 = new Array[Object]
+                                       var listnode7 = new Array[Object]
+                                       var toparnode2 = nodearraylist1
+                                       assert toparnode2 isa nullable TOpar
+                                       var tcparnode4 = nodearraylist3
+                                       assert tcparnode4 isa nullable TCpar
+                                       var listnode6 = nodearraylist5
+                                       assert listnode6 isa Array[Object]
+                                       listnode7 = concat(listnode7, listnode6)
+                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
+                                               toparnode2,
+                                               listnode3,
+                                               tcparnode4,
+                                               null,
+                                               listnode7
+                                       )
+                                       node_list = psignaturenode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction360
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var listnode4 = new Array[Object]
+                                       var listnode8 = new Array[Object]
+                                       var toparnode2 = nodearraylist1
+                                       assert toparnode2 isa nullable TOpar
+                                       var listnode3 = nodearraylist3
+                                       assert listnode3 isa Array[Object]
+                                       listnode4 = concat(listnode4, listnode3)
+                                       var tcparnode5 = nodearraylist4
+                                       assert tcparnode5 isa nullable TCpar
+                                       var listnode7 = nodearraylist6
+                                       assert listnode7 isa Array[Object]
+                                       listnode8 = concat(listnode8, listnode7)
+                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
+                                               toparnode2,
+                                               listnode4,
+                                               tcparnode5,
+                                               null,
+                                               listnode8
+                                       )
+                                       node_list = psignaturenode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction361
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var listnode3 = new Array[Object]
+                                       var listnode6 = new Array[Object]
+                                       var ptypenode5 = nodearraylist1
+                                       assert ptypenode5 isa nullable AType
+                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
+                                               null,
+                                               listnode3,
+                                               null,
+                                               ptypenode5,
+                                               listnode6
+                                       )
+                                       node_list = psignaturenode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction362
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var listnode3 = new Array[Object]
+                                       var listnode7 = new Array[Object]
+                                       var ptypenode5 = nodearraylist1
+                                       assert ptypenode5 isa nullable AType
+                                       var listnode6 = nodearraylist3
+                                       assert listnode6 isa Array[Object]
+                                       listnode7 = concat(listnode7, listnode6)
+                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
+                                               null,
+                                               listnode3,
+                                               null,
+                                               ptypenode5,
+                                               listnode7
+                                       )
+                                       node_list = psignaturenode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction363
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var listnode3 = new Array[Object]
+                                       var listnode6 = new Array[Object]
+                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
+                                               null,
+                                               listnode3,
+                                               null,
+                                               null,
+                                               listnode6
+                                       )
+                                       node_list = psignaturenode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction364
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var listnode3 = new Array[Object]
+                                       var listnode7 = new Array[Object]
+                                       var listnode6 = nodearraylist2
+                                       assert listnode6 isa Array[Object]
+                                       listnode7 = concat(listnode7, listnode6)
+                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
+                                               null,
+                                               listnode3,
+                                               null,
+                                               null,
+                                               listnode7
+                                       )
+                                       node_list = psignaturenode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction365
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var listnode3 = new Array[Object]
+                                       var listnode6 = new Array[Object]
+                                       var toparnode2 = nodearraylist1
+                                       assert toparnode2 isa nullable TOpar
+                                       var tcparnode4 = nodearraylist3
+                                       assert tcparnode4 isa nullable TCpar
+                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
+                                               toparnode2,
+                                               listnode3,
+                                               tcparnode4,
+                                               null,
+                                               listnode6
+                                       )
+                                       node_list = psignaturenode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction366
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var listnode4 = new Array[Object]
+                                       var listnode7 = new Array[Object]
+                                       var toparnode2 = nodearraylist1
+                                       assert toparnode2 isa nullable TOpar
+                                       var listnode3 = nodearraylist3
+                                       assert listnode3 isa Array[Object]
+                                       listnode4 = concat(listnode4, listnode3)
+                                       var tcparnode5 = nodearraylist4
+                                       assert tcparnode5 isa nullable TCpar
+                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
+                                               toparnode2,
+                                               listnode4,
+                                               tcparnode5,
+                                               null,
+                                               listnode7
+                                       )
+                                       node_list = psignaturenode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction367
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var listnode3 = new Array[Object]
+                                       var listnode6 = new Array[Object]
+                                       var toparnode2 = nodearraylist1
+                                       assert toparnode2 isa nullable TOpar
+                                       var tcparnode4 = nodearraylist3
+                                       assert tcparnode4 isa nullable TCpar
+                                       var ptypenode5 = nodearraylist4
+                                       assert ptypenode5 isa nullable AType
+                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
+                                               toparnode2,
+                                               listnode3,
+                                               tcparnode4,
+                                               ptypenode5,
+                                               listnode6
+                                       )
+                                       node_list = psignaturenode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction368
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var listnode4 = new Array[Object]
+                                       var listnode7 = new Array[Object]
+                                       var toparnode2 = nodearraylist1
+                                       assert toparnode2 isa nullable TOpar
+                                       var listnode3 = nodearraylist3
+                                       assert listnode3 isa Array[Object]
+                                       listnode4 = concat(listnode4, listnode3)
+                                       var tcparnode5 = nodearraylist4
+                                       assert tcparnode5 isa nullable TCpar
+                                       var ptypenode6 = nodearraylist5
+                                       assert ptypenode6 isa nullable AType
+                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
+                                               toparnode2,
+                                               listnode4,
+                                               tcparnode5,
+                                               ptypenode6,
+                                               listnode7
+                                       )
+                                       node_list = psignaturenode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction369
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var listnode3 = new Array[Object]
+                                       var listnode6 = new Array[Object]
+                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
+                                               null,
+                                               listnode3,
+                                               null,
+                                               null,
+                                               listnode6
+                                       )
+                                       node_list = psignaturenode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction370
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var listnode3 = new Array[Object]
+                                       var listnode6 = new Array[Object]
+                                       var ptypenode5 = nodearraylist1
+                                       assert ptypenode5 isa nullable AType
+                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
+                                               null,
+                                               listnode3,
+                                               null,
+                                               ptypenode5,
+                                               listnode6
+                                       )
+                                       node_list = psignaturenode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction371
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var listnode2 = new Array[Object]
+                                       var pparamnode1 = nodearraylist1
+                                       if pparamnode1 != null then
+                                               listnode2.add(pparamnode1)
+                                       end
+                                       node_list = listnode2
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction372
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var listnode3 = new Array[Object]
+                                       var pparamnode1 = nodearraylist1
+                                       var listnode2 = nodearraylist2
+                                       assert listnode2 isa Array[Object]
+                                       if pparamnode1 != null then
+                                               listnode3.add(pparamnode1)
+                                       end
+                                       listnode3 = concat(listnode3, listnode2)
+                                       node_list = listnode3
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction373
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pparamnode1 = nodearraylist3
+                                       node_list = pparamnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction374
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tidnode2 = nodearraylist1
+                                       assert tidnode2 isa nullable TId
+                                       var pparamnode1: nullable AParam = new AParam.init_aparam(
+                                               tidnode2,
+                                               null,
+                                               null,
+                                               null
+                                       )
+                                       node_list = pparamnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction375
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tidnode2 = nodearraylist1
+                                       assert tidnode2 isa nullable TId
+                                       var pannotationsnode5 = nodearraylist2
+                                       assert pannotationsnode5 isa nullable AAnnotations
+                                       var pparamnode1: nullable AParam = new AParam.init_aparam(
+                                               tidnode2,
+                                               null,
+                                               null,
+                                               pannotationsnode5
+                                       )
+                                       node_list = pparamnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction376
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwnewnode5 = nodearraylist3
-                                       assert tkwnewnode5 isa nullable TKwnew
-                                       var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var tstringnode8 = nodearraylist6
-                                       assert tstringnode8 isa nullable TString
-                                       var pexterncallsnode9 = nodearraylist7
-                                       assert pexterncallsnode9 isa nullable AExternCalls
-                                       var pexterncodeblocknode10 = nodearraylist8
-                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
-                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
-                                               pdocnode2,
+                                       var tidnode2 = nodearraylist1
+                                       assert tidnode2 isa nullable TId
+                                       var ptypenode3 = nodearraylist2
+                                       assert ptypenode3 isa nullable AType
+                                       var pparamnode1: nullable AParam = new AParam.init_aparam(
+                                               tidnode2,
+                                               ptypenode3,
                                                null,
                                                null,
-                                               pvisibilitynode4,
-                                               tkwnewnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               tstringnode8,
-                                               pexterncallsnode9,
-                                               pexterncodeblocknode10
+                                               null
                                        )
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pparamnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction251
+private class ReduceAction377
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa nullable ADoc
-                                       var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa nullable TKwredef
-                                       var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa nullable AVisibility
-                                       var tkwnewnode5 = nodearraylist4
-                                       assert tkwnewnode5 isa nullable TKwnew
-                                       var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa nullable AMethid
-                                       var psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa nullable ASignature
-                                       var tstringnode8 = nodearraylist7
-                                       assert tstringnode8 isa nullable TString
-                                       var pexterncallsnode9 = nodearraylist8
-                                       assert pexterncallsnode9 isa nullable AExternCalls
-                                       var pexterncodeblocknode10 = nodearraylist9
-                                       assert pexterncodeblocknode10 isa nullable AExternCodeBlock
-                                       var ppropdefnode1: nullable AExternInitPropdef = new AExternInitPropdef.init_aexterninitpropdef(
-                                               pdocnode2,
-                                               tkwredefnode3,
-                                               pvisibilitynode4,
-                                               tkwnewnode5,
-                                               pmethidnode6,
-                                               psignaturenode7,
-                                               tstringnode8,
-                                               pexterncallsnode9,
-                                               pexterncodeblocknode10
+                                       var tidnode2 = nodearraylist1
+                                       assert tidnode2 isa nullable TId
+                                       var ptypenode3 = nodearraylist3
+                                       assert ptypenode3 isa nullable AType
+                                       var pannotationsnode5 = nodearraylist2
+                                       assert pannotationsnode5 isa nullable AAnnotations
+                                       var pparamnode1: nullable AParam = new AParam.init_aparam(
+                                               tidnode2,
+                                               ptypenode3,
+                                               null,
+                                               pannotationsnode5
                                        )
                                        )
-                                       node_list = ppropdefnode1
+                                       node_list = pparamnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction252
+private class ReduceAction378
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwreadablenode3 = nodearraylist1
-                                       assert tkwreadablenode3 isa nullable TKwreadable
-                                       var pablenode1: nullable AReadAble = new AReadAble.init_areadable(
-                                               null,
-                                               tkwreadablenode3
+                                       var tidnode2 = nodearraylist1
+                                       assert tidnode2 isa nullable TId
+                                       var ptypenode3 = nodearraylist2
+                                       assert ptypenode3 isa nullable AType
+                                       var tdotdotdotnode4 = nodearraylist3
+                                       assert tdotdotdotnode4 isa nullable TDotdotdot
+                                       var pparamnode1: nullable AParam = new AParam.init_aparam(
+                                               tidnode2,
+                                               ptypenode3,
+                                               tdotdotdotnode4,
+                                               null
                                        )
                                        )
-                                       node_list = pablenode1
+                                       node_list = pparamnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction253
+private class ReduceAction379
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwredefnode2 = nodearraylist1
-                                       assert tkwredefnode2 isa nullable TKwredef
-                                       var tkwreadablenode3 = nodearraylist2
-                                       assert tkwreadablenode3 isa nullable TKwreadable
-                                       var pablenode1: nullable AReadAble = new AReadAble.init_areadable(
-                                               tkwredefnode2,
-                                               tkwreadablenode3
+                                       var tidnode2 = nodearraylist1
+                                       assert tidnode2 isa nullable TId
+                                       var ptypenode3 = nodearraylist3
+                                       assert ptypenode3 isa nullable AType
+                                       var tdotdotdotnode4 = nodearraylist4
+                                       assert tdotdotdotnode4 isa nullable TDotdotdot
+                                       var pannotationsnode5 = nodearraylist2
+                                       assert pannotationsnode5 isa nullable AAnnotations
+                                       var pparamnode1: nullable AParam = new AParam.init_aparam(
+                                               tidnode2,
+                                               ptypenode3,
+                                               tdotdotdotnode4,
+                                               pannotationsnode5
                                        )
                                        )
-                                       node_list = pablenode1
+                                       node_list = pparamnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction254
+private class ReduceAction380
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
-                                       var tkwwritablenode4 = nodearraylist1
-                                       assert tkwwritablenode4 isa nullable TKwwritable
-                                       var pablenode1: nullable AWriteAble = new AWriteAble.init_awriteable(
-                                               null,
-                                               null,
-                                               tkwwritablenode4
-                                       )
-                                       node_list = pablenode1
+                                       var listnode2 = new Array[Object]
+                                       var listnode1 = nodearraylist1
+                                       assert listnode1 isa Array[Object]
+                                       listnode2 = concat(listnode2, listnode1)
+                                       node_list = listnode2
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction255
+private class ReduceAction381
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwredefnode2 = nodearraylist1
-                                       assert tkwredefnode2 isa nullable TKwredef
-                                       var tkwwritablenode4 = nodearraylist2
-                                       assert tkwwritablenode4 isa nullable TKwwritable
-                                       var pablenode1: nullable AWriteAble = new AWriteAble.init_awriteable(
-                                               tkwredefnode2,
+                                       var tbangnode3 = nodearraylist1
+                                       assert tbangnode3 isa nullable TBang
+                                       var tidnode4 = nodearraylist2
+                                       assert tidnode4 isa nullable TId
+                                       var psignaturenode5 = nodearraylist3
+                                       assert psignaturenode5 isa nullable ASignature
+                                       var pclosuredeclnode1: nullable AClosureDecl = new AClosureDecl.init_aclosuredecl(
                                                null,
                                                null,
-                                               tkwwritablenode4
+                                               tbangnode3,
+                                               tidnode4,
+                                               psignaturenode5,
+                                               null
                                        )
                                        )
-                                       node_list = pablenode1
+                                       node_list = pclosuredeclnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction256
+private class ReduceAction382
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pvisibilitynode3 = nodearraylist1
-                                       assert pvisibilitynode3 isa nullable AVisibility
-                                       var tkwwritablenode4 = nodearraylist2
-                                       assert tkwwritablenode4 isa nullable TKwwritable
-                                       var pablenode1: nullable AWriteAble = new AWriteAble.init_awriteable(
-                                               null,
-                                               pvisibilitynode3,
-                                               tkwwritablenode4
+                                       var tkwbreaknode2 = nodearraylist1
+                                       assert tkwbreaknode2 isa nullable TKwbreak
+                                       var tbangnode3 = nodearraylist2
+                                       assert tbangnode3 isa nullable TBang
+                                       var tidnode4 = nodearraylist3
+                                       assert tidnode4 isa nullable TId
+                                       var psignaturenode5 = nodearraylist4
+                                       assert psignaturenode5 isa nullable ASignature
+                                       var pclosuredeclnode1: nullable AClosureDecl = new AClosureDecl.init_aclosuredecl(
+                                               tkwbreaknode2,
+                                               tbangnode3,
+                                               tidnode4,
+                                               psignaturenode5,
+                                               null
                                        )
                                        )
-                                       node_list = pablenode1
+                                       node_list = pclosuredeclnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction257
+private class ReduceAction383
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwredefnode2 = nodearraylist1
-                                       assert tkwredefnode2 isa nullable TKwredef
-                                       var pvisibilitynode3 = nodearraylist2
-                                       assert pvisibilitynode3 isa nullable AVisibility
-                                       var tkwwritablenode4 = nodearraylist3
-                                       assert tkwwritablenode4 isa nullable TKwwritable
-                                       var pablenode1: nullable AWriteAble = new AWriteAble.init_awriteable(
-                                               tkwredefnode2,
-                                               pvisibilitynode3,
-                                               tkwwritablenode4
+                                       var tbangnode3 = nodearraylist1
+                                       assert tbangnode3 isa nullable TBang
+                                       var tidnode4 = nodearraylist2
+                                       assert tidnode4 isa nullable TId
+                                       var psignaturenode5 = nodearraylist3
+                                       assert psignaturenode5 isa nullable ASignature
+                                       var pexprnode6 = nodearraylist5
+                                       assert pexprnode6 isa nullable AExpr
+                                       var pclosuredeclnode1: nullable AClosureDecl = new AClosureDecl.init_aclosuredecl(
+                                               null,
+                                               tbangnode3,
+                                               tidnode4,
+                                               psignaturenode5,
+                                               pexprnode6
                                        )
                                        )
-                                       node_list = pablenode1
+                                       node_list = pclosuredeclnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction258
+private class ReduceAction384
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var pvisibilitynode1: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility
-                                       node_list = pvisibilitynode1
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tkwbreaknode2 = nodearraylist1
+                                       assert tkwbreaknode2 isa nullable TKwbreak
+                                       var tbangnode3 = nodearraylist2
+                                       assert tbangnode3 isa nullable TBang
+                                       var tidnode4 = nodearraylist3
+                                       assert tidnode4 isa nullable TId
+                                       var psignaturenode5 = nodearraylist4
+                                       assert psignaturenode5 isa nullable ASignature
+                                       var pexprnode6 = nodearraylist6
+                                       assert pexprnode6 isa nullable AExpr
+                                       var pclosuredeclnode1: nullable AClosureDecl = new AClosureDecl.init_aclosuredecl(
+                                               tkwbreaknode2,
+                                               tbangnode3,
+                                               tidnode4,
+                                               psignaturenode5,
+                                               pexprnode6
+                                       )
+                                       node_list = pclosuredeclnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction259
+private class ReduceAction385
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwprivatenode2 = nodearraylist1
-                                       assert tkwprivatenode2 isa nullable TKwprivate
-                                       var pvisibilitynode1: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
-                                               tkwprivatenode2
+                                       var tbangnode3 = nodearraylist1
+                                       assert tbangnode3 isa nullable TBang
+                                       var tidnode4 = nodearraylist2
+                                       assert tidnode4 isa nullable TId
+                                       var psignaturenode5 = nodearraylist3
+                                       assert psignaturenode5 isa nullable ASignature
+                                       var pexprnode6 = nodearraylist6
+                                       assert pexprnode6 isa nullable AExpr
+                                       var pclosuredeclnode1: nullable AClosureDecl = new AClosureDecl.init_aclosuredecl(
+                                               null,
+                                               tbangnode3,
+                                               tidnode4,
+                                               psignaturenode5,
+                                               pexprnode6
                                        )
                                        )
-                                       node_list = pvisibilitynode1
+                                       node_list = pclosuredeclnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction260
+private class ReduceAction386
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwprotectednode2 = nodearraylist1
-                                       assert tkwprotectednode2 isa nullable TKwprotected
-                                       var pvisibilitynode1: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
-                                               tkwprotectednode2
+                                       var tkwbreaknode2 = nodearraylist1
+                                       assert tkwbreaknode2 isa nullable TKwbreak
+                                       var tbangnode3 = nodearraylist2
+                                       assert tbangnode3 isa nullable TBang
+                                       var tidnode4 = nodearraylist3
+                                       assert tidnode4 isa nullable TId
+                                       var psignaturenode5 = nodearraylist4
+                                       assert psignaturenode5 isa nullable ASignature
+                                       var pexprnode6 = nodearraylist7
+                                       assert pexprnode6 isa nullable AExpr
+                                       var pclosuredeclnode1: nullable AClosureDecl = new AClosureDecl.init_aclosuredecl(
+                                               tkwbreaknode2,
+                                               tbangnode3,
+                                               tidnode4,
+                                               psignaturenode5,
+                                               pexprnode6
                                        )
                                        )
-                                       node_list = pvisibilitynode1
+                                       node_list = pclosuredeclnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction261
+private class ReduceAction387
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwintrudenode2 = nodearraylist1
-                                       assert tkwintrudenode2 isa nullable TKwintrude
-                                       var pvisibilitynode1: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
-                                               tkwintrudenode2
+                                       var pexprnode3 = nodearraylist1
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode1: nullable AReturnExpr = new AReturnExpr.init_areturnexpr(
+                                               null,
+                                               pexprnode3
                                        )
                                        )
-                                       node_list = pvisibilitynode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction262
+private class ReduceAction388
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tidnode2 = nodearraylist1
-                                       assert tidnode2 isa nullable TId
-                                       var pmethidnode1: nullable AIdMethid = new AIdMethid.init_aidmethid(
-                                               tidnode2
+                                       var listnode4 = new Array[Object]
+                                       var tkwimportnode2 = nodearraylist1
+                                       assert tkwimportnode2 isa nullable TKwimport
+                                       var pexterncallnode3 = nodearraylist3
+                                       assert pexterncallnode3 isa nullable AExternCall
+                                       if pexterncallnode3 != null then
+                                               listnode4.add(pexterncallnode3)
+                                       end
+                                       var pexterncallsnode1: nullable AExternCalls = new AExternCalls.init_aexterncalls(
+                                               tkwimportnode2,
+                                               listnode4
                                        )
                                        )
-                                       node_list = pmethidnode1
+                                       node_list = pexterncallsnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction263
+private class ReduceAction389
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tplusnode2 = nodearraylist1
-                                       assert tplusnode2 isa nullable TPlus
-                                       var pmethidnode1: nullable APlusMethid = new APlusMethid.init_aplusmethid(
-                                               tplusnode2
+                                       var listnode5 = new Array[Object]
+                                       var tkwimportnode2 = nodearraylist1
+                                       assert tkwimportnode2 isa nullable TKwimport
+                                       var pexterncallnode3 = nodearraylist3
+                                       assert pexterncallnode3 isa nullable AExternCall
+                                       var listnode4 = nodearraylist4
+                                       assert listnode4 isa Array[Object]
+                                       if pexterncallnode3 != null then
+                                               listnode5.add(pexterncallnode3)
+                                       end
+                                       listnode5 = concat(listnode5, listnode4)
+                                       var pexterncallsnode1: nullable AExternCalls = new AExternCalls.init_aexterncalls(
+                                               tkwimportnode2,
+                                               listnode5
                                        )
                                        )
-                                       node_list = pmethidnode1
+                                       node_list = pexterncallsnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction264
+private class ReduceAction390
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tminusnode2 = nodearraylist1
-                                       assert tminusnode2 isa nullable TMinus
-                                       var pmethidnode1: nullable AMinusMethid = new AMinusMethid.init_aminusmethid(
-                                               tminusnode2
-                                       )
-                                       node_list = pmethidnode1
+                                       var pexterncallnode1 = nodearraylist3
+                                       node_list = pexterncallnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction265
+private class ReduceAction391
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
-                                       var tstarnode2 = nodearraylist1
-                                       assert tstarnode2 isa nullable TStar
-                                       var pmethidnode1: nullable AStarMethid = new AStarMethid.init_astarmethid(
-                                               tstarnode2
-                                       )
-                                       node_list = pmethidnode1
+                                       var pexterncallnode1 = nodearraylist1
+                                       node_list = pexterncallnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction266
+private class ReduceAction393
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
-                                       var tslashnode2 = nodearraylist1
-                                       assert tslashnode2 isa nullable TSlash
-                                       var pmethidnode1: nullable ASlashMethid = new ASlashMethid.init_aslashmethid(
-                                               tslashnode2
+                                       var tkwsupernode2 = nodearraylist1
+                                       assert tkwsupernode2 isa nullable TKwsuper
+                                       var pexterncallnode1: nullable ASuperExternCall = new ASuperExternCall.init_asuperexterncall(
+                                               tkwsupernode2
                                        )
                                        )
-                                       node_list = pmethidnode1
+                                       node_list = pexterncallnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction267
+private class ReduceAction394
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
-                                       var tpercentnode2 = nodearraylist1
-                                       assert tpercentnode2 isa nullable TPercent
-                                       var pmethidnode1: nullable APercentMethid = new APercentMethid.init_apercentmethid(
-                                               tpercentnode2
+                                       var pmethidnode2 = nodearraylist1
+                                       assert pmethidnode2 isa nullable AMethid
+                                       var pexterncallnode1: nullable ALocalPropExternCall = new ALocalPropExternCall.init_alocalpropexterncall(
+                                               pmethidnode2
                                        )
                                        )
-                                       node_list = pmethidnode1
+                                       node_list = pexterncallnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction268
+private class ReduceAction395
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var teqnode2 = nodearraylist1
-                                       assert teqnode2 isa nullable TEq
-                                       var pmethidnode1: nullable AEqMethid = new AEqMethid.init_aeqmethid(
-                                               teqnode2
+                                       var tclassidnode2 = nodearraylist1
+                                       assert tclassidnode2 isa nullable TClassid
+                                       var tquadnode3 = nodearraylist2
+                                       assert tquadnode3 isa nullable TQuad
+                                       var pmethidnode4 = nodearraylist3
+                                       assert pmethidnode4 isa nullable AMethid
+                                       var pexterncallnode1: nullable AFullPropExternCall = new AFullPropExternCall.init_afullpropexterncall(
+                                               tclassidnode2,
+                                               tquadnode3,
+                                               pmethidnode4
                                        )
                                        )
-                                       node_list = pmethidnode1
+                                       node_list = pexterncallnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction269
+private class ReduceAction396
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
-                                       var tnenode2 = nodearraylist1
-                                       assert tnenode2 isa nullable TNe
-                                       var pmethidnode1: nullable ANeMethid = new ANeMethid.init_anemethid(
-                                               tnenode2
+                                       var tclassidnode2 = nodearraylist1
+                                       assert tclassidnode2 isa nullable TClassid
+                                       var pexterncallnode1: nullable AInitPropExternCall = new AInitPropExternCall.init_ainitpropexterncall(
+                                               tclassidnode2
                                        )
                                        )
-                                       node_list = pmethidnode1
+                                       node_list = pexterncallnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction270
+private class ReduceAction397
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tlenode2 = nodearraylist1
-                                       assert tlenode2 isa nullable TLe
-                                       var pmethidnode1: nullable ALeMethid = new ALeMethid.init_alemethid(
-                                               tlenode2
+                                       var ptypenode2 = nodearraylist1
+                                       assert ptypenode2 isa nullable AType
+                                       var tkwasnode3 = nodearraylist2
+                                       assert tkwasnode3 isa nullable TKwas
+                                       var ptypenode4 = nodearraylist6
+                                       assert ptypenode4 isa nullable AType
+                                       var pexterncallnode1: nullable ACastAsExternCall = new ACastAsExternCall.init_acastasexterncall(
+                                               ptypenode2,
+                                               tkwasnode3,
+                                               ptypenode4
                                        )
                                        )
-                                       node_list = pmethidnode1
+                                       node_list = pexterncallnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction271
+private class ReduceAction398
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tgenode2 = nodearraylist1
-                                       assert tgenode2 isa nullable TGe
-                                       var pmethidnode1: nullable AGeMethid = new AGeMethid.init_agemethid(
-                                               tgenode2
+                                       var ptypenode2 = nodearraylist1
+                                       assert ptypenode2 isa nullable AType
+                                       var tkwasnode3 = nodearraylist2
+                                       assert tkwasnode3 isa nullable TKwas
+                                       var tkwnullablenode4 = nodearraylist4
+                                       assert tkwnullablenode4 isa nullable TKwnullable
+                                       var pexterncallnode1: nullable AAsNullableExternCall = new AAsNullableExternCall.init_aasnullableexterncall(
+                                               ptypenode2,
+                                               tkwasnode3,
+                                               tkwnullablenode4
                                        )
                                        )
-                                       node_list = pmethidnode1
+                                       node_list = pexterncallnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction272
+private class ReduceAction399
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tltnode2 = nodearraylist1
-                                       assert tltnode2 isa nullable TLt
-                                       var pmethidnode1: nullable ALtMethid = new ALtMethid.init_altmethid(
-                                               tltnode2
+                                       var ptypenode2 = nodearraylist1
+                                       assert ptypenode2 isa nullable AType
+                                       var tkwasnode3 = nodearraylist2
+                                       assert tkwasnode3 isa nullable TKwas
+                                       var tkwnotnode4 = nodearraylist4
+                                       assert tkwnotnode4 isa nullable TKwnot
+                                       var tkwnullablenode5 = nodearraylist6
+                                       assert tkwnullablenode5 isa nullable TKwnullable
+                                       var pexterncallnode1: nullable AAsNotNullableExternCall = new AAsNotNullableExternCall.init_aasnotnullableexterncall(
+                                               ptypenode2,
+                                               tkwasnode3,
+                                               tkwnotnode4,
+                                               tkwnullablenode5
                                        )
                                        )
-                                       node_list = pmethidnode1
+                                       node_list = pexterncallnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction273
+private class ReduceAction400
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tgtnode2 = nodearraylist1
-                                       assert tgtnode2 isa nullable TGt
-                                       var pmethidnode1: nullable AGtMethid = new AGtMethid.init_agtmethid(
-                                               tgtnode2
+                                       var tkwinnode2 = nodearraylist1
+                                       assert tkwinnode2 isa nullable TKwin
+                                       var tstringnode3 = nodearraylist2
+                                       assert tstringnode3 isa nullable TString
+                                       var pinlanguagenode1: nullable AInLanguage = new AInLanguage.init_ainlanguage(
+                                               tkwinnode2,
+                                               tstringnode3
                                        )
                                        )
-                                       node_list = pmethidnode1
+                                       node_list = pinlanguagenode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction274
+private class ReduceAction401
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
-                                       var tllnode2 = nodearraylist1
-                                       assert tllnode2 isa nullable TLl
-                                       var pmethidnode1: nullable ALlMethid = new ALlMethid.init_allmethid(
-                                               tllnode2
+                                       var texterncodesegmentnode3 = nodearraylist1
+                                       assert texterncodesegmentnode3 isa nullable TExternCodeSegment
+                                       var pexterncodeblocknode1: nullable AExternCodeBlock = new AExternCodeBlock.init_aexterncodeblock(
+                                               null,
+                                               texterncodesegmentnode3
                                        )
                                        )
-                                       node_list = pmethidnode1
+                                       node_list = pexterncodeblocknode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction275
+private class ReduceAction402
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tggnode2 = nodearraylist1
-                                       assert tggnode2 isa nullable TGg
-                                       var pmethidnode1: nullable AGgMethid = new AGgMethid.init_aggmethid(
-                                               tggnode2
+                                       var pinlanguagenode2 = nodearraylist1
+                                       assert pinlanguagenode2 isa nullable AInLanguage
+                                       var texterncodesegmentnode3 = nodearraylist2
+                                       assert texterncodesegmentnode3 isa nullable TExternCodeSegment
+                                       var pexterncodeblocknode1: nullable AExternCodeBlock = new AExternCodeBlock.init_aexterncodeblock(
+                                               pinlanguagenode2,
+                                               texterncodesegmentnode3
                                        )
                                        )
-                                       node_list = pmethidnode1
+                                       node_list = pexterncodeblocknode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction276
+private class ReduceAction403
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tobranode2 = nodearraylist1
-                                       assert tobranode2 isa nullable TObra
-                                       var tcbranode3 = nodearraylist2
-                                       assert tcbranode3 isa nullable TCbra
-                                       var pmethidnode1: nullable ABraMethid = new ABraMethid.init_abramethid(
-                                               tobranode2,
-                                               tcbranode3
-                                       )
-                                       node_list = pmethidnode1
+                                       var pexterncodeblocknode1 = nodearraylist2
+                                       node_list = pexterncodeblocknode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction277
+private class ReduceAction404
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
-                                       var tstarshipnode2 = nodearraylist1
-                                       assert tstarshipnode2 isa nullable TStarship
-                                       var pmethidnode1: nullable AStarshipMethid = new AStarshipMethid.init_astarshipmethid(
-                                               tstarshipnode2
+                                       var listnode4 = new Array[Object]
+                                       var tclassidnode3 = nodearraylist1
+                                       assert tclassidnode3 isa nullable TClassid
+                                       var ptypenode1: nullable AType = new AType.init_atype(
+                                               null,
+                                               tclassidnode3,
+                                               listnode4,
+                                               null
                                        )
                                        )
-                                       node_list = pmethidnode1
+                                       node_list = ptypenode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction278
+private class ReduceAction405
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tidnode2 = nodearraylist1
-                                       assert tidnode2 isa nullable TId
-                                       var tassignnode3 = nodearraylist2
-                                       assert tassignnode3 isa nullable TAssign
-                                       var pmethidnode1: nullable AAssignMethid = new AAssignMethid.init_aassignmethid(
-                                               tidnode2,
-                                               tassignnode3
+                                       var listnode4 = new Array[Object]
+                                       var tkwnullablenode2 = nodearraylist1
+                                       assert tkwnullablenode2 isa nullable TKwnullable
+                                       var tclassidnode3 = nodearraylist2
+                                       assert tclassidnode3 isa nullable TClassid
+                                       var ptypenode1: nullable AType = new AType.init_atype(
+                                               tkwnullablenode2,
+                                               tclassidnode3,
+                                               listnode4,
+                                               null
                                        )
                                        )
-                                       node_list = pmethidnode1
+                                       node_list = ptypenode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction279
+private class ReduceAction406
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tobranode2 = nodearraylist1
-                                       assert tobranode2 isa nullable TObra
-                                       var tcbranode3 = nodearraylist2
-                                       assert tcbranode3 isa nullable TCbra
-                                       var tassignnode4 = nodearraylist3
-                                       assert tassignnode4 isa nullable TAssign
-                                       var pmethidnode1: nullable ABraassignMethid = new ABraassignMethid.init_abraassignmethid(
-                                               tobranode2,
-                                               tcbranode3,
-                                               tassignnode4
+                                       var listnode4 = new Array[Object]
+                                       var tclassidnode3 = nodearraylist1
+                                       assert tclassidnode3 isa nullable TClassid
+                                       var pannotationsnode5 = nodearraylist2
+                                       assert pannotationsnode5 isa nullable AAnnotations
+                                       var ptypenode1: nullable AType = new AType.init_atype(
+                                               null,
+                                               tclassidnode3,
+                                               listnode4,
+                                               pannotationsnode5
                                        )
                                        )
-                                       node_list = pmethidnode1
+                                       node_list = ptypenode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction280
+private class ReduceAction407
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode3 = new Array[Object]
-                                       var listnode6 = new Array[Object]
-                                       var toparnode2 = nodearraylist1
-                                       assert toparnode2 isa nullable TOpar
-                                       var tcparnode4 = nodearraylist3
-                                       assert tcparnode4 isa nullable TCpar
-                                       var ptypenode5 = nodearraylist4
-                                       assert ptypenode5 isa nullable AType
-                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
-                                               toparnode2,
-                                               listnode3,
-                                               tcparnode4,
-                                               ptypenode5,
-                                               listnode6
+                                       var listnode4 = new Array[Object]
+                                       var tkwnullablenode2 = nodearraylist1
+                                       assert tkwnullablenode2 isa nullable TKwnullable
+                                       var tclassidnode3 = nodearraylist2
+                                       assert tclassidnode3 isa nullable TClassid
+                                       var pannotationsnode5 = nodearraylist3
+                                       assert pannotationsnode5 isa nullable AAnnotations
+                                       var ptypenode1: nullable AType = new AType.init_atype(
+                                               tkwnullablenode2,
+                                               tclassidnode3,
+                                               listnode4,
+                                               pannotationsnode5
                                        )
                                        )
-                                       node_list = psignaturenode1
+                                       node_list = ptypenode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction281
+private class ReduceAction408
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -11308,62 +16587,53 @@ private class ReduceAction281
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode4 = new Array[Object]
-                                       var listnode7 = new Array[Object]
-                                       var toparnode2 = nodearraylist1
-                                       assert toparnode2 isa nullable TOpar
-                                       var listnode3 = nodearraylist3
-                                       assert listnode3 isa Array[Object]
-                                       listnode4 = concat(listnode4, listnode3)
-                                       var tcparnode5 = nodearraylist4
-                                       assert tcparnode5 isa nullable TCpar
-                                       var ptypenode6 = nodearraylist5
-                                       assert ptypenode6 isa nullable AType
-                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
-                                               toparnode2,
-                                               listnode4,
-                                               tcparnode5,
-                                               ptypenode6,
-                                               listnode7
+                                       var listnode5 = new Array[Object]
+                                       var tclassidnode3 = nodearraylist1
+                                       assert tclassidnode3 isa nullable TClassid
+                                       var listnode4 = nodearraylist4
+                                       assert listnode4 isa Array[Object]
+                                       listnode5 = concat(listnode5, listnode4)
+                                       var ptypenode1: nullable AType = new AType.init_atype(
+                                               null,
+                                               tclassidnode3,
+                                               listnode5,
+                                               null
                                        )
                                        )
-                                       node_list = psignaturenode1
+                                       node_list = ptypenode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction282
+private class ReduceAction409
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode3 = new Array[Object]
-                                       var listnode7 = new Array[Object]
-                                       var toparnode2 = nodearraylist1
-                                       assert toparnode2 isa nullable TOpar
-                                       var tcparnode4 = nodearraylist3
-                                       assert tcparnode4 isa nullable TCpar
-                                       var ptypenode5 = nodearraylist4
-                                       assert ptypenode5 isa nullable AType
-                                       var listnode6 = nodearraylist6
-                                       assert listnode6 isa Array[Object]
-                                       listnode7 = concat(listnode7, listnode6)
-                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
-                                               toparnode2,
-                                               listnode3,
-                                               tcparnode4,
-                                               ptypenode5,
-                                               listnode7
+                                       var listnode5 = new Array[Object]
+                                       var tkwnullablenode2 = nodearraylist1
+                                       assert tkwnullablenode2 isa nullable TKwnullable
+                                       var tclassidnode3 = nodearraylist2
+                                       assert tclassidnode3 isa nullable TClassid
+                                       var listnode4 = nodearraylist5
+                                       assert listnode4 isa Array[Object]
+                                       listnode5 = concat(listnode5, listnode4)
+                                       var ptypenode1: nullable AType = new AType.init_atype(
+                                               tkwnullablenode2,
+                                               tclassidnode3,
+                                               listnode5,
+                                               null
                                        )
                                        )
-                                       node_list = psignaturenode1
+                                       node_list = ptypenode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction283
+private class ReduceAction410
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -11375,481 +16645,397 @@ private class ReduceAction283
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode4 = new Array[Object]
-                                       var listnode8 = new Array[Object]
-                                       var toparnode2 = nodearraylist1
-                                       assert toparnode2 isa nullable TOpar
-                                       var listnode3 = nodearraylist3
-                                       assert listnode3 isa Array[Object]
-                                       listnode4 = concat(listnode4, listnode3)
-                                       var tcparnode5 = nodearraylist4
-                                       assert tcparnode5 isa nullable TCpar
-                                       var ptypenode6 = nodearraylist5
-                                       assert ptypenode6 isa nullable AType
-                                       var listnode7 = nodearraylist7
-                                       assert listnode7 isa Array[Object]
-                                       listnode8 = concat(listnode8, listnode7)
-                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
-                                               toparnode2,
-                                               listnode4,
-                                               tcparnode5,
-                                               ptypenode6,
-                                               listnode8
+                                       var listnode5 = new Array[Object]
+                                       var tclassidnode3 = nodearraylist1
+                                       assert tclassidnode3 isa nullable TClassid
+                                       var listnode4 = nodearraylist4
+                                       assert listnode4 isa Array[Object]
+                                       listnode5 = concat(listnode5, listnode4)
+                                       var pannotationsnode6 = nodearraylist7
+                                       assert pannotationsnode6 isa nullable AAnnotations
+                                       var ptypenode1: nullable AType = new AType.init_atype(
+                                               null,
+                                               tclassidnode3,
+                                               listnode5,
+                                               pannotationsnode6
                                        )
                                        )
-                                       node_list = psignaturenode1
+                                       node_list = ptypenode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction284
+private class ReduceAction411
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode3 = new Array[Object]
-                                       var listnode6 = new Array[Object]
-                                       var toparnode2 = nodearraylist1
-                                       assert toparnode2 isa nullable TOpar
-                                       var tcparnode4 = nodearraylist3
-                                       assert tcparnode4 isa nullable TCpar
-                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
-                                               toparnode2,
-                                               listnode3,
-                                               tcparnode4,
-                                               null,
-                                               listnode6
+                                       var listnode5 = new Array[Object]
+                                       var tkwnullablenode2 = nodearraylist1
+                                       assert tkwnullablenode2 isa nullable TKwnullable
+                                       var tclassidnode3 = nodearraylist2
+                                       assert tclassidnode3 isa nullable TClassid
+                                       var listnode4 = nodearraylist5
+                                       assert listnode4 isa Array[Object]
+                                       listnode5 = concat(listnode5, listnode4)
+                                       var pannotationsnode6 = nodearraylist8
+                                       assert pannotationsnode6 isa nullable AAnnotations
+                                       var ptypenode1: nullable AType = new AType.init_atype(
+                                               tkwnullablenode2,
+                                               tclassidnode3,
+                                               listnode5,
+                                               pannotationsnode6
                                        )
                                        )
-                                       node_list = psignaturenode1
+                                       node_list = ptypenode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction285
+private class ReduceAction412
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode4 = new Array[Object]
-                                       var listnode7 = new Array[Object]
-                                       var toparnode2 = nodearraylist1
-                                       assert toparnode2 isa nullable TOpar
-                                       var listnode3 = nodearraylist3
-                                       assert listnode3 isa Array[Object]
-                                       listnode4 = concat(listnode4, listnode3)
-                                       var tcparnode5 = nodearraylist4
-                                       assert tcparnode5 isa nullable TCpar
-                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
-                                               toparnode2,
-                                               listnode4,
-                                               tcparnode5,
-                                               null,
-                                               listnode7
-                                       )
-                                       node_list = psignaturenode1
+                                       var listnode2 = new Array[Object]
+                                       var ptypenode1 = nodearraylist1
+                                       if ptypenode1 != null then
+                                               listnode2.add(ptypenode1)
+                                       end
+                                       node_list = listnode2
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction286
+private class ReduceAction413
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
-                                       var listnode7 = new Array[Object]
-                                       var toparnode2 = nodearraylist1
-                                       assert toparnode2 isa nullable TOpar
-                                       var tcparnode4 = nodearraylist3
-                                       assert tcparnode4 isa nullable TCpar
-                                       var listnode6 = nodearraylist5
-                                       assert listnode6 isa Array[Object]
-                                       listnode7 = concat(listnode7, listnode6)
-                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
-                                               toparnode2,
-                                               listnode3,
-                                               tcparnode4,
-                                               null,
-                                               listnode7
-                                       )
-                                       node_list = psignaturenode1
+                                       var ptypenode1 = nodearraylist1
+                                       var listnode2 = nodearraylist2
+                                       assert listnode2 isa Array[Object]
+                                       if ptypenode1 != null then
+                                               listnode3.add(ptypenode1)
+                                       end
+                                       listnode3 = concat(listnode3, listnode2)
+                                       node_list = listnode3
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction287
+private class ReduceAction414
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode4 = new Array[Object]
-                                       var listnode8 = new Array[Object]
-                                       var toparnode2 = nodearraylist1
-                                       assert toparnode2 isa nullable TOpar
-                                       var listnode3 = nodearraylist3
-                                       assert listnode3 isa Array[Object]
-                                       listnode4 = concat(listnode4, listnode3)
-                                       var tcparnode5 = nodearraylist4
-                                       assert tcparnode5 isa nullable TCpar
-                                       var listnode7 = nodearraylist6
-                                       assert listnode7 isa Array[Object]
-                                       listnode8 = concat(listnode8, listnode7)
-                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
-                                               toparnode2,
-                                               listnode4,
-                                               tcparnode5,
-                                               null,
-                                               listnode8
-                                       )
-                                       node_list = psignaturenode1
+                                       var ptypenode1 = nodearraylist3
+                                       node_list = ptypenode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction288
+private class ReduceAction416
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode3 = new Array[Object]
-                                       var listnode6 = new Array[Object]
-                                       var ptypenode5 = nodearraylist1
-                                       assert ptypenode5 isa nullable AType
-                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
-                                               null,
-                                               listnode3,
-                                               null,
-                                               ptypenode5,
-                                               listnode6
-                                       )
-                                       node_list = psignaturenode1
+                                       var pexprnode1 = nodearraylist2
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction289
+private class ReduceAction417
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode3 = new Array[Object]
-                                       var listnode7 = new Array[Object]
-                                       var ptypenode5 = nodearraylist1
-                                       assert ptypenode5 isa nullable AType
-                                       var listnode6 = nodearraylist3
-                                       assert listnode6 isa Array[Object]
-                                       listnode7 = concat(listnode7, listnode6)
-                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
-                                               null,
-                                               listnode3,
-                                               null,
-                                               ptypenode5,
-                                               listnode7
+                                       var listnode2 = new Array[Object]
+                                       var tkwendnode3 = nodearraylist2
+                                       assert tkwendnode3 isa nullable TKwend
+                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode2,
+                                               tkwendnode3
                                        )
                                        )
-                                       node_list = psignaturenode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction290
+private class ReduceAction418
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
-                                       var listnode3 = new Array[Object]
-                                       var listnode6 = new Array[Object]
-                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
-                                               null,
-                                               listnode3,
-                                               null,
-                                               null,
-                                               listnode6
+                                       var listnode2 = new Array[Object]
+                                       var tkwendnode3 = nodearraylist1
+                                       assert tkwendnode3 isa nullable TKwend
+                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode2,
+                                               tkwendnode3
                                        )
                                        )
-                                       node_list = psignaturenode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction291
+private class ReduceAction419
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode3 = new Array[Object]
-                                       var listnode7 = new Array[Object]
-                                       var listnode6 = nodearraylist2
-                                       assert listnode6 isa Array[Object]
-                                       listnode7 = concat(listnode7, listnode6)
-                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
-                                               null,
-                                               listnode3,
-                                               null,
-                                               null,
-                                               listnode7
-                                       )
-                                       node_list = psignaturenode1
+                                       var pexprnode1 = nodearraylist1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction292
+private class ReduceAction420
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
-                                       var listnode6 = new Array[Object]
-                                       var toparnode2 = nodearraylist1
-                                       assert toparnode2 isa nullable TOpar
-                                       var tcparnode4 = nodearraylist3
-                                       assert tcparnode4 isa nullable TCpar
-                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
-                                               toparnode2,
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       if pexprnode2 != null then
+                                               listnode3.add(pexprnode2)
+                                       end
+                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
                                                listnode3,
                                                listnode3,
-                                               tcparnode4,
-                                               null,
-                                               listnode6
+                                               null
                                        )
                                        )
-                                       node_list = psignaturenode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction293
+private class ReduceAction421
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
-                                       var listnode7 = new Array[Object]
-                                       var toparnode2 = nodearraylist1
-                                       assert toparnode2 isa nullable TOpar
-                                       var listnode3 = nodearraylist3
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var listnode3 = nodearraylist2
                                        assert listnode3 isa Array[Object]
                                        assert listnode3 isa Array[Object]
+                                       if pexprnode2 != null then
+                                               listnode4.add(pexprnode2)
+                                       end
                                        listnode4 = concat(listnode4, listnode3)
                                        listnode4 = concat(listnode4, listnode3)
-                                       var tcparnode5 = nodearraylist4
-                                       assert tcparnode5 isa nullable TCpar
-                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
-                                               toparnode2,
+                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
                                                listnode4,
                                                listnode4,
-                                               tcparnode5,
-                                               null,
-                                               listnode7
+                                               null
                                        )
                                        )
-                                       node_list = psignaturenode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction294
+private class ReduceAction422
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
-                                       var listnode6 = new Array[Object]
-                                       var toparnode2 = nodearraylist1
-                                       assert toparnode2 isa nullable TOpar
-                                       var tcparnode4 = nodearraylist3
-                                       assert tcparnode4 isa nullable TCpar
-                                       var ptypenode5 = nodearraylist4
-                                       assert ptypenode5 isa nullable AType
-                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
-                                               toparnode2,
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       if pexprnode2 != null then
+                                               listnode3.add(pexprnode2)
+                                       end
+                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
                                                listnode3,
                                                listnode3,
-                                               tcparnode4,
-                                               ptypenode5,
-                                               listnode6
+                                               null
                                        )
                                        )
-                                       node_list = psignaturenode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction295
+private class ReduceAction423
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
-                                       var listnode7 = new Array[Object]
-                                       var toparnode2 = nodearraylist1
-                                       assert toparnode2 isa nullable TOpar
-                                       var listnode3 = nodearraylist3
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var listnode3 = nodearraylist2
                                        assert listnode3 isa Array[Object]
                                        assert listnode3 isa Array[Object]
+                                       if pexprnode2 != null then
+                                               listnode4.add(pexprnode2)
+                                       end
                                        listnode4 = concat(listnode4, listnode3)
                                        listnode4 = concat(listnode4, listnode3)
-                                       var tcparnode5 = nodearraylist4
-                                       assert tcparnode5 isa nullable TCpar
-                                       var ptypenode6 = nodearraylist5
-                                       assert ptypenode6 isa nullable AType
-                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
-                                               toparnode2,
+                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
                                                listnode4,
                                                listnode4,
-                                               tcparnode5,
-                                               ptypenode6,
-                                               listnode7
+                                               null
                                        )
                                        )
-                                       node_list = psignaturenode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction296
+private class ReduceAction424
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
                                        var listnode3 = new Array[Object]
-                                       var listnode6 = new Array[Object]
-                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
-                                               null,
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       if pexprnode2 != null then
+                                               listnode3.add(pexprnode2)
+                                       end
+                                       var tkwendnode4 = nodearraylist3
+                                       assert tkwendnode4 isa nullable TKwend
+                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
                                                listnode3,
                                                listnode3,
-                                               null,
-                                               null,
-                                               listnode6
+                                               tkwendnode4
                                        )
                                        )
-                                       node_list = psignaturenode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction297
+private class ReduceAction425
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode3 = new Array[Object]
-                                       var listnode6 = new Array[Object]
-                                       var ptypenode5 = nodearraylist1
-                                       assert ptypenode5 isa nullable AType
-                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
-                                               null,
-                                               listnode3,
-                                               null,
-                                               ptypenode5,
-                                               listnode6
+                                       var listnode4 = new Array[Object]
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var listnode3 = nodearraylist2
+                                       assert listnode3 isa Array[Object]
+                                       if pexprnode2 != null then
+                                               listnode4.add(pexprnode2)
+                                       end
+                                       listnode4 = concat(listnode4, listnode3)
+                                       var tkwendnode5 = nodearraylist4
+                                       assert tkwendnode5 isa nullable TKwend
+                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
+                                               listnode4,
+                                               tkwendnode5
                                        )
                                        )
-                                       node_list = psignaturenode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction298
+private class ReduceAction429
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode2 = new Array[Object]
-                                       var pparamnode1 = nodearraylist1
-                                       if pparamnode1 != null then
-                                               listnode2.add(pparamnode1)
-                                       end
-                                       node_list = listnode2
+                                       var tkwreturnnode2 = nodearraylist1
+                                       assert tkwreturnnode2 isa nullable TKwreturn
+                                       var pexprnode1: nullable AReturnExpr = new AReturnExpr.init_areturnexpr(
+                                               tkwreturnnode2,
+                                               null
+                                       )
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction299
+private class ReduceAction430
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode3 = new Array[Object]
-                                       var pparamnode1 = nodearraylist1
-                                       var listnode2 = nodearraylist2
-                                       assert listnode2 isa Array[Object]
-                                       if pparamnode1 != null then
-                                               listnode3.add(pparamnode1)
-                                       end
-                                       listnode3 = concat(listnode3, listnode2)
-                                       node_list = listnode3
+                                       var tkwreturnnode2 = nodearraylist1
+                                       assert tkwreturnnode2 isa nullable TKwreturn
+                                       var pexprnode3 = nodearraylist2
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode1: nullable AReturnExpr = new AReturnExpr.init_areturnexpr(
+                                               tkwreturnnode2,
+                                               pexprnode3
+                                       )
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction300
+private class ReduceAction431
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pparamnode1 = nodearraylist3
-                                       node_list = pparamnode1
+                                       var tkwbreaknode2 = nodearraylist1
+                                       assert tkwbreaknode2 isa nullable TKwbreak
+                                       var pexprnode1: nullable ABreakExpr = new ABreakExpr.init_abreakexpr(
+                                               tkwbreaknode2,
+                                               null,
+                                               null
+                                       )
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction301
+private class ReduceAction432
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tidnode2 = nodearraylist1
-                                       assert tidnode2 isa nullable TId
-                                       var pparamnode1: nullable AParam = new AParam.init_aparam(
-                                               tidnode2,
-                                               null,
+                                       var tkwbreaknode2 = nodearraylist1
+                                       assert tkwbreaknode2 isa nullable TKwbreak
+                                       var plabelnode3 = nodearraylist2
+                                       assert plabelnode3 isa nullable ALabel
+                                       var pexprnode1: nullable ABreakExpr = new ABreakExpr.init_abreakexpr(
+                                               tkwbreaknode2,
+                                               plabelnode3,
                                                null
                                        )
                                                null
                                        )
-                                       node_list = pparamnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction302
+private class ReduceAction433
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tidnode2 = nodearraylist1
-                                       assert tidnode2 isa nullable TId
-                                       var ptypenode3 = nodearraylist2
-                                       assert ptypenode3 isa nullable AType
-                                       var pparamnode1: nullable AParam = new AParam.init_aparam(
-                                               tidnode2,
-                                               ptypenode3,
-                                               null
+                                       var tkwbreaknode2 = nodearraylist1
+                                       assert tkwbreaknode2 isa nullable TKwbreak
+                                       var pexprnode4 = nodearraylist2
+                                       assert pexprnode4 isa nullable AExpr
+                                       var pexprnode1: nullable ABreakExpr = new ABreakExpr.init_abreakexpr(
+                                               tkwbreaknode2,
+                                               null,
+                                               pexprnode4
                                        )
                                        )
-                                       node_list = pparamnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction303
+private class ReduceAction434
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -11857,235 +17043,198 @@ private class ReduceAction303
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tidnode2 = nodearraylist1
-                                       assert tidnode2 isa nullable TId
-                                       var ptypenode3 = nodearraylist2
-                                       assert ptypenode3 isa nullable AType
-                                       var tdotdotdotnode4 = nodearraylist3
-                                       assert tdotdotdotnode4 isa nullable TDotdotdot
-                                       var pparamnode1: nullable AParam = new AParam.init_aparam(
-                                               tidnode2,
-                                               ptypenode3,
-                                               tdotdotdotnode4
+                                       var tkwbreaknode2 = nodearraylist1
+                                       assert tkwbreaknode2 isa nullable TKwbreak
+                                       var plabelnode3 = nodearraylist2
+                                       assert plabelnode3 isa nullable ALabel
+                                       var pexprnode4 = nodearraylist3
+                                       assert pexprnode4 isa nullable AExpr
+                                       var pexprnode1: nullable ABreakExpr = new ABreakExpr.init_abreakexpr(
+                                               tkwbreaknode2,
+                                               plabelnode3,
+                                               pexprnode4
                                        )
                                        )
-                                       node_list = pparamnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction304
+private class ReduceAction435
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
-                                       var listnode2 = new Array[Object]
-                                       var listnode1 = nodearraylist1
-                                       assert listnode1 isa Array[Object]
-                                       listnode2 = concat(listnode2, listnode1)
-                                       node_list = listnode2
+                                       var tkwabortnode2 = nodearraylist1
+                                       assert tkwabortnode2 isa nullable TKwabort
+                                       var pexprnode1: nullable AAbortExpr = new AAbortExpr.init_aabortexpr(
+                                               tkwabortnode2
+                                       )
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction305
+private class ReduceAction436
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tbangnode3 = nodearraylist1
-                                       assert tbangnode3 isa nullable TBang
-                                       var tidnode4 = nodearraylist2
-                                       assert tidnode4 isa nullable TId
-                                       var psignaturenode5 = nodearraylist3
-                                       assert psignaturenode5 isa nullable ASignature
-                                       var pclosuredeclnode1: nullable AClosureDecl = new AClosureDecl.init_aclosuredecl(
+                                       var tkwcontinuenode2 = nodearraylist1
+                                       assert tkwcontinuenode2 isa nullable TKwcontinue
+                                       var pexprnode1: nullable AContinueExpr = new AContinueExpr.init_acontinueexpr(
+                                               tkwcontinuenode2,
                                                null,
                                                null,
-                                               tbangnode3,
-                                               tidnode4,
-                                               psignaturenode5,
                                                null
                                        )
                                                null
                                        )
-                                       node_list = pclosuredeclnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction306
+private class ReduceAction437
        super ReduceAction
        super ReduceAction
-       redef fun action(p: Parser)
-       do
-                                       var node_list: nullable Object = null
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
-                                       var nodearraylist1 = p.pop
-                                       var tkwbreaknode2 = nodearraylist1
-                                       assert tkwbreaknode2 isa nullable TKwbreak
-                                       var tbangnode3 = nodearraylist2
-                                       assert tbangnode3 isa nullable TBang
-                                       var tidnode4 = nodearraylist3
-                                       assert tidnode4 isa nullable TId
-                                       var psignaturenode5 = nodearraylist4
-                                       assert psignaturenode5 isa nullable ASignature
-                                       var pclosuredeclnode1: nullable AClosureDecl = new AClosureDecl.init_aclosuredecl(
-                                               tkwbreaknode2,
-                                               tbangnode3,
-                                               tidnode4,
-                                               psignaturenode5,
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tkwcontinuenode2 = nodearraylist1
+                                       assert tkwcontinuenode2 isa nullable TKwcontinue
+                                       var plabelnode3 = nodearraylist2
+                                       assert plabelnode3 isa nullable ALabel
+                                       var pexprnode1: nullable AContinueExpr = new AContinueExpr.init_acontinueexpr(
+                                               tkwcontinuenode2,
+                                               plabelnode3,
                                                null
                                        )
                                                null
                                        )
-                                       node_list = pclosuredeclnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction307
+private class ReduceAction438
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tbangnode3 = nodearraylist1
-                                       assert tbangnode3 isa nullable TBang
-                                       var tidnode4 = nodearraylist2
-                                       assert tidnode4 isa nullable TId
-                                       var psignaturenode5 = nodearraylist3
-                                       assert psignaturenode5 isa nullable ASignature
-                                       var pexprnode6 = nodearraylist5
-                                       assert pexprnode6 isa nullable AExpr
-                                       var pclosuredeclnode1: nullable AClosureDecl = new AClosureDecl.init_aclosuredecl(
+                                       var tkwcontinuenode2 = nodearraylist1
+                                       assert tkwcontinuenode2 isa nullable TKwcontinue
+                                       var pexprnode4 = nodearraylist2
+                                       assert pexprnode4 isa nullable AExpr
+                                       var pexprnode1: nullable AContinueExpr = new AContinueExpr.init_acontinueexpr(
+                                               tkwcontinuenode2,
                                                null,
                                                null,
-                                               tbangnode3,
-                                               tidnode4,
-                                               psignaturenode5,
-                                               pexprnode6
+                                               pexprnode4
                                        )
                                        )
-                                       node_list = pclosuredeclnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction308
+private class ReduceAction439
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwbreaknode2 = nodearraylist1
-                                       assert tkwbreaknode2 isa nullable TKwbreak
-                                       var tbangnode3 = nodearraylist2
-                                       assert tbangnode3 isa nullable TBang
-                                       var tidnode4 = nodearraylist3
-                                       assert tidnode4 isa nullable TId
-                                       var psignaturenode5 = nodearraylist4
-                                       assert psignaturenode5 isa nullable ASignature
-                                       var pexprnode6 = nodearraylist6
-                                       assert pexprnode6 isa nullable AExpr
-                                       var pclosuredeclnode1: nullable AClosureDecl = new AClosureDecl.init_aclosuredecl(
-                                               tkwbreaknode2,
-                                               tbangnode3,
-                                               tidnode4,
-                                               psignaturenode5,
-                                               pexprnode6
+                                       var tkwcontinuenode2 = nodearraylist1
+                                       assert tkwcontinuenode2 isa nullable TKwcontinue
+                                       var plabelnode3 = nodearraylist2
+                                       assert plabelnode3 isa nullable ALabel
+                                       var pexprnode4 = nodearraylist3
+                                       assert pexprnode4 isa nullable AExpr
+                                       var pexprnode1: nullable AContinueExpr = new AContinueExpr.init_acontinueexpr(
+                                               tkwcontinuenode2,
+                                               plabelnode3,
+                                               pexprnode4
                                        )
                                        )
-                                       node_list = pclosuredeclnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction309
+private class ReduceAction446
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tbangnode3 = nodearraylist1
-                                       assert tbangnode3 isa nullable TBang
-                                       var tidnode4 = nodearraylist2
-                                       assert tidnode4 isa nullable TId
-                                       var psignaturenode5 = nodearraylist3
-                                       assert psignaturenode5 isa nullable ASignature
-                                       var pexprnode6 = nodearraylist6
-                                       assert pexprnode6 isa nullable AExpr
-                                       var pclosuredeclnode1: nullable AClosureDecl = new AClosureDecl.init_aclosuredecl(
-                                               null,
-                                               tbangnode3,
-                                               tidnode4,
-                                               psignaturenode5,
-                                               pexprnode6
+                                       var listnode5 = new Array[Object]
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tidnode3 = nodearraylist4
+                                       assert tidnode3 isa nullable TId
+                                       var pexprsnode4 = nodearraylist5
+                                       assert pexprsnode4 isa nullable AExprs
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               pexprsnode4,
+                                               listnode5
                                        )
                                        )
-                                       node_list = pclosuredeclnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction310
+private class ReduceAction447
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwbreaknode2 = nodearraylist1
-                                       assert tkwbreaknode2 isa nullable TKwbreak
-                                       var tbangnode3 = nodearraylist2
-                                       assert tbangnode3 isa nullable TBang
-                                       var tidnode4 = nodearraylist3
-                                       assert tidnode4 isa nullable TId
-                                       var psignaturenode5 = nodearraylist4
-                                       assert psignaturenode5 isa nullable ASignature
-                                       var pexprnode6 = nodearraylist7
-                                       assert pexprnode6 isa nullable AExpr
-                                       var pclosuredeclnode1: nullable AClosureDecl = new AClosureDecl.init_aclosuredecl(
-                                               tkwbreaknode2,
-                                               tbangnode3,
-                                               tidnode4,
-                                               psignaturenode5,
-                                               pexprnode6
+                                       var listnode5 = new Array[Object]
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var tidnode3 = nodearraylist1
+                                       assert tidnode3 isa nullable TId
+                                       var pexprsnode4 = nodearraylist2
+                                       assert pexprsnode4 isa nullable AExprs
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               pexprsnode4,
+                                               listnode5
                                        )
                                        )
-                                       node_list = pclosuredeclnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction311
+private class ReduceAction448
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode3 = nodearraylist1
-                                       assert pexprnode3 isa nullable AExpr
-                                       var pexprnode1: nullable AReturnExpr = new AReturnExpr.init_areturnexpr(
-                                               null,
-                                               pexprnode3
+                                       var listnode6 = new Array[Object]
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tidnode3 = nodearraylist4
+                                       assert tidnode3 isa nullable TId
+                                       var pexprsnode4 = nodearraylist5
+                                       assert pexprsnode4 isa nullable AExprs
+                                       var listnode5 = nodearraylist6
+                                       assert listnode5 isa Array[Object]
+                                       listnode6 = concat(listnode6, listnode5)
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               pexprsnode4,
+                                               listnode6
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction312
+private class ReduceAction449
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -12093,51 +17242,46 @@ private class ReduceAction312
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode4 = new Array[Object]
-                                       var tkwimportnode2 = nodearraylist1
-                                       assert tkwimportnode2 isa nullable TKwimport
-                                       var pexterncallnode3 = nodearraylist3
-                                       assert pexterncallnode3 isa nullable AExternCall
-                                       if pexterncallnode3 != null then
-                                               listnode4.add(pexterncallnode3)
-                                       end
-                                       var pexterncallsnode1: nullable AExternCalls = new AExternCalls.init_aexterncalls(
-                                               tkwimportnode2,
-                                               listnode4
+                                       var listnode6 = new Array[Object]
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var tidnode3 = nodearraylist1
+                                       assert tidnode3 isa nullable TId
+                                       var pexprsnode4 = nodearraylist2
+                                       assert pexprsnode4 isa nullable AExprs
+                                       var listnode5 = nodearraylist3
+                                       assert listnode5 isa Array[Object]
+                                       listnode6 = concat(listnode6, listnode5)
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               pexprsnode4,
+                                               listnode6
                                        )
                                        )
-                                       node_list = pexterncallsnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction313
+private class ReduceAction450
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode5 = new Array[Object]
-                                       var tkwimportnode2 = nodearraylist1
-                                       assert tkwimportnode2 isa nullable TKwimport
-                                       var pexterncallnode3 = nodearraylist3
-                                       assert pexterncallnode3 isa nullable AExternCall
-                                       var listnode4 = nodearraylist4
-                                       assert listnode4 isa Array[Object]
-                                       if pexterncallnode3 != null then
-                                               listnode5.add(pexterncallnode3)
-                                       end
-                                       listnode5 = concat(listnode5, listnode4)
-                                       var pexterncallsnode1: nullable AExternCalls = new AExternCalls.init_aexterncalls(
-                                               tkwimportnode2,
-                                               listnode5
+                                       var tkwsupernode3 = nodearraylist1
+                                       assert tkwsupernode3 isa nullable TKwsuper
+                                       var pexprsnode4 = nodearraylist2
+                                       assert pexprsnode4 isa nullable AExprs
+                                       var pexprnode1: nullable ASuperExpr = new ASuperExpr.init_asuperexpr(
+                                               null,
+                                               tkwsupernode3,
+                                               pexprsnode4
                                        )
                                        )
-                                       node_list = pexterncallsnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction314
+private class ReduceAction451
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -12145,281 +17289,393 @@ private class ReduceAction314
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexterncallnode1 = nodearraylist3
-                                       node_list = pexterncallnode1
+                                       var pqualifiednode2 = nodearraylist1
+                                       assert pqualifiednode2 isa nullable AQualified
+                                       var tkwsupernode3 = nodearraylist2
+                                       assert tkwsupernode3 isa nullable TKwsuper
+                                       var pexprsnode4 = nodearraylist3
+                                       assert pexprsnode4 isa nullable AExprs
+                                       var pexprnode1: nullable ASuperExpr = new ASuperExpr.init_asuperexpr(
+                                               pqualifiednode2,
+                                               tkwsupernode3,
+                                               pexprsnode4
+                                       )
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction315
+private class ReduceAction452
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexterncallnode1 = nodearraylist1
-                                       node_list = pexterncallnode1
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tkwinitnode3 = nodearraylist4
+                                       assert tkwinitnode3 isa nullable TKwinit
+                                       var pexprsnode4 = nodearraylist5
+                                       assert pexprsnode4 isa nullable AExprs
+                                       var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
+                                               pexprnode2,
+                                               tkwinitnode3,
+                                               pexprsnode4
+                                       )
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction317
+private class ReduceAction453
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwsupernode2 = nodearraylist1
-                                       assert tkwsupernode2 isa nullable TKwsuper
-                                       var pexterncallnode1: nullable ASuperExternCall = new ASuperExternCall.init_asuperexterncall(
-                                               tkwsupernode2
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var tkwinitnode3 = nodearraylist1
+                                       assert tkwinitnode3 isa nullable TKwinit
+                                       var pexprsnode4 = nodearraylist2
+                                       assert pexprsnode4 isa nullable AExprs
+                                       var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
+                                               pexprnode2,
+                                               tkwinitnode3,
+                                               pexprsnode4
                                        )
                                        )
-                                       node_list = pexterncallnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction318
+private class ReduceAction454
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pmethidnode2 = nodearraylist1
-                                       assert pmethidnode2 isa nullable AMethid
-                                       var pexterncallnode1: nullable ALocalPropExternCall = new ALocalPropExternCall.init_alocalpropexterncall(
-                                               pmethidnode2
+                                       var tkwdebugnode2 = nodearraylist1
+                                       assert tkwdebugnode2 isa nullable TKwdebug
+                                       var tkwtypenode3 = nodearraylist2
+                                       assert tkwtypenode3 isa nullable TKwtype
+                                       var pexprnode4 = nodearraylist5
+                                       assert pexprnode4 isa nullable AExpr
+                                       var ptypenode5 = nodearraylist3
+                                       assert ptypenode5 isa nullable AType
+                                       var pexprnode1: nullable ADebugTypeExpr = new ADebugTypeExpr.init_adebugtypeexpr(
+                                               tkwdebugnode2,
+                                               tkwtypenode3,
+                                               pexprnode4,
+                                               ptypenode5
                                        )
                                        )
-                                       node_list = pexterncallnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction319
+private class ReduceAction455
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tclassidnode2 = nodearraylist1
-                                       assert tclassidnode2 isa nullable TClassid
-                                       var tquadnode3 = nodearraylist2
-                                       assert tquadnode3 isa nullable TQuad
-                                       var pmethidnode4 = nodearraylist3
-                                       assert pmethidnode4 isa nullable AMethid
-                                       var pexterncallnode1: nullable AFullPropExternCall = new AFullPropExternCall.init_afullpropexterncall(
-                                               tclassidnode2,
-                                               tquadnode3,
-                                               pmethidnode4
+                                       var tkwlabelnode2 = nodearraylist1
+                                       assert tkwlabelnode2 isa nullable TKwlabel
+                                       var tidnode3 = nodearraylist2
+                                       assert tidnode3 isa nullable TId
+                                       var plabelnode1: nullable ALabel = new ALabel.init_alabel(
+                                               tkwlabelnode2,
+                                               tidnode3
                                        )
                                        )
-                                       node_list = pexterncallnode1
+                                       node_list = plabelnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction320
+private class ReduceAction456
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
-                                       var tclassidnode2 = nodearraylist1
-                                       assert tclassidnode2 isa nullable TClassid
-                                       var pexterncallnode1: nullable AInitPropExternCall = new AInitPropExternCall.init_ainitpropexterncall(
-                                               tclassidnode2
-                                       )
-                                       node_list = pexterncallnode1
+                                       var listnode2 = new Array[Object]
+                                       var pclosuredefnode1 = nodearraylist1
+                                       if pclosuredefnode1 != null then
+                                               listnode2.add(pclosuredefnode1)
+                                       end
+                                       node_list = listnode2
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction321
+private class ReduceAction457
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var ptypenode2 = nodearraylist1
-                                       assert ptypenode2 isa nullable AType
-                                       var tkwasnode3 = nodearraylist2
-                                       assert tkwasnode3 isa nullable TKwas
-                                       var ptypenode4 = nodearraylist6
-                                       assert ptypenode4 isa nullable AType
-                                       var pexterncallnode1: nullable ACastAsExternCall = new ACastAsExternCall.init_acastasexterncall(
-                                               ptypenode2,
-                                               tkwasnode3,
-                                               ptypenode4
-                                       )
-                                       node_list = pexterncallnode1
+                                       var listnode3 = new Array[Object]
+                                       var pclosuredefnode1 = nodearraylist1
+                                       var listnode2 = nodearraylist2
+                                       assert listnode2 isa Array[Object]
+                                       if pclosuredefnode1 != null then
+                                               listnode3.add(pclosuredefnode1)
+                                       end
+                                       listnode3 = concat(listnode3, listnode2)
+                                       node_list = listnode3
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction322
+private class ReduceAction458
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var ptypenode2 = nodearraylist1
-                                       assert ptypenode2 isa nullable AType
-                                       var tkwasnode3 = nodearraylist2
-                                       assert tkwasnode3 isa nullable TKwas
-                                       var tkwnullablenode4 = nodearraylist4
-                                       assert tkwnullablenode4 isa nullable TKwnullable
-                                       var pexterncallnode1: nullable AAsNullableExternCall = new AAsNullableExternCall.init_aasnullableexterncall(
-                                               ptypenode2,
-                                               tkwasnode3,
-                                               tkwnullablenode4
+                                       var listnode4 = new Array[Object]
+                                       var tbangnode2 = nodearraylist1
+                                       assert tbangnode2 isa nullable TBang
+                                       var pclosureidnode3 = nodearraylist2
+                                       assert pclosureidnode3 isa nullable AClosureId
+                                       var tkwdonode5 = nodearraylist3
+                                       assert tkwdonode5 isa nullable TKwdo
+                                       var pexprnode6 = nodearraylist4
+                                       assert pexprnode6 isa nullable AExpr
+                                       var plabelnode7 = nodearraylist5
+                                       assert plabelnode7 isa nullable ALabel
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
+                                               tbangnode2,
+                                               pclosureidnode3,
+                                               listnode4,
+                                               tkwdonode5,
+                                               pexprnode6,
+                                               plabelnode7
                                        )
                                        )
-                                       node_list = pexterncallnode1
+                                       node_list = pclosuredefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction323
+private class ReduceAction459
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var ptypenode2 = nodearraylist1
-                                       assert ptypenode2 isa nullable AType
-                                       var tkwasnode3 = nodearraylist2
-                                       assert tkwasnode3 isa nullable TKwas
-                                       var tkwnotnode4 = nodearraylist4
-                                       assert tkwnotnode4 isa nullable TKwnot
-                                       var tkwnullablenode5 = nodearraylist6
-                                       assert tkwnullablenode5 isa nullable TKwnullable
-                                       var pexterncallnode1: nullable AAsNotNullableExternCall = new AAsNotNullableExternCall.init_aasnotnullableexterncall(
-                                               ptypenode2,
-                                               tkwasnode3,
-                                               tkwnotnode4,
-                                               tkwnullablenode5
+                                       var listnode5 = new Array[Object]
+                                       var tbangnode2 = nodearraylist1
+                                       assert tbangnode2 isa nullable TBang
+                                       var pclosureidnode3 = nodearraylist2
+                                       assert pclosureidnode3 isa nullable AClosureId
+                                       var listnode4 = nodearraylist4
+                                       assert listnode4 isa Array[Object]
+                                       listnode5 = concat(listnode5, listnode4)
+                                       var tkwdonode6 = nodearraylist6
+                                       assert tkwdonode6 isa nullable TKwdo
+                                       var pexprnode7 = nodearraylist7
+                                       assert pexprnode7 isa nullable AExpr
+                                       var plabelnode8 = nodearraylist8
+                                       assert plabelnode8 isa nullable ALabel
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
+                                               tbangnode2,
+                                               pclosureidnode3,
+                                               listnode5,
+                                               tkwdonode6,
+                                               pexprnode7,
+                                               plabelnode8
                                        )
                                        )
-                                       node_list = pexterncallnode1
+                                       node_list = pclosuredefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction324
+private class ReduceAction460
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwinnode2 = nodearraylist1
-                                       assert tkwinnode2 isa nullable TKwin
-                                       var tstringnode3 = nodearraylist2
-                                       assert tstringnode3 isa nullable TString
-                                       var pinlanguagenode1: nullable AInLanguage = new AInLanguage.init_ainlanguage(
-                                               tkwinnode2,
-                                               tstringnode3
-                                       )
-                                       node_list = pinlanguagenode1
-                                       p.push(p.go_to(_goto), node_list)
-       end
-end
-private class ReduceAction325
-       super ReduceAction
-       redef fun action(p: Parser)
-       do
-                                       var node_list: nullable Object = null
-                                       var nodearraylist1 = p.pop
-                                       var texterncodesegmentnode3 = nodearraylist1
-                                       assert texterncodesegmentnode3 isa nullable TExternCodeSegment
-                                       var pexterncodeblocknode1: nullable AExternCodeBlock = new AExternCodeBlock.init_aexterncodeblock(
-                                               null,
-                                               texterncodesegmentnode3
+                                       var listnode5 = new Array[Object]
+                                       var tbangnode2 = nodearraylist1
+                                       assert tbangnode2 isa nullable TBang
+                                       var pclosureidnode3 = nodearraylist2
+                                       assert pclosureidnode3 isa nullable AClosureId
+                                       var listnode4 = nodearraylist3
+                                       assert listnode4 isa Array[Object]
+                                       listnode5 = concat(listnode5, listnode4)
+                                       var tkwdonode6 = nodearraylist4
+                                       assert tkwdonode6 isa nullable TKwdo
+                                       var pexprnode7 = nodearraylist5
+                                       assert pexprnode7 isa nullable AExpr
+                                       var plabelnode8 = nodearraylist6
+                                       assert plabelnode8 isa nullable ALabel
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
+                                               tbangnode2,
+                                               pclosureidnode3,
+                                               listnode5,
+                                               tkwdonode6,
+                                               pexprnode7,
+                                               plabelnode8
                                        )
                                        )
-                                       node_list = pexterncodeblocknode1
+                                       node_list = pclosuredefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction326
+private class ReduceAction461
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pinlanguagenode2 = nodearraylist1
-                                       assert pinlanguagenode2 isa nullable AInLanguage
-                                       var texterncodesegmentnode3 = nodearraylist2
-                                       assert texterncodesegmentnode3 isa nullable TExternCodeSegment
-                                       var pexterncodeblocknode1: nullable AExternCodeBlock = new AExternCodeBlock.init_aexterncodeblock(
-                                               pinlanguagenode2,
-                                               texterncodesegmentnode3
+                                       var listnode4 = new Array[Object]
+                                       var tbangnode2 = nodearraylist1
+                                       assert tbangnode2 isa nullable TBang
+                                       var pclosureidnode3 = nodearraylist2
+                                       assert pclosureidnode3 isa nullable AClosureId
+                                       var tkwdonode5 = nodearraylist3
+                                       assert tkwdonode5 isa nullable TKwdo
+                                       var pexprnode6 = nodearraylist4
+                                       assert pexprnode6 isa nullable AExpr
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
+                                               tbangnode2,
+                                               pclosureidnode3,
+                                               listnode4,
+                                               tkwdonode5,
+                                               pexprnode6,
+                                               null
                                        )
                                        )
-                                       node_list = pexterncodeblocknode1
+                                       node_list = pclosuredefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction327
+private class ReduceAction462
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexterncodeblocknode1 = nodearraylist2
-                                       node_list = pexterncodeblocknode1
+                                       var listnode5 = new Array[Object]
+                                       var tbangnode2 = nodearraylist1
+                                       assert tbangnode2 isa nullable TBang
+                                       var pclosureidnode3 = nodearraylist2
+                                       assert pclosureidnode3 isa nullable AClosureId
+                                       var listnode4 = nodearraylist4
+                                       assert listnode4 isa Array[Object]
+                                       listnode5 = concat(listnode5, listnode4)
+                                       var tkwdonode6 = nodearraylist6
+                                       assert tkwdonode6 isa nullable TKwdo
+                                       var pexprnode7 = nodearraylist7
+                                       assert pexprnode7 isa nullable AExpr
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
+                                               tbangnode2,
+                                               pclosureidnode3,
+                                               listnode5,
+                                               tkwdonode6,
+                                               pexprnode7,
+                                               null
+                                       )
+                                       node_list = pclosuredefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction328
+private class ReduceAction463
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode4 = new Array[Object]
-                                       var tclassidnode3 = nodearraylist1
-                                       assert tclassidnode3 isa nullable TClassid
-                                       var ptypenode1: nullable AType = new AType.init_atype(
-                                               null,
-                                               tclassidnode3,
-                                               listnode4
+                                       var listnode5 = new Array[Object]
+                                       var tbangnode2 = nodearraylist1
+                                       assert tbangnode2 isa nullable TBang
+                                       var pclosureidnode3 = nodearraylist2
+                                       assert pclosureidnode3 isa nullable AClosureId
+                                       var listnode4 = nodearraylist3
+                                       assert listnode4 isa Array[Object]
+                                       listnode5 = concat(listnode5, listnode4)
+                                       var tkwdonode6 = nodearraylist4
+                                       assert tkwdonode6 isa nullable TKwdo
+                                       var pexprnode7 = nodearraylist5
+                                       assert pexprnode7 isa nullable AExpr
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
+                                               tbangnode2,
+                                               pclosureidnode3,
+                                               listnode5,
+                                               tkwdonode6,
+                                               pexprnode7,
+                                               null
                                        )
                                        )
-                                       node_list = ptypenode1
+                                       node_list = pclosuredefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction329
+private class ReduceAction464
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
-                                       var tkwnullablenode2 = nodearraylist1
-                                       assert tkwnullablenode2 isa nullable TKwnullable
-                                       var tclassidnode3 = nodearraylist2
-                                       assert tclassidnode3 isa nullable TClassid
-                                       var ptypenode1: nullable AType = new AType.init_atype(
-                                               tkwnullablenode2,
-                                               tclassidnode3,
-                                               listnode4
+                                       var tbangnode2 = nodearraylist1
+                                       assert tbangnode2 isa nullable TBang
+                                       var pclosureidnode3 = nodearraylist2
+                                       assert pclosureidnode3 isa nullable AClosureId
+                                       var pexprnode6 = nodearraylist5
+                                       assert pexprnode6 isa nullable AExpr
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
+                                               tbangnode2,
+                                               pclosureidnode3,
+                                               listnode4,
+                                               null,
+                                               pexprnode6,
+                                               null
                                        )
                                        )
-                                       node_list = ptypenode1
+                                       node_list = pclosuredefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction330
+private class ReduceAction465
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -12427,26 +17683,32 @@ private class ReduceAction330
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
-                                       var tclassidnode3 = nodearraylist1
-                                       assert tclassidnode3 isa nullable TClassid
+                                       var tbangnode2 = nodearraylist1
+                                       assert tbangnode2 isa nullable TBang
+                                       var pclosureidnode3 = nodearraylist2
+                                       assert pclosureidnode3 isa nullable AClosureId
                                        var listnode4 = nodearraylist4
                                        assert listnode4 isa Array[Object]
                                        listnode5 = concat(listnode5, listnode4)
                                        var listnode4 = nodearraylist4
                                        assert listnode4 isa Array[Object]
                                        listnode5 = concat(listnode5, listnode4)
-                                       var ptypenode1: nullable AType = new AType.init_atype(
+                                       var pexprnode7 = nodearraylist8
+                                       assert pexprnode7 isa nullable AExpr
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
+                                               tbangnode2,
+                                               pclosureidnode3,
+                                               listnode5,
                                                null,
                                                null,
-                                               tclassidnode3,
-                                               listnode5
+                                               pexprnode7,
+                                               null
                                        )
                                        )
-                                       node_list = ptypenode1
+                                       node_list = pclosuredefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction331
+private class ReduceAction466
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -12454,218 +17716,295 @@ private class ReduceAction331
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
-                                       var tkwnullablenode2 = nodearraylist1
-                                       assert tkwnullablenode2 isa nullable TKwnullable
-                                       var tclassidnode3 = nodearraylist2
-                                       assert tclassidnode3 isa nullable TClassid
-                                       var listnode4 = nodearraylist5
+                                       var tbangnode2 = nodearraylist1
+                                       assert tbangnode2 isa nullable TBang
+                                       var pclosureidnode3 = nodearraylist2
+                                       assert pclosureidnode3 isa nullable AClosureId
+                                       var listnode4 = nodearraylist3
                                        assert listnode4 isa Array[Object]
                                        listnode5 = concat(listnode5, listnode4)
                                        assert listnode4 isa Array[Object]
                                        listnode5 = concat(listnode5, listnode4)
-                                       var ptypenode1: nullable AType = new AType.init_atype(
-                                               tkwnullablenode2,
-                                               tclassidnode3,
-                                               listnode5
+                                       var pexprnode7 = nodearraylist6
+                                       assert pexprnode7 isa nullable AExpr
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
+                                               tbangnode2,
+                                               pclosureidnode3,
+                                               listnode5,
+                                               null,
+                                               pexprnode7,
+                                               null
                                        )
                                        )
-                                       node_list = ptypenode1
-                                       p.push(p.go_to(_goto), node_list)
-       end
-end
-private class ReduceAction332
-       super ReduceAction
-       redef fun action(p: Parser)
-       do
-                                       var node_list: nullable Object = null
-                                       var nodearraylist1 = p.pop
-                                       var listnode2 = new Array[Object]
-                                       var ptypenode1 = nodearraylist1
-                                       if ptypenode1 != null then
-                                               listnode2.add(ptypenode1)
-                                       end
-                                       node_list = listnode2
+                                       node_list = pclosuredefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction333
+private class ReduceAction467
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode3 = new Array[Object]
-                                       var ptypenode1 = nodearraylist1
-                                       var listnode2 = nodearraylist2
-                                       assert listnode2 isa Array[Object]
-                                       if ptypenode1 != null then
-                                               listnode3.add(ptypenode1)
-                                       end
-                                       listnode3 = concat(listnode3, listnode2)
-                                       node_list = listnode3
+                                       var listnode4 = new Array[Object]
+                                       var tbangnode2 = nodearraylist1
+                                       assert tbangnode2 isa nullable TBang
+                                       var pclosureidnode3 = nodearraylist2
+                                       assert pclosureidnode3 isa nullable AClosureId
+                                       var tkwdonode5 = nodearraylist3
+                                       assert tkwdonode5 isa nullable TKwdo
+                                       var pexprnode6 = nodearraylist5
+                                       assert pexprnode6 isa nullable AExpr
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
+                                               tbangnode2,
+                                               pclosureidnode3,
+                                               listnode4,
+                                               tkwdonode5,
+                                               pexprnode6,
+                                               null
+                                       )
+                                       node_list = pclosuredefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction334
+private class ReduceAction468
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var ptypenode1 = nodearraylist3
-                                       node_list = ptypenode1
+                                       var listnode5 = new Array[Object]
+                                       var tbangnode2 = nodearraylist1
+                                       assert tbangnode2 isa nullable TBang
+                                       var pclosureidnode3 = nodearraylist2
+                                       assert pclosureidnode3 isa nullable AClosureId
+                                       var listnode4 = nodearraylist4
+                                       assert listnode4 isa Array[Object]
+                                       listnode5 = concat(listnode5, listnode4)
+                                       var tkwdonode6 = nodearraylist6
+                                       assert tkwdonode6 isa nullable TKwdo
+                                       var pexprnode7 = nodearraylist8
+                                       assert pexprnode7 isa nullable AExpr
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
+                                               tbangnode2,
+                                               pclosureidnode3,
+                                               listnode5,
+                                               tkwdonode6,
+                                               pexprnode7,
+                                               null
+                                       )
+                                       node_list = pclosuredefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction336
+private class ReduceAction469
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode1 = nodearraylist2
-                                       node_list = pexprnode1
+                                       var listnode5 = new Array[Object]
+                                       var tbangnode2 = nodearraylist1
+                                       assert tbangnode2 isa nullable TBang
+                                       var pclosureidnode3 = nodearraylist2
+                                       assert pclosureidnode3 isa nullable AClosureId
+                                       var listnode4 = nodearraylist3
+                                       assert listnode4 isa Array[Object]
+                                       listnode5 = concat(listnode5, listnode4)
+                                       var tkwdonode6 = nodearraylist4
+                                       assert tkwdonode6 isa nullable TKwdo
+                                       var pexprnode7 = nodearraylist6
+                                       assert pexprnode7 isa nullable AExpr
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
+                                               tbangnode2,
+                                               pclosureidnode3,
+                                               listnode5,
+                                               tkwdonode6,
+                                               pexprnode7,
+                                               null
+                                       )
+                                       node_list = pclosuredefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction337
+private class ReduceAction470
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode2 = new Array[Object]
-                                       var tkwendnode3 = nodearraylist2
-                                       assert tkwendnode3 isa nullable TKwend
-                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
-                                               listnode2,
-                                               tkwendnode3
+                                       var listnode4 = new Array[Object]
+                                       var tbangnode2 = nodearraylist1
+                                       assert tbangnode2 isa nullable TBang
+                                       var pclosureidnode3 = nodearraylist2
+                                       assert pclosureidnode3 isa nullable AClosureId
+                                       var tkwdonode5 = nodearraylist3
+                                       assert tkwdonode5 isa nullable TKwdo
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
+                                               tbangnode2,
+                                               pclosureidnode3,
+                                               listnode4,
+                                               tkwdonode5,
+                                               null,
+                                               null
                                        )
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pclosuredefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction338
+private class ReduceAction471
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode2 = new Array[Object]
-                                       var tkwendnode3 = nodearraylist1
-                                       assert tkwendnode3 isa nullable TKwend
-                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
-                                               listnode2,
-                                               tkwendnode3
+                                       var listnode5 = new Array[Object]
+                                       var tbangnode2 = nodearraylist1
+                                       assert tbangnode2 isa nullable TBang
+                                       var pclosureidnode3 = nodearraylist2
+                                       assert pclosureidnode3 isa nullable AClosureId
+                                       var listnode4 = nodearraylist4
+                                       assert listnode4 isa Array[Object]
+                                       listnode5 = concat(listnode5, listnode4)
+                                       var tkwdonode6 = nodearraylist6
+                                       assert tkwdonode6 isa nullable TKwdo
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
+                                               tbangnode2,
+                                               pclosureidnode3,
+                                               listnode5,
+                                               tkwdonode6,
+                                               null,
+                                               null
                                        )
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pclosuredefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction339
+private class ReduceAction472
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode1 = nodearraylist1
-                                       node_list = pexprnode1
+                                       var listnode5 = new Array[Object]
+                                       var tbangnode2 = nodearraylist1
+                                       assert tbangnode2 isa nullable TBang
+                                       var pclosureidnode3 = nodearraylist2
+                                       assert pclosureidnode3 isa nullable AClosureId
+                                       var listnode4 = nodearraylist3
+                                       assert listnode4 isa Array[Object]
+                                       listnode5 = concat(listnode5, listnode4)
+                                       var tkwdonode6 = nodearraylist4
+                                       assert tkwdonode6 isa nullable TKwdo
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
+                                               tbangnode2,
+                                               pclosureidnode3,
+                                               listnode5,
+                                               tkwdonode6,
+                                               null,
+                                               null
+                                       )
+                                       node_list = pclosuredefnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction340
+private class ReduceAction473
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
-                                       var listnode3 = new Array[Object]
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       if pexprnode2 != null then
-                                               listnode3.add(pexprnode2)
-                                       end
-                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
-                                               listnode3,
-                                               null
+                                       var tidnode2 = nodearraylist1
+                                       assert tidnode2 isa nullable TId
+                                       var pclosureidnode1: nullable ASimpleClosureId = new ASimpleClosureId.init_asimpleclosureid(
+                                               tidnode2
                                        )
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pclosureidnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction341
+private class ReduceAction474
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode4 = new Array[Object]
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var listnode3 = nodearraylist2
-                                       assert listnode3 isa Array[Object]
-                                       if pexprnode2 != null then
-                                               listnode4.add(pexprnode2)
-                                       end
-                                       listnode4 = concat(listnode4, listnode3)
-                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
-                                               listnode4,
-                                               null
+                                       var tkwbreaknode2 = nodearraylist1
+                                       assert tkwbreaknode2 isa nullable TKwbreak
+                                       var pclosureidnode1: nullable ABreakClosureId = new ABreakClosureId.init_abreakclosureid(
+                                               tkwbreaknode2
                                        )
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pclosureidnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction342
+private class ReduceAction475
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode3 = new Array[Object]
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       if pexprnode2 != null then
-                                               listnode3.add(pexprnode2)
-                                       end
-                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
-                                               listnode3,
-                                               null
+                                       var pexprnode4 = nodearraylist1
+                                       assert pexprnode4 isa nullable AExpr
+                                       var pexprnode1: nullable AContinueExpr = new AContinueExpr.init_acontinueexpr(
+                                               null,
+                                               null,
+                                               pexprnode4
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction343
+private class ReduceAction476
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode4 = new Array[Object]
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var listnode3 = nodearraylist2
-                                       assert listnode3 isa Array[Object]
-                                       if pexprnode2 != null then
-                                               listnode4.add(pexprnode2)
-                                       end
-                                       listnode4 = concat(listnode4, listnode3)
-                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
-                                               listnode4,
+                                       var tkwvarnode2 = nodearraylist1
+                                       assert tkwvarnode2 isa nullable TKwvar
+                                       var tidnode3 = nodearraylist2
+                                       assert tidnode3 isa nullable TId
+                                       var pexprnode1: nullable AVardeclExpr = new AVardeclExpr.init_avardeclexpr(
+                                               tkwvarnode2,
+                                               tidnode3,
+                                               null,
+                                               null,
+                                               null,
                                                null
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                                null
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction344
+private class ReduceAction477
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -12673,572 +18012,629 @@ private class ReduceAction344
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode3 = new Array[Object]
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       if pexprnode2 != null then
-                                               listnode3.add(pexprnode2)
-                                       end
-                                       var tkwendnode4 = nodearraylist3
-                                       assert tkwendnode4 isa nullable TKwend
-                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
-                                               listnode3,
-                                               tkwendnode4
+                                       var tkwvarnode2 = nodearraylist1
+                                       assert tkwvarnode2 isa nullable TKwvar
+                                       var tidnode3 = nodearraylist2
+                                       assert tidnode3 isa nullable TId
+                                       var pannotationsnode7 = nodearraylist3
+                                       assert pannotationsnode7 isa nullable AAnnotations
+                                       var pexprnode1: nullable AVardeclExpr = new AVardeclExpr.init_avardeclexpr(
+                                               tkwvarnode2,
+                                               tidnode3,
+                                               null,
+                                               null,
+                                               null,
+                                               pannotationsnode7
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction345
+private class ReduceAction478
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode4 = new Array[Object]
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var listnode3 = nodearraylist2
-                                       assert listnode3 isa Array[Object]
-                                       if pexprnode2 != null then
-                                               listnode4.add(pexprnode2)
-                                       end
-                                       listnode4 = concat(listnode4, listnode3)
-                                       var tkwendnode5 = nodearraylist4
-                                       assert tkwendnode5 isa nullable TKwend
-                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
-                                               listnode4,
-                                               tkwendnode5
-                                       )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(_goto), node_list)
-       end
-end
-private class ReduceAction349
-       super ReduceAction
-       redef fun action(p: Parser)
-       do
-                                       var node_list: nullable Object = null
-                                       var nodearraylist1 = p.pop
-                                       var tkwreturnnode2 = nodearraylist1
-                                       assert tkwreturnnode2 isa nullable TKwreturn
-                                       var pexprnode1: nullable AReturnExpr = new AReturnExpr.init_areturnexpr(
-                                               tkwreturnnode2,
+                                       var tkwvarnode2 = nodearraylist1
+                                       assert tkwvarnode2 isa nullable TKwvar
+                                       var tidnode3 = nodearraylist2
+                                       assert tidnode3 isa nullable TId
+                                       var ptypenode4 = nodearraylist3
+                                       assert ptypenode4 isa nullable AType
+                                       var pexprnode1: nullable AVardeclExpr = new AVardeclExpr.init_avardeclexpr(
+                                               tkwvarnode2,
+                                               tidnode3,
+                                               ptypenode4,
+                                               null,
+                                               null,
                                                null
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                                null
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction350
+private class ReduceAction479
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwreturnnode2 = nodearraylist1
-                                       assert tkwreturnnode2 isa nullable TKwreturn
-                                       var pexprnode3 = nodearraylist2
-                                       assert pexprnode3 isa nullable AExpr
-                                       var pexprnode1: nullable AReturnExpr = new AReturnExpr.init_areturnexpr(
-                                               tkwreturnnode2,
-                                               pexprnode3
+                                       var tkwvarnode2 = nodearraylist1
+                                       assert tkwvarnode2 isa nullable TKwvar
+                                       var tidnode3 = nodearraylist2
+                                       assert tidnode3 isa nullable TId
+                                       var ptypenode4 = nodearraylist4
+                                       assert ptypenode4 isa nullable AType
+                                       var pannotationsnode7 = nodearraylist3
+                                       assert pannotationsnode7 isa nullable AAnnotations
+                                       var pexprnode1: nullable AVardeclExpr = new AVardeclExpr.init_avardeclexpr(
+                                               tkwvarnode2,
+                                               tidnode3,
+                                               ptypenode4,
+                                               null,
+                                               null,
+                                               pannotationsnode7
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction351
+private class ReduceAction480
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwbreaknode2 = nodearraylist1
-                                       assert tkwbreaknode2 isa nullable TKwbreak
-                                       var pexprnode1: nullable ABreakExpr = new ABreakExpr.init_abreakexpr(
-                                               tkwbreaknode2,
+                                       var tkwvarnode2 = nodearraylist1
+                                       assert tkwvarnode2 isa nullable TKwvar
+                                       var tidnode3 = nodearraylist2
+                                       assert tidnode3 isa nullable TId
+                                       var tassignnode5 = nodearraylist3
+                                       assert tassignnode5 isa nullable TAssign
+                                       var pexprnode6 = nodearraylist5
+                                       assert pexprnode6 isa nullable AExpr
+                                       var pexprnode1: nullable AVardeclExpr = new AVardeclExpr.init_avardeclexpr(
+                                               tkwvarnode2,
+                                               tidnode3,
                                                null,
                                                null,
+                                               tassignnode5,
+                                               pexprnode6,
                                                null
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                                null
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction352
+private class ReduceAction481
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwbreaknode2 = nodearraylist1
-                                       assert tkwbreaknode2 isa nullable TKwbreak
-                                       var plabelnode3 = nodearraylist2
-                                       assert plabelnode3 isa nullable ALabel
-                                       var pexprnode1: nullable ABreakExpr = new ABreakExpr.init_abreakexpr(
-                                               tkwbreaknode2,
-                                               plabelnode3,
-                                               null
+                                       var tkwvarnode2 = nodearraylist1
+                                       assert tkwvarnode2 isa nullable TKwvar
+                                       var tidnode3 = nodearraylist2
+                                       assert tidnode3 isa nullable TId
+                                       var tassignnode5 = nodearraylist4
+                                       assert tassignnode5 isa nullable TAssign
+                                       var pexprnode6 = nodearraylist6
+                                       assert pexprnode6 isa nullable AExpr
+                                       var pannotationsnode7 = nodearraylist3
+                                       assert pannotationsnode7 isa nullable AAnnotations
+                                       var pexprnode1: nullable AVardeclExpr = new AVardeclExpr.init_avardeclexpr(
+                                               tkwvarnode2,
+                                               tidnode3,
+                                               null,
+                                               tassignnode5,
+                                               pexprnode6,
+                                               pannotationsnode7
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction353
+private class ReduceAction482
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwbreaknode2 = nodearraylist1
-                                       assert tkwbreaknode2 isa nullable TKwbreak
-                                       var pexprnode4 = nodearraylist2
-                                       assert pexprnode4 isa nullable AExpr
-                                       var pexprnode1: nullable ABreakExpr = new ABreakExpr.init_abreakexpr(
-                                               tkwbreaknode2,
-                                               null,
-                                               pexprnode4
+                                       var tkwvarnode2 = nodearraylist1
+                                       assert tkwvarnode2 isa nullable TKwvar
+                                       var tidnode3 = nodearraylist2
+                                       assert tidnode3 isa nullable TId
+                                       var ptypenode4 = nodearraylist3
+                                       assert ptypenode4 isa nullable AType
+                                       var tassignnode5 = nodearraylist4
+                                       assert tassignnode5 isa nullable TAssign
+                                       var pexprnode6 = nodearraylist6
+                                       assert pexprnode6 isa nullable AExpr
+                                       var pexprnode1: nullable AVardeclExpr = new AVardeclExpr.init_avardeclexpr(
+                                               tkwvarnode2,
+                                               tidnode3,
+                                               ptypenode4,
+                                               tassignnode5,
+                                               pexprnode6,
+                                               null
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction354
+private class ReduceAction483
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwbreaknode2 = nodearraylist1
-                                       assert tkwbreaknode2 isa nullable TKwbreak
-                                       var plabelnode3 = nodearraylist2
-                                       assert plabelnode3 isa nullable ALabel
-                                       var pexprnode4 = nodearraylist3
-                                       assert pexprnode4 isa nullable AExpr
-                                       var pexprnode1: nullable ABreakExpr = new ABreakExpr.init_abreakexpr(
-                                               tkwbreaknode2,
-                                               plabelnode3,
-                                               pexprnode4
+                                       var tkwvarnode2 = nodearraylist1
+                                       assert tkwvarnode2 isa nullable TKwvar
+                                       var tidnode3 = nodearraylist2
+                                       assert tidnode3 isa nullable TId
+                                       var ptypenode4 = nodearraylist4
+                                       assert ptypenode4 isa nullable AType
+                                       var tassignnode5 = nodearraylist5
+                                       assert tassignnode5 isa nullable TAssign
+                                       var pexprnode6 = nodearraylist7
+                                       assert pexprnode6 isa nullable AExpr
+                                       var pannotationsnode7 = nodearraylist3
+                                       assert pannotationsnode7 isa nullable AAnnotations
+                                       var pexprnode1: nullable AVardeclExpr = new AVardeclExpr.init_avardeclexpr(
+                                               tkwvarnode2,
+                                               tidnode3,
+                                               ptypenode4,
+                                               tassignnode5,
+                                               pexprnode6,
+                                               pannotationsnode7
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction355
+private class ReduceAction484
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwabortnode2 = nodearraylist1
-                                       assert tkwabortnode2 isa nullable TKwabort
-                                       var pexprnode1: nullable AAbortExpr = new AAbortExpr.init_aabortexpr(
-                                               tkwabortnode2
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tattridnode3 = nodearraylist4
+                                       assert tattridnode3 isa nullable TAttrid
+                                       var tassignnode4 = nodearraylist5
+                                       assert tassignnode4 isa nullable TAssign
+                                       var pexprnode5 = nodearraylist6
+                                       assert pexprnode5 isa nullable AExpr
+                                       var pexprnode1: nullable AAttrAssignExpr = new AAttrAssignExpr.init_aattrassignexpr(
+                                               pexprnode2,
+                                               tattridnode3,
+                                               tassignnode4,
+                                               pexprnode5
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction356
+private class ReduceAction485
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwcontinuenode2 = nodearraylist1
-                                       assert tkwcontinuenode2 isa nullable TKwcontinue
-                                       var pexprnode1: nullable AContinueExpr = new AContinueExpr.init_acontinueexpr(
-                                               tkwcontinuenode2,
-                                               null,
-                                               null
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var tattridnode3 = nodearraylist1
+                                       assert tattridnode3 isa nullable TAttrid
+                                       var tassignnode4 = nodearraylist2
+                                       assert tassignnode4 isa nullable TAssign
+                                       var pexprnode5 = nodearraylist3
+                                       assert pexprnode5 isa nullable AExpr
+                                       var pexprnode1: nullable AAttrAssignExpr = new AAttrAssignExpr.init_aattrassignexpr(
+                                               pexprnode2,
+                                               tattridnode3,
+                                               tassignnode4,
+                                               pexprnode5
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction357
+private class ReduceAction486
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwcontinuenode2 = nodearraylist1
-                                       assert tkwcontinuenode2 isa nullable TKwcontinue
-                                       var plabelnode3 = nodearraylist2
-                                       assert plabelnode3 isa nullable ALabel
-                                       var pexprnode1: nullable AContinueExpr = new AContinueExpr.init_acontinueexpr(
-                                               tkwcontinuenode2,
-                                               plabelnode3,
-                                               null
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tidnode3 = nodearraylist4
+                                       assert tidnode3 isa nullable TId
+                                       var pexprsnode4 = nodearraylist5
+                                       assert pexprsnode4 isa nullable AExprs
+                                       var tassignnode5 = nodearraylist6
+                                       assert tassignnode5 isa nullable TAssign
+                                       var pexprnode6 = nodearraylist7
+                                       assert pexprnode6 isa nullable AExpr
+                                       var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               pexprsnode4,
+                                               tassignnode5,
+                                               pexprnode6
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction358
+private class ReduceAction487
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwcontinuenode2 = nodearraylist1
-                                       assert tkwcontinuenode2 isa nullable TKwcontinue
-                                       var pexprnode4 = nodearraylist2
-                                       assert pexprnode4 isa nullable AExpr
-                                       var pexprnode1: nullable AContinueExpr = new AContinueExpr.init_acontinueexpr(
-                                               tkwcontinuenode2,
-                                               null,
-                                               pexprnode4
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var tidnode3 = nodearraylist1
+                                       assert tidnode3 isa nullable TId
+                                       var pexprsnode4 = nodearraylist2
+                                       assert pexprsnode4 isa nullable AExprs
+                                       var tassignnode5 = nodearraylist3
+                                       assert tassignnode5 isa nullable TAssign
+                                       var pexprnode6 = nodearraylist4
+                                       assert pexprnode6 isa nullable AExpr
+                                       var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
+                                               pexprnode2,
+                                               tidnode3,
+                                               pexprsnode4,
+                                               tassignnode5,
+                                               pexprnode6
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction359
+private class ReduceAction488
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwcontinuenode2 = nodearraylist1
-                                       assert tkwcontinuenode2 isa nullable TKwcontinue
-                                       var plabelnode3 = nodearraylist2
-                                       assert plabelnode3 isa nullable ALabel
-                                       var pexprnode4 = nodearraylist3
-                                       assert pexprnode4 isa nullable AExpr
-                                       var pexprnode1: nullable AContinueExpr = new AContinueExpr.init_acontinueexpr(
-                                               tkwcontinuenode2,
-                                               plabelnode3,
-                                               pexprnode4
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var pexprsnode3 = nodearraylist2
+                                       assert pexprsnode3 isa nullable AExprs
+                                       var tassignnode4 = nodearraylist3
+                                       assert tassignnode4 isa nullable TAssign
+                                       var pexprnode5 = nodearraylist4
+                                       assert pexprnode5 isa nullable AExpr
+                                       var pexprnode1: nullable ABraAssignExpr = new ABraAssignExpr.init_abraassignexpr(
+                                               pexprnode2,
+                                               pexprsnode3,
+                                               tassignnode4,
+                                               pexprnode5
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction366
+private class ReduceAction489
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode5 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
                                        assert pexprnode2 isa nullable AExpr
                                        var pexprnode2 = nodearraylist1
                                        assert pexprnode2 isa nullable AExpr
-                                       var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa nullable TId
-                                       var pexprsnode4 = nodearraylist5
-                                       assert pexprsnode4 isa nullable AExprs
-                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+                                       var tattridnode3 = nodearraylist4
+                                       assert tattridnode3 isa nullable TAttrid
+                                       var passignopnode4 = nodearraylist5
+                                       assert passignopnode4 isa nullable AAssignOp
+                                       var pexprnode5 = nodearraylist6
+                                       assert pexprnode5 isa nullable AExpr
+                                       var pexprnode1: nullable AAttrReassignExpr = new AAttrReassignExpr.init_aattrreassignexpr(
                                                pexprnode2,
                                                pexprnode2,
-                                               tidnode3,
-                                               pexprsnode4,
-                                               listnode5
+                                               tattridnode3,
+                                               passignopnode4,
+                                               pexprnode5
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction367
+private class ReduceAction490
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode5 = new Array[Object]
                                        var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
                                        var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
-                                       var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa nullable TId
-                                       var pexprsnode4 = nodearraylist2
-                                       assert pexprsnode4 isa nullable AExprs
-                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+                                       var tattridnode3 = nodearraylist1
+                                       assert tattridnode3 isa nullable TAttrid
+                                       var passignopnode4 = nodearraylist2
+                                       assert passignopnode4 isa nullable AAssignOp
+                                       var pexprnode5 = nodearraylist3
+                                       assert pexprnode5 isa nullable AExpr
+                                       var pexprnode1: nullable AAttrReassignExpr = new AAttrReassignExpr.init_aattrreassignexpr(
                                                pexprnode2,
                                                pexprnode2,
-                                               tidnode3,
-                                               pexprsnode4,
-                                               listnode5
+                                               tattridnode3,
+                                               passignopnode4,
+                                               pexprnode5
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction368
+private class ReduceAction491
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode6 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
                                        assert pexprnode2 isa nullable AExpr
                                        var tidnode3 = nodearraylist4
                                        assert tidnode3 isa nullable TId
                                        var pexprsnode4 = nodearraylist5
                                        assert pexprsnode4 isa nullable AExprs
                                        var pexprnode2 = nodearraylist1
                                        assert pexprnode2 isa nullable AExpr
                                        var tidnode3 = nodearraylist4
                                        assert tidnode3 isa nullable TId
                                        var pexprsnode4 = nodearraylist5
                                        assert pexprsnode4 isa nullable AExprs
-                                       var listnode5 = nodearraylist6
-                                       assert listnode5 isa Array[Object]
-                                       listnode6 = concat(listnode6, listnode5)
-                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+                                       var passignopnode5 = nodearraylist6
+                                       assert passignopnode5 isa nullable AAssignOp
+                                       var pexprnode6 = nodearraylist7
+                                       assert pexprnode6 isa nullable AExpr
+                                       var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
                                                pexprnode2,
                                                tidnode3,
                                                pexprsnode4,
                                                pexprnode2,
                                                tidnode3,
                                                pexprsnode4,
-                                               listnode6
+                                               passignopnode5,
+                                               pexprnode6
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction369
+private class ReduceAction492
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode6 = new Array[Object]
                                        var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
                                        var tidnode3 = nodearraylist1
                                        assert tidnode3 isa nullable TId
                                        var pexprsnode4 = nodearraylist2
                                        assert pexprsnode4 isa nullable AExprs
                                        var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
                                        var tidnode3 = nodearraylist1
                                        assert tidnode3 isa nullable TId
                                        var pexprsnode4 = nodearraylist2
                                        assert pexprsnode4 isa nullable AExprs
-                                       var listnode5 = nodearraylist3
-                                       assert listnode5 isa Array[Object]
-                                       listnode6 = concat(listnode6, listnode5)
-                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
+                                       var passignopnode5 = nodearraylist3
+                                       assert passignopnode5 isa nullable AAssignOp
+                                       var pexprnode6 = nodearraylist4
+                                       assert pexprnode6 isa nullable AExpr
+                                       var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
                                                pexprnode2,
                                                tidnode3,
                                                pexprsnode4,
                                                pexprnode2,
                                                tidnode3,
                                                pexprsnode4,
-                                               listnode6
-                                       )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(_goto), node_list)
-       end
-end
-private class ReduceAction370
-       super ReduceAction
-       redef fun action(p: Parser)
-       do
-                                       var node_list: nullable Object = null
-                                       var nodearraylist2 = p.pop
-                                       var nodearraylist1 = p.pop
-                                       var tkwsupernode3 = nodearraylist1
-                                       assert tkwsupernode3 isa nullable TKwsuper
-                                       var pexprsnode4 = nodearraylist2
-                                       assert pexprsnode4 isa nullable AExprs
-                                       var pexprnode1: nullable ASuperExpr = new ASuperExpr.init_asuperexpr(
-                                               null,
-                                               tkwsupernode3,
-                                               pexprsnode4
-                                       )
-                                       node_list = pexprnode1
-                                       p.push(p.go_to(_goto), node_list)
-       end
-end
-private class ReduceAction371
-       super ReduceAction
-       redef fun action(p: Parser)
-       do
-                                       var node_list: nullable Object = null
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
-                                       var nodearraylist1 = p.pop
-                                       var pqualifiednode2 = nodearraylist1
-                                       assert pqualifiednode2 isa nullable AQualified
-                                       var tkwsupernode3 = nodearraylist2
-                                       assert tkwsupernode3 isa nullable TKwsuper
-                                       var pexprsnode4 = nodearraylist3
-                                       assert pexprsnode4 isa nullable AExprs
-                                       var pexprnode1: nullable ASuperExpr = new ASuperExpr.init_asuperexpr(
-                                               pqualifiednode2,
-                                               tkwsupernode3,
-                                               pexprsnode4
+                                               passignopnode5,
+                                               pexprnode6
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction372
+private class ReduceAction493
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
                                        assert pexprnode2 isa nullable AExpr
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
                                        assert pexprnode2 isa nullable AExpr
-                                       var tkwinitnode3 = nodearraylist4
-                                       assert tkwinitnode3 isa nullable TKwinit
-                                       var pexprsnode4 = nodearraylist5
-                                       assert pexprsnode4 isa nullable AExprs
-                                       var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
+                                       var pexprsnode3 = nodearraylist2
+                                       assert pexprsnode3 isa nullable AExprs
+                                       var passignopnode4 = nodearraylist3
+                                       assert passignopnode4 isa nullable AAssignOp
+                                       var pexprnode5 = nodearraylist4
+                                       assert pexprnode5 isa nullable AExpr
+                                       var pexprnode1: nullable ABraReassignExpr = new ABraReassignExpr.init_abrareassignexpr(
                                                pexprnode2,
                                                pexprnode2,
-                                               tkwinitnode3,
-                                               pexprsnode4
+                                               pexprsnode3,
+                                               passignopnode4,
+                                               pexprnode5
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction373
+private class ReduceAction494
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
-                                       var tkwinitnode3 = nodearraylist1
-                                       assert tkwinitnode3 isa nullable TKwinit
-                                       var pexprsnode4 = nodearraylist2
-                                       assert pexprsnode4 isa nullable AExprs
-                                       var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
-                                               pexprnode2,
-                                               tkwinitnode3,
-                                               pexprsnode4
+                                       var tpluseqnode2 = nodearraylist1
+                                       assert tpluseqnode2 isa nullable TPluseq
+                                       var passignopnode1: nullable APlusAssignOp = new APlusAssignOp.init_aplusassignop(
+                                               tpluseqnode2
                                        )
                                        )
-                                       node_list = pexprnode1
+                                       node_list = passignopnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction374
+private class ReduceAction495
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwdebugnode2 = nodearraylist1
-                                       assert tkwdebugnode2 isa nullable TKwdebug
-                                       var tkwtypenode3 = nodearraylist2
-                                       assert tkwtypenode3 isa nullable TKwtype
-                                       var pexprnode4 = nodearraylist5
-                                       assert pexprnode4 isa nullable AExpr
-                                       var ptypenode5 = nodearraylist3
-                                       assert ptypenode5 isa nullable AType
-                                       var pexprnode1: nullable ADebugTypeExpr = new ADebugTypeExpr.init_adebugtypeexpr(
-                                               tkwdebugnode2,
-                                               tkwtypenode3,
-                                               pexprnode4,
-                                               ptypenode5
+                                       var tminuseqnode2 = nodearraylist1
+                                       assert tminuseqnode2 isa nullable TMinuseq
+                                       var passignopnode1: nullable AMinusAssignOp = new AMinusAssignOp.init_aminusassignop(
+                                               tminuseqnode2
                                        )
                                        )
-                                       node_list = pexprnode1
+                                       node_list = passignopnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction375
+private class ReduceAction496
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwlabelnode2 = nodearraylist1
-                                       assert tkwlabelnode2 isa nullable TKwlabel
-                                       var tidnode3 = nodearraylist2
-                                       assert tidnode3 isa nullable TId
-                                       var plabelnode1: nullable ALabel = new ALabel.init_alabel(
-                                               tkwlabelnode2,
-                                               tidnode3
+                                       var tkwdonode2 = nodearraylist1
+                                       assert tkwdonode2 isa nullable TKwdo
+                                       var pexprnode3 = nodearraylist2
+                                       assert pexprnode3 isa nullable AExpr
+                                       var plabelnode4 = nodearraylist3
+                                       assert plabelnode4 isa nullable ALabel
+                                       var pexprnode1: nullable ADoExpr = new ADoExpr.init_adoexpr(
+                                               tkwdonode2,
+                                               pexprnode3,
+                                               plabelnode4
                                        )
                                        )
-                                       node_list = plabelnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction376
+private class ReduceAction497
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode2 = new Array[Object]
-                                       var pclosuredefnode1 = nodearraylist1
-                                       if pclosuredefnode1 != null then
-                                               listnode2.add(pclosuredefnode1)
-                                       end
-                                       node_list = listnode2
+                                       var tkwdonode2 = nodearraylist1
+                                       assert tkwdonode2 isa nullable TKwdo
+                                       var pexprnode3 = nodearraylist2
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode1: nullable ADoExpr = new ADoExpr.init_adoexpr(
+                                               tkwdonode2,
+                                               pexprnode3,
+                                               null
+                                       )
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction377
+private class ReduceAction498
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode3 = new Array[Object]
-                                       var pclosuredefnode1 = nodearraylist1
-                                       var listnode2 = nodearraylist2
-                                       assert listnode2 isa Array[Object]
-                                       if pclosuredefnode1 != null then
-                                               listnode3.add(pclosuredefnode1)
-                                       end
-                                       listnode3 = concat(listnode3, listnode2)
-                                       node_list = listnode3
+                                       var tkwifnode2 = nodearraylist1
+                                       assert tkwifnode2 isa nullable TKwif
+                                       var pexprnode3 = nodearraylist3
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode4 = nodearraylist6
+                                       assert pexprnode4 isa nullable AExpr
+                                       var pexprnode5 = nodearraylist8
+                                       assert pexprnode5 isa nullable AExpr
+                                       var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
+                                               tkwifnode2,
+                                               pexprnode3,
+                                               pexprnode4,
+                                               pexprnode5
+                                       )
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction378
+private class ReduceAction499
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode4 = new Array[Object]
-                                       var tbangnode2 = nodearraylist1
-                                       assert tbangnode2 isa nullable TBang
-                                       var pclosureidnode3 = nodearraylist2
-                                       assert pclosureidnode3 isa nullable AClosureId
-                                       var tkwdonode5 = nodearraylist3
-                                       assert tkwdonode5 isa nullable TKwdo
-                                       var pexprnode6 = nodearraylist4
-                                       assert pexprnode6 isa nullable AExpr
-                                       var plabelnode7 = nodearraylist5
-                                       assert plabelnode7 isa nullable ALabel
-                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
-                                               tbangnode2,
-                                               pclosureidnode3,
-                                               listnode4,
-                                               tkwdonode5,
-                                               pexprnode6,
-                                               plabelnode7
+                                       var tkwifnode2 = nodearraylist1
+                                       assert tkwifnode2 isa nullable TKwif
+                                       var pexprnode3 = nodearraylist3
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode4 = nodearraylist6
+                                       assert pexprnode4 isa nullable AExpr
+                                       var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
+                                               tkwifnode2,
+                                               pexprnode3,
+                                               pexprnode4,
+                                               null
                                        )
                                        )
-                                       node_list = pclosuredefnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction379
+private class ReduceAction500
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -13251,33 +18647,25 @@ private class ReduceAction379
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode5 = new Array[Object]
-                                       var tbangnode2 = nodearraylist1
-                                       assert tbangnode2 isa nullable TBang
-                                       var pclosureidnode3 = nodearraylist2
-                                       assert pclosureidnode3 isa nullable AClosureId
-                                       var listnode4 = nodearraylist4
-                                       assert listnode4 isa Array[Object]
-                                       listnode5 = concat(listnode5, listnode4)
-                                       var tkwdonode6 = nodearraylist6
-                                       assert tkwdonode6 isa nullable TKwdo
-                                       var pexprnode7 = nodearraylist7
-                                       assert pexprnode7 isa nullable AExpr
-                                       var plabelnode8 = nodearraylist8
-                                       assert plabelnode8 isa nullable ALabel
-                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
-                                               tbangnode2,
-                                               pclosureidnode3,
-                                               listnode5,
-                                               tkwdonode6,
-                                               pexprnode7,
-                                               plabelnode8
+                                       var tkwifnode2 = nodearraylist1
+                                       assert tkwifnode2 isa nullable TKwif
+                                       var pexprnode3 = nodearraylist3
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode4 = nodearraylist7
+                                       assert pexprnode4 isa nullable AExpr
+                                       var pexprnode5 = nodearraylist8
+                                       assert pexprnode5 isa nullable AExpr
+                                       var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
+                                               tkwifnode2,
+                                               pexprnode3,
+                                               pexprnode4,
+                                               pexprnode5
                                        )
                                        )
-                                       node_list = pclosuredefnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction380
+private class ReduceAction501
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -13288,265 +18676,251 @@ private class ReduceAction380
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode5 = new Array[Object]
-                                       var tbangnode2 = nodearraylist1
-                                       assert tbangnode2 isa nullable TBang
-                                       var pclosureidnode3 = nodearraylist2
-                                       assert pclosureidnode3 isa nullable AClosureId
-                                       var listnode4 = nodearraylist3
-                                       assert listnode4 isa Array[Object]
-                                       listnode5 = concat(listnode5, listnode4)
-                                       var tkwdonode6 = nodearraylist4
-                                       assert tkwdonode6 isa nullable TKwdo
-                                       var pexprnode7 = nodearraylist5
-                                       assert pexprnode7 isa nullable AExpr
-                                       var plabelnode8 = nodearraylist6
-                                       assert plabelnode8 isa nullable ALabel
-                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
-                                               tbangnode2,
-                                               pclosureidnode3,
-                                               listnode5,
-                                               tkwdonode6,
-                                               pexprnode7,
-                                               plabelnode8
+                                       var tkwifnode2 = nodearraylist1
+                                       assert tkwifnode2 isa nullable TKwif
+                                       var pexprnode3 = nodearraylist3
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode5 = nodearraylist6
+                                       assert pexprnode5 isa nullable AExpr
+                                       var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
+                                               tkwifnode2,
+                                               pexprnode3,
+                                               null,
+                                               pexprnode5
                                        )
                                        )
-                                       node_list = pclosuredefnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction381
+private class ReduceAction502
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode4 = new Array[Object]
-                                       var tbangnode2 = nodearraylist1
-                                       assert tbangnode2 isa nullable TBang
-                                       var pclosureidnode3 = nodearraylist2
-                                       assert pclosureidnode3 isa nullable AClosureId
-                                       var tkwdonode5 = nodearraylist3
-                                       assert tkwdonode5 isa nullable TKwdo
-                                       var pexprnode6 = nodearraylist4
-                                       assert pexprnode6 isa nullable AExpr
-                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
-                                               tbangnode2,
-                                               pclosureidnode3,
-                                               listnode4,
-                                               tkwdonode5,
-                                               pexprnode6,
-                                               null
+                                       var tkwifnode2 = nodearraylist1
+                                       assert tkwifnode2 isa nullable TKwif
+                                       var pexprnode3 = nodearraylist3
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode5 = nodearraylist7
+                                       assert pexprnode5 isa nullable AExpr
+                                       var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
+                                               tkwifnode2,
+                                               pexprnode3,
+                                               null,
+                                               pexprnode5
                                        )
                                        )
-                                       node_list = pclosuredefnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction382
+private class ReduceAction505
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode5 = new Array[Object]
-                                       var tbangnode2 = nodearraylist1
-                                       assert tbangnode2 isa nullable TBang
-                                       var pclosureidnode3 = nodearraylist2
-                                       assert pclosureidnode3 isa nullable AClosureId
-                                       var listnode4 = nodearraylist4
-                                       assert listnode4 isa Array[Object]
-                                       listnode5 = concat(listnode5, listnode4)
-                                       var tkwdonode6 = nodearraylist6
-                                       assert tkwdonode6 isa nullable TKwdo
-                                       var pexprnode7 = nodearraylist7
-                                       assert pexprnode7 isa nullable AExpr
-                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
-                                               tbangnode2,
-                                               pclosureidnode3,
-                                               listnode5,
-                                               tkwdonode6,
-                                               pexprnode7,
-                                               null
+                                       var tkwloopnode2 = nodearraylist1
+                                       assert tkwloopnode2 isa nullable TKwloop
+                                       var pexprnode3 = nodearraylist2
+                                       assert pexprnode3 isa nullable AExpr
+                                       var plabelnode4 = nodearraylist3
+                                       assert plabelnode4 isa nullable ALabel
+                                       var pexprnode1: nullable ALoopExpr = new ALoopExpr.init_aloopexpr(
+                                               tkwloopnode2,
+                                               pexprnode3,
+                                               plabelnode4
                                        )
                                        )
-                                       node_list = pclosuredefnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction383
+private class ReduceAction506
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode5 = new Array[Object]
-                                       var tbangnode2 = nodearraylist1
-                                       assert tbangnode2 isa nullable TBang
-                                       var pclosureidnode3 = nodearraylist2
-                                       assert pclosureidnode3 isa nullable AClosureId
-                                       var listnode4 = nodearraylist3
-                                       assert listnode4 isa Array[Object]
-                                       listnode5 = concat(listnode5, listnode4)
-                                       var tkwdonode6 = nodearraylist4
-                                       assert tkwdonode6 isa nullable TKwdo
-                                       var pexprnode7 = nodearraylist5
-                                       assert pexprnode7 isa nullable AExpr
-                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
-                                               tbangnode2,
-                                               pclosureidnode3,
-                                               listnode5,
-                                               tkwdonode6,
-                                               pexprnode7,
+                                       var tkwloopnode2 = nodearraylist1
+                                       assert tkwloopnode2 isa nullable TKwloop
+                                       var pexprnode3 = nodearraylist2
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode1: nullable ALoopExpr = new ALoopExpr.init_aloopexpr(
+                                               tkwloopnode2,
+                                               pexprnode3,
                                                null
                                        )
                                                null
                                        )
-                                       node_list = pclosuredefnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction384
+private class ReduceAction507
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode4 = new Array[Object]
-                                       var tbangnode2 = nodearraylist1
-                                       assert tbangnode2 isa nullable TBang
-                                       var pclosureidnode3 = nodearraylist2
-                                       assert pclosureidnode3 isa nullable AClosureId
-                                       var pexprnode6 = nodearraylist5
-                                       assert pexprnode6 isa nullable AExpr
-                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
-                                               tbangnode2,
-                                               pclosureidnode3,
-                                               listnode4,
-                                               null,
-                                               pexprnode6,
-                                               null
+                                       var tkwwhilenode2 = nodearraylist1
+                                       assert tkwwhilenode2 isa nullable TKwwhile
+                                       var pexprnode3 = nodearraylist3
+                                       assert pexprnode3 isa nullable AExpr
+                                       var tkwdonode4 = nodearraylist5
+                                       assert tkwdonode4 isa nullable TKwdo
+                                       var pexprnode5 = nodearraylist6
+                                       assert pexprnode5 isa nullable AExpr
+                                       var plabelnode6 = nodearraylist7
+                                       assert plabelnode6 isa nullable ALabel
+                                       var pexprnode1: nullable AWhileExpr = new AWhileExpr.init_awhileexpr(
+                                               tkwwhilenode2,
+                                               pexprnode3,
+                                               tkwdonode4,
+                                               pexprnode5,
+                                               plabelnode6
                                        )
                                        )
-                                       node_list = pclosuredefnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction385
+private class ReduceAction508
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode5 = new Array[Object]
-                                       var tbangnode2 = nodearraylist1
-                                       assert tbangnode2 isa nullable TBang
-                                       var pclosureidnode3 = nodearraylist2
-                                       assert pclosureidnode3 isa nullable AClosureId
-                                       var listnode4 = nodearraylist4
-                                       assert listnode4 isa Array[Object]
-                                       listnode5 = concat(listnode5, listnode4)
-                                       var pexprnode7 = nodearraylist8
-                                       assert pexprnode7 isa nullable AExpr
-                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
-                                               tbangnode2,
-                                               pclosureidnode3,
-                                               listnode5,
-                                               null,
-                                               pexprnode7,
+                                       var tkwwhilenode2 = nodearraylist1
+                                       assert tkwwhilenode2 isa nullable TKwwhile
+                                       var pexprnode3 = nodearraylist3
+                                       assert pexprnode3 isa nullable AExpr
+                                       var tkwdonode4 = nodearraylist5
+                                       assert tkwdonode4 isa nullable TKwdo
+                                       var pexprnode5 = nodearraylist6
+                                       assert pexprnode5 isa nullable AExpr
+                                       var pexprnode1: nullable AWhileExpr = new AWhileExpr.init_awhileexpr(
+                                               tkwwhilenode2,
+                                               pexprnode3,
+                                               tkwdonode4,
+                                               pexprnode5,
                                                null
                                        )
                                                null
                                        )
-                                       node_list = pclosuredefnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction386
+private class ReduceAction509
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist13 = p.pop
+                                       var nodearraylist12 = p.pop
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode5 = new Array[Object]
-                                       var tbangnode2 = nodearraylist1
-                                       assert tbangnode2 isa nullable TBang
-                                       var pclosureidnode3 = nodearraylist2
-                                       assert pclosureidnode3 isa nullable AClosureId
-                                       var listnode4 = nodearraylist3
-                                       assert listnode4 isa Array[Object]
-                                       listnode5 = concat(listnode5, listnode4)
-                                       var pexprnode7 = nodearraylist6
+                                       var listnode4 = new Array[Object]
+                                       var tkwfornode2 = nodearraylist1
+                                       assert tkwfornode2 isa nullable TKwfor
+                                       var listnode3 = nodearraylist4
+                                       assert listnode3 isa Array[Object]
+                                       listnode4 = concat(listnode4, listnode3)
+                                       var pexprnode5 = nodearraylist9
+                                       assert pexprnode5 isa nullable AExpr
+                                       var tkwdonode6 = nodearraylist11
+                                       assert tkwdonode6 isa nullable TKwdo
+                                       var pexprnode7 = nodearraylist12
                                        assert pexprnode7 isa nullable AExpr
                                        assert pexprnode7 isa nullable AExpr
-                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
-                                               tbangnode2,
-                                               pclosureidnode3,
-                                               listnode5,
-                                               null,
+                                       var plabelnode8 = nodearraylist13
+                                       assert plabelnode8 isa nullable ALabel
+                                       var pexprnode1: nullable AForExpr = new AForExpr.init_aforexpr(
+                                               tkwfornode2,
+                                               listnode4,
+                                               pexprnode5,
+                                               tkwdonode6,
                                                pexprnode7,
                                                pexprnode7,
-                                               null
+                                               plabelnode8
                                        )
                                        )
-                                       node_list = pclosuredefnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction387
+private class ReduceAction510
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
-                                       var tbangnode2 = nodearraylist1
-                                       assert tbangnode2 isa nullable TBang
-                                       var pclosureidnode3 = nodearraylist2
-                                       assert pclosureidnode3 isa nullable AClosureId
-                                       var tkwdonode5 = nodearraylist3
-                                       assert tkwdonode5 isa nullable TKwdo
-                                       var pexprnode6 = nodearraylist5
-                                       assert pexprnode6 isa nullable AExpr
-                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
-                                               tbangnode2,
-                                               pclosureidnode3,
+                                       var tkwfornode2 = nodearraylist1
+                                       assert tkwfornode2 isa nullable TKwfor
+                                       var listnode3 = nodearraylist3
+                                       assert listnode3 isa Array[Object]
+                                       listnode4 = concat(listnode4, listnode3)
+                                       var pexprnode5 = nodearraylist7
+                                       assert pexprnode5 isa nullable AExpr
+                                       var tkwdonode6 = nodearraylist9
+                                       assert tkwdonode6 isa nullable TKwdo
+                                       var pexprnode7 = nodearraylist10
+                                       assert pexprnode7 isa nullable AExpr
+                                       var plabelnode8 = nodearraylist11
+                                       assert plabelnode8 isa nullable ALabel
+                                       var pexprnode1: nullable AForExpr = new AForExpr.init_aforexpr(
+                                               tkwfornode2,
                                                listnode4,
                                                listnode4,
-                                               tkwdonode5,
-                                               pexprnode6,
-                                               null
+                                               pexprnode5,
+                                               tkwdonode6,
+                                               pexprnode7,
+                                               plabelnode8
                                        )
                                        )
-                                       node_list = pclosuredefnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction388
+private class ReduceAction511
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist12 = p.pop
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -13555,66 +18929,70 @@ private class ReduceAction388
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode5 = new Array[Object]
-                                       var tbangnode2 = nodearraylist1
-                                       assert tbangnode2 isa nullable TBang
-                                       var pclosureidnode3 = nodearraylist2
-                                       assert pclosureidnode3 isa nullable AClosureId
-                                       var listnode4 = nodearraylist4
-                                       assert listnode4 isa Array[Object]
-                                       listnode5 = concat(listnode5, listnode4)
-                                       var tkwdonode6 = nodearraylist6
+                                       var listnode4 = new Array[Object]
+                                       var tkwfornode2 = nodearraylist1
+                                       assert tkwfornode2 isa nullable TKwfor
+                                       var listnode3 = nodearraylist4
+                                       assert listnode3 isa Array[Object]
+                                       listnode4 = concat(listnode4, listnode3)
+                                       var pexprnode5 = nodearraylist9
+                                       assert pexprnode5 isa nullable AExpr
+                                       var tkwdonode6 = nodearraylist11
                                        assert tkwdonode6 isa nullable TKwdo
                                        assert tkwdonode6 isa nullable TKwdo
-                                       var pexprnode7 = nodearraylist8
+                                       var pexprnode7 = nodearraylist12
                                        assert pexprnode7 isa nullable AExpr
                                        assert pexprnode7 isa nullable AExpr
-                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
-                                               tbangnode2,
-                                               pclosureidnode3,
-                                               listnode5,
+                                       var pexprnode1: nullable AForExpr = new AForExpr.init_aforexpr(
+                                               tkwfornode2,
+                                               listnode4,
+                                               pexprnode5,
                                                tkwdonode6,
                                                pexprnode7,
                                                null
                                        )
                                                tkwdonode6,
                                                pexprnode7,
                                                null
                                        )
-                                       node_list = pclosuredefnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction389
+private class ReduceAction512
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode5 = new Array[Object]
-                                       var tbangnode2 = nodearraylist1
-                                       assert tbangnode2 isa nullable TBang
-                                       var pclosureidnode3 = nodearraylist2
-                                       assert pclosureidnode3 isa nullable AClosureId
-                                       var listnode4 = nodearraylist3
-                                       assert listnode4 isa Array[Object]
-                                       listnode5 = concat(listnode5, listnode4)
-                                       var tkwdonode6 = nodearraylist4
+                                       var listnode4 = new Array[Object]
+                                       var tkwfornode2 = nodearraylist1
+                                       assert tkwfornode2 isa nullable TKwfor
+                                       var listnode3 = nodearraylist3
+                                       assert listnode3 isa Array[Object]
+                                       listnode4 = concat(listnode4, listnode3)
+                                       var pexprnode5 = nodearraylist7
+                                       assert pexprnode5 isa nullable AExpr
+                                       var tkwdonode6 = nodearraylist9
                                        assert tkwdonode6 isa nullable TKwdo
                                        assert tkwdonode6 isa nullable TKwdo
-                                       var pexprnode7 = nodearraylist6
+                                       var pexprnode7 = nodearraylist10
                                        assert pexprnode7 isa nullable AExpr
                                        assert pexprnode7 isa nullable AExpr
-                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
-                                               tbangnode2,
-                                               pclosureidnode3,
-                                               listnode5,
+                                       var pexprnode1: nullable AForExpr = new AForExpr.init_aforexpr(
+                                               tkwfornode2,
+                                               listnode4,
+                                               pexprnode5,
                                                tkwdonode6,
                                                pexprnode7,
                                                null
                                        )
                                                tkwdonode6,
                                                pexprnode7,
                                                null
                                        )
-                                       node_list = pclosuredefnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction390
+private class ReduceAction513
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -13623,186 +19001,215 @@ private class ReduceAction390
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode4 = new Array[Object]
-                                       var tbangnode2 = nodearraylist1
-                                       assert tbangnode2 isa nullable TBang
-                                       var pclosureidnode3 = nodearraylist2
-                                       assert pclosureidnode3 isa nullable AClosureId
-                                       var tkwdonode5 = nodearraylist3
-                                       assert tkwdonode5 isa nullable TKwdo
-                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
-                                               tbangnode2,
-                                               pclosureidnode3,
-                                               listnode4,
-                                               tkwdonode5,
+                                       var tkwassertnode2 = nodearraylist1
+                                       assert tkwassertnode2 isa nullable TKwassert
+                                       var pexprnode4 = nodearraylist2
+                                       assert pexprnode4 isa nullable AExpr
+                                       var pexprnode5 = nodearraylist4
+                                       assert pexprnode5 isa nullable AExpr
+                                       var pexprnode1: nullable AAssertExpr = new AAssertExpr.init_aassertexpr(
+                                               tkwassertnode2,
                                                null,
                                                null,
-                                               null
+                                               pexprnode4,
+                                               pexprnode5
                                        )
                                        )
-                                       node_list = pclosuredefnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction391
+private class ReduceAction514
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode5 = new Array[Object]
-                                       var tbangnode2 = nodearraylist1
-                                       assert tbangnode2 isa nullable TBang
-                                       var pclosureidnode3 = nodearraylist2
-                                       assert pclosureidnode3 isa nullable AClosureId
-                                       var listnode4 = nodearraylist4
-                                       assert listnode4 isa Array[Object]
-                                       listnode5 = concat(listnode5, listnode4)
-                                       var tkwdonode6 = nodearraylist6
-                                       assert tkwdonode6 isa nullable TKwdo
-                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
-                                               tbangnode2,
-                                               pclosureidnode3,
-                                               listnode5,
-                                               tkwdonode6,
-                                               null,
-                                               null
+                                       var tkwassertnode2 = nodearraylist1
+                                       assert tkwassertnode2 isa nullable TKwassert
+                                       var tidnode3 = nodearraylist2
+                                       assert tidnode3 isa nullable TId
+                                       var pexprnode4 = nodearraylist3
+                                       assert pexprnode4 isa nullable AExpr
+                                       var pexprnode5 = nodearraylist5
+                                       assert pexprnode5 isa nullable AExpr
+                                       var pexprnode1: nullable AAssertExpr = new AAssertExpr.init_aassertexpr(
+                                               tkwassertnode2,
+                                               tidnode3,
+                                               pexprnode4,
+                                               pexprnode5
                                        )
                                        )
-                                       node_list = pclosuredefnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction392
+private class ReduceAction515
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode5 = new Array[Object]
-                                       var tbangnode2 = nodearraylist1
-                                       assert tbangnode2 isa nullable TBang
-                                       var pclosureidnode3 = nodearraylist2
-                                       assert pclosureidnode3 isa nullable AClosureId
-                                       var listnode4 = nodearraylist3
-                                       assert listnode4 isa Array[Object]
-                                       listnode5 = concat(listnode5, listnode4)
-                                       var tkwdonode6 = nodearraylist4
-                                       assert tkwdonode6 isa nullable TKwdo
-                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
-                                               tbangnode2,
-                                               pclosureidnode3,
-                                               listnode5,
-                                               tkwdonode6,
+                                       var tkwassertnode2 = nodearraylist1
+                                       assert tkwassertnode2 isa nullable TKwassert
+                                       var pexprnode4 = nodearraylist2
+                                       assert pexprnode4 isa nullable AExpr
+                                       var pexprnode1: nullable AAssertExpr = new AAssertExpr.init_aassertexpr(
+                                               tkwassertnode2,
                                                null,
                                                null,
+                                               pexprnode4,
+                                               null
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction516
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var tkwassertnode2 = nodearraylist1
+                                       assert tkwassertnode2 isa nullable TKwassert
+                                       var tidnode3 = nodearraylist2
+                                       assert tidnode3 isa nullable TId
+                                       var pexprnode4 = nodearraylist3
+                                       assert pexprnode4 isa nullable AExpr
+                                       var pexprnode1: nullable AAssertExpr = new AAssertExpr.init_aassertexpr(
+                                               tkwassertnode2,
+                                               tidnode3,
+                                               pexprnode4,
                                                null
                                        )
                                                null
                                        )
-                                       node_list = pclosuredefnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction393
+private class ReduceAction517
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tidnode2 = nodearraylist1
-                                       assert tidnode2 isa nullable TId
-                                       var pclosureidnode1: nullable ASimpleClosureId = new ASimpleClosureId.init_asimpleclosureid(
-                                               tidnode2
-                                       )
-                                       node_list = pclosureidnode1
+                                       var tidnode1 = nodearraylist1
+                                       node_list = tidnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction394
+private class ReduceAction521
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwbreaknode2 = nodearraylist1
-                                       assert tkwbreaknode2 isa nullable TKwbreak
-                                       var pclosureidnode1: nullable ABreakClosureId = new ABreakClosureId.init_abreakclosureid(
-                                               tkwbreaknode2
+                                       var listnode5 = new Array[Object]
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var pexprsnode3 = nodearraylist2
+                                       assert pexprsnode3 isa nullable AExprs
+                                       var listnode4 = nodearraylist3
+                                       assert listnode4 isa Array[Object]
+                                       listnode5 = concat(listnode5, listnode4)
+                                       var pexprnode1: nullable ABraExpr = new ABraExpr.init_abraexpr(
+                                               pexprnode2,
+                                               pexprsnode3,
+                                               listnode5
                                        )
                                        )
-                                       node_list = pclosureidnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction395
+private class ReduceAction523
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode4 = nodearraylist1
-                                       assert pexprnode4 isa nullable AExpr
-                                       var pexprnode1: nullable AContinueExpr = new AContinueExpr.init_acontinueexpr(
-                                               null,
-                                               null,
-                                               pexprnode4
+                                       var tkwifnode2 = nodearraylist1
+                                       assert tkwifnode2 isa nullable TKwif
+                                       var pexprnode3 = nodearraylist3
+                                       assert pexprnode3 isa nullable AExpr
+                                       var tkwthennode4 = nodearraylist5
+                                       assert tkwthennode4 isa nullable TKwthen
+                                       var pexprnode5 = nodearraylist7
+                                       assert pexprnode5 isa nullable AExpr
+                                       var tkwelsenode6 = nodearraylist9
+                                       assert tkwelsenode6 isa nullable TKwelse
+                                       var pexprnode7 = nodearraylist11
+                                       assert pexprnode7 isa nullable AExpr
+                                       var pexprnode1: nullable AIfexprExpr = new AIfexprExpr.init_aifexprexpr(
+                                               tkwifnode2,
+                                               pexprnode3,
+                                               tkwthennode4,
+                                               pexprnode5,
+                                               tkwelsenode6,
+                                               pexprnode7
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction396
+private class ReduceAction525
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwvarnode2 = nodearraylist1
-                                       assert tkwvarnode2 isa nullable TKwvar
-                                       var tidnode3 = nodearraylist2
-                                       assert tidnode3 isa nullable TId
-                                       var pexprnode1: nullable AVardeclExpr = new AVardeclExpr.init_avardeclexpr(
-                                               tkwvarnode2,
-                                               tidnode3,
-                                               null,
-                                               null,
-                                               null
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var pexprnode3 = nodearraylist4
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode1: nullable AOrExpr = new AOrExpr.init_aorexpr(
+                                               pexprnode2,
+                                               pexprnode3
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction397
+private class ReduceAction526
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwvarnode2 = nodearraylist1
-                                       assert tkwvarnode2 isa nullable TKwvar
-                                       var tidnode3 = nodearraylist2
-                                       assert tidnode3 isa nullable TId
-                                       var ptypenode4 = nodearraylist3
-                                       assert ptypenode4 isa nullable AType
-                                       var pexprnode1: nullable AVardeclExpr = new AVardeclExpr.init_avardeclexpr(
-                                               tkwvarnode2,
-                                               tidnode3,
-                                               ptypenode4,
-                                               null,
-                                               null
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var pexprnode3 = nodearraylist4
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode1: nullable AAndExpr = new AAndExpr.init_aandexpr(
+                                               pexprnode2,
+                                               pexprnode3
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction398
+private class ReduceAction527
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -13812,174 +19219,123 @@ private class ReduceAction398
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwvarnode2 = nodearraylist1
-                                       assert tkwvarnode2 isa nullable TKwvar
-                                       var tidnode3 = nodearraylist2
-                                       assert tidnode3 isa nullable TId
-                                       var tassignnode5 = nodearraylist3
-                                       assert tassignnode5 isa nullable TAssign
-                                       var pexprnode6 = nodearraylist5
-                                       assert pexprnode6 isa nullable AExpr
-                                       var pexprnode1: nullable AVardeclExpr = new AVardeclExpr.init_avardeclexpr(
-                                               tkwvarnode2,
-                                               tidnode3,
-                                               null,
-                                               tassignnode5,
-                                               pexprnode6
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var pexprnode3 = nodearraylist5
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode1: nullable AOrElseExpr = new AOrElseExpr.init_aorelseexpr(
+                                               pexprnode2,
+                                               pexprnode3
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction399
+private class ReduceAction529
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwvarnode2 = nodearraylist1
-                                       assert tkwvarnode2 isa nullable TKwvar
-                                       var tidnode3 = nodearraylist2
-                                       assert tidnode3 isa nullable TId
-                                       var ptypenode4 = nodearraylist3
-                                       assert ptypenode4 isa nullable AType
-                                       var tassignnode5 = nodearraylist4
-                                       assert tassignnode5 isa nullable TAssign
-                                       var pexprnode6 = nodearraylist6
-                                       assert pexprnode6 isa nullable AExpr
-                                       var pexprnode1: nullable AVardeclExpr = new AVardeclExpr.init_avardeclexpr(
-                                               tkwvarnode2,
-                                               tidnode3,
-                                               ptypenode4,
-                                               tassignnode5,
-                                               pexprnode6
+                                       var tkwnotnode2 = nodearraylist1
+                                       assert tkwnotnode2 isa nullable TKwnot
+                                       var pexprnode3 = nodearraylist3
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode1: nullable ANotExpr = new ANotExpr.init_anotexpr(
+                                               tkwnotnode2,
+                                               pexprnode3
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction400
+private class ReduceAction531
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
                                        assert pexprnode2 isa nullable AExpr
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
                                        assert pexprnode2 isa nullable AExpr
-                                       var tattridnode3 = nodearraylist4
-                                       assert tattridnode3 isa nullable TAttrid
-                                       var tassignnode4 = nodearraylist5
-                                       assert tassignnode4 isa nullable TAssign
-                                       var pexprnode5 = nodearraylist6
-                                       assert pexprnode5 isa nullable AExpr
-                                       var pexprnode1: nullable AAttrAssignExpr = new AAttrAssignExpr.init_aattrassignexpr(
+                                       var pexprnode3 = nodearraylist4
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode1: nullable AEqExpr = new AEqExpr.init_aeqexpr(
                                                pexprnode2,
                                                pexprnode2,
-                                               tattridnode3,
-                                               tassignnode4,
-                                               pexprnode5
+                                               pexprnode3
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction401
+private class ReduceAction532
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
-                                       var tattridnode3 = nodearraylist1
-                                       assert tattridnode3 isa nullable TAttrid
-                                       var tassignnode4 = nodearraylist2
-                                       assert tassignnode4 isa nullable TAssign
-                                       var pexprnode5 = nodearraylist3
-                                       assert pexprnode5 isa nullable AExpr
-                                       var pexprnode1: nullable AAttrAssignExpr = new AAttrAssignExpr.init_aattrassignexpr(
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var pexprnode3 = nodearraylist4
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode1: nullable AEeExpr = new AEeExpr.init_aeeexpr(
                                                pexprnode2,
                                                pexprnode2,
-                                               tattridnode3,
-                                               tassignnode4,
-                                               pexprnode5
+                                               pexprnode3
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction402
+private class ReduceAction533
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
                                        assert pexprnode2 isa nullable AExpr
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
                                        assert pexprnode2 isa nullable AExpr
-                                       var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa nullable TId
-                                       var pexprsnode4 = nodearraylist5
-                                       assert pexprsnode4 isa nullable AExprs
-                                       var tassignnode5 = nodearraylist6
-                                       assert tassignnode5 isa nullable TAssign
-                                       var pexprnode6 = nodearraylist7
-                                       assert pexprnode6 isa nullable AExpr
-                                       var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
+                                       var pexprnode3 = nodearraylist4
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode1: nullable ANeExpr = new ANeExpr.init_aneexpr(
                                                pexprnode2,
                                                pexprnode2,
-                                               tidnode3,
-                                               pexprsnode4,
-                                               tassignnode5,
-                                               pexprnode6
+                                               pexprnode3
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction403
+private class ReduceAction534
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
-                                       var nodearraylist1 = p.pop
-                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
-                                       var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa nullable TId
-                                       var pexprsnode4 = nodearraylist2
-                                       assert pexprsnode4 isa nullable AExprs
-                                       var tassignnode5 = nodearraylist3
-                                       assert tassignnode5 isa nullable TAssign
-                                       var pexprnode6 = nodearraylist4
-                                       assert pexprnode6 isa nullable AExpr
-                                       var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var pexprnode3 = nodearraylist4
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode1: nullable ALtExpr = new ALtExpr.init_altexpr(
                                                pexprnode2,
                                                pexprnode2,
-                                               tidnode3,
-                                               pexprsnode4,
-                                               tassignnode5,
-                                               pexprnode6
+                                               pexprnode3
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction404
+private class ReduceAction535
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -13990,110 +19346,80 @@ private class ReduceAction404
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
                                        assert pexprnode2 isa nullable AExpr
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
                                        assert pexprnode2 isa nullable AExpr
-                                       var pexprsnode3 = nodearraylist2
-                                       assert pexprsnode3 isa nullable AExprs
-                                       var tassignnode4 = nodearraylist3
-                                       assert tassignnode4 isa nullable TAssign
-                                       var pexprnode5 = nodearraylist4
-                                       assert pexprnode5 isa nullable AExpr
-                                       var pexprnode1: nullable ABraAssignExpr = new ABraAssignExpr.init_abraassignexpr(
+                                       var pexprnode3 = nodearraylist4
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode1: nullable ALeExpr = new ALeExpr.init_aleexpr(
                                                pexprnode2,
                                                pexprnode2,
-                                               pexprsnode3,
-                                               tassignnode4,
-                                               pexprnode5
+                                               pexprnode3
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction405
+private class ReduceAction536
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
                                        assert pexprnode2 isa nullable AExpr
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
                                        assert pexprnode2 isa nullable AExpr
-                                       var tattridnode3 = nodearraylist4
-                                       assert tattridnode3 isa nullable TAttrid
-                                       var passignopnode4 = nodearraylist5
-                                       assert passignopnode4 isa nullable AAssignOp
-                                       var pexprnode5 = nodearraylist6
-                                       assert pexprnode5 isa nullable AExpr
-                                       var pexprnode1: nullable AAttrReassignExpr = new AAttrReassignExpr.init_aattrreassignexpr(
+                                       var pexprnode3 = nodearraylist4
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode1: nullable ALlExpr = new ALlExpr.init_allexpr(
                                                pexprnode2,
                                                pexprnode2,
-                                               tattridnode3,
-                                               passignopnode4,
-                                               pexprnode5
+                                               pexprnode3
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction406
+private class ReduceAction537
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
-                                       var tattridnode3 = nodearraylist1
-                                       assert tattridnode3 isa nullable TAttrid
-                                       var passignopnode4 = nodearraylist2
-                                       assert passignopnode4 isa nullable AAssignOp
-                                       var pexprnode5 = nodearraylist3
-                                       assert pexprnode5 isa nullable AExpr
-                                       var pexprnode1: nullable AAttrReassignExpr = new AAttrReassignExpr.init_aattrreassignexpr(
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var pexprnode3 = nodearraylist4
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode1: nullable AGtExpr = new AGtExpr.init_agtexpr(
                                                pexprnode2,
                                                pexprnode2,
-                                               tattridnode3,
-                                               passignopnode4,
-                                               pexprnode5
+                                               pexprnode3
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction407
+private class ReduceAction538
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
                                        assert pexprnode2 isa nullable AExpr
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
                                        assert pexprnode2 isa nullable AExpr
-                                       var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa nullable TId
-                                       var pexprsnode4 = nodearraylist5
-                                       assert pexprsnode4 isa nullable AExprs
-                                       var passignopnode5 = nodearraylist6
-                                       assert passignopnode5 isa nullable AAssignOp
-                                       var pexprnode6 = nodearraylist7
-                                       assert pexprnode6 isa nullable AExpr
-                                       var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
+                                       var pexprnode3 = nodearraylist4
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode1: nullable AGeExpr = new AGeExpr.init_ageexpr(
                                                pexprnode2,
                                                pexprnode2,
-                                               tidnode3,
-                                               pexprsnode4,
-                                               passignopnode5,
-                                               pexprnode6
+                                               pexprnode3
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction408
+private class ReduceAction539
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -14102,27 +19428,19 @@ private class ReduceAction408
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
-                                       var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa nullable TId
-                                       var pexprsnode4 = nodearraylist2
-                                       assert pexprsnode4 isa nullable AExprs
-                                       var passignopnode5 = nodearraylist3
-                                       assert passignopnode5 isa nullable AAssignOp
-                                       var pexprnode6 = nodearraylist4
-                                       assert pexprnode6 isa nullable AExpr
-                                       var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var pexprnode3 = nodearraylist4
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode1: nullable AGgExpr = new AGgExpr.init_aggexpr(
                                                pexprnode2,
                                                pexprnode2,
-                                               tidnode3,
-                                               pexprsnode4,
-                                               passignopnode5,
-                                               pexprnode6
+                                               pexprnode3
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction409
+private class ReduceAction540
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -14133,398 +19451,317 @@ private class ReduceAction409
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
                                        assert pexprnode2 isa nullable AExpr
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
                                        assert pexprnode2 isa nullable AExpr
-                                       var pexprsnode3 = nodearraylist2
-                                       assert pexprsnode3 isa nullable AExprs
-                                       var passignopnode4 = nodearraylist3
-                                       assert passignopnode4 isa nullable AAssignOp
-                                       var pexprnode5 = nodearraylist4
-                                       assert pexprnode5 isa nullable AExpr
-                                       var pexprnode1: nullable ABraReassignExpr = new ABraReassignExpr.init_abrareassignexpr(
+                                       var pexprnode3 = nodearraylist4
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode1: nullable AStarshipExpr = new AStarshipExpr.init_astarshipexpr(
                                                pexprnode2,
                                                pexprnode2,
-                                               pexprsnode3,
-                                               passignopnode4,
-                                               pexprnode5
+                                               pexprnode3
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction410
+private class ReduceAction541
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tpluseqnode2 = nodearraylist1
-                                       assert tpluseqnode2 isa nullable TPluseq
-                                       var passignopnode1: nullable APlusAssignOp = new APlusAssignOp.init_aplusassignop(
-                                               tpluseqnode2
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var ptypenode3 = nodearraylist4
+                                       assert ptypenode3 isa nullable AType
+                                       var pexprnode1: nullable AIsaExpr = new AIsaExpr.init_aisaexpr(
+                                               pexprnode2,
+                                               ptypenode3
                                        )
                                        )
-                                       node_list = passignopnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction411
+private class ReduceAction543
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tminuseqnode2 = nodearraylist1
-                                       assert tminuseqnode2 isa nullable TMinuseq
-                                       var passignopnode1: nullable AMinusAssignOp = new AMinusAssignOp.init_aminusassignop(
-                                               tminuseqnode2
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var pexprnode3 = nodearraylist4
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode1: nullable APlusExpr = new APlusExpr.init_aplusexpr(
+                                               pexprnode2,
+                                               pexprnode3
                                        )
                                        )
-                                       node_list = passignopnode1
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction412
+private class ReduceAction544
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwdonode2 = nodearraylist1
-                                       assert tkwdonode2 isa nullable TKwdo
-                                       var pexprnode3 = nodearraylist2
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var pexprnode3 = nodearraylist4
                                        assert pexprnode3 isa nullable AExpr
                                        assert pexprnode3 isa nullable AExpr
-                                       var plabelnode4 = nodearraylist3
-                                       assert plabelnode4 isa nullable ALabel
-                                       var pexprnode1: nullable ADoExpr = new ADoExpr.init_adoexpr(
-                                               tkwdonode2,
-                                               pexprnode3,
-                                               plabelnode4
+                                       var pexprnode1: nullable AMinusExpr = new AMinusExpr.init_aminusexpr(
+                                               pexprnode2,
+                                               pexprnode3
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction413
+private class ReduceAction546
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwdonode2 = nodearraylist1
-                                       assert tkwdonode2 isa nullable TKwdo
-                                       var pexprnode3 = nodearraylist2
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var pexprnode3 = nodearraylist4
                                        assert pexprnode3 isa nullable AExpr
                                        assert pexprnode3 isa nullable AExpr
-                                       var pexprnode1: nullable ADoExpr = new ADoExpr.init_adoexpr(
-                                               tkwdonode2,
-                                               pexprnode3,
-                                               null
+                                       var pexprnode1: nullable AStarExpr = new AStarExpr.init_astarexpr(
+                                               pexprnode2,
+                                               pexprnode3
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction414
+private class ReduceAction547
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwifnode2 = nodearraylist1
-                                       assert tkwifnode2 isa nullable TKwif
-                                       var pexprnode3 = nodearraylist3
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var pexprnode3 = nodearraylist4
                                        assert pexprnode3 isa nullable AExpr
                                        assert pexprnode3 isa nullable AExpr
-                                       var pexprnode4 = nodearraylist6
-                                       assert pexprnode4 isa nullable AExpr
-                                       var pexprnode5 = nodearraylist8
-                                       assert pexprnode5 isa nullable AExpr
-                                       var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
-                                               tkwifnode2,
-                                               pexprnode3,
-                                               pexprnode4,
-                                               pexprnode5
+                                       var pexprnode1: nullable ASlashExpr = new ASlashExpr.init_aslashexpr(
+                                               pexprnode2,
+                                               pexprnode3
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction415
+private class ReduceAction548
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwifnode2 = nodearraylist1
-                                       assert tkwifnode2 isa nullable TKwif
-                                       var pexprnode3 = nodearraylist3
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var pexprnode3 = nodearraylist4
                                        assert pexprnode3 isa nullable AExpr
                                        assert pexprnode3 isa nullable AExpr
-                                       var pexprnode4 = nodearraylist6
-                                       assert pexprnode4 isa nullable AExpr
-                                       var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
-                                               tkwifnode2,
-                                               pexprnode3,
-                                               pexprnode4,
-                                               null
+                                       var pexprnode1: nullable APercentExpr = new APercentExpr.init_apercentexpr(
+                                               pexprnode2,
+                                               pexprnode3
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction416
+private class ReduceAction550
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwifnode2 = nodearraylist1
-                                       assert tkwifnode2 isa nullable TKwif
+                                       var tminusnode2 = nodearraylist1
+                                       assert tminusnode2 isa nullable TMinus
                                        var pexprnode3 = nodearraylist3
                                        assert pexprnode3 isa nullable AExpr
                                        var pexprnode3 = nodearraylist3
                                        assert pexprnode3 isa nullable AExpr
-                                       var pexprnode4 = nodearraylist7
-                                       assert pexprnode4 isa nullable AExpr
-                                       var pexprnode5 = nodearraylist8
-                                       assert pexprnode5 isa nullable AExpr
-                                       var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
-                                               tkwifnode2,
-                                               pexprnode3,
-                                               pexprnode4,
-                                               pexprnode5
+                                       var pexprnode1: nullable AUminusExpr = new AUminusExpr.init_auminusexpr(
+                                               tminusnode2,
+                                               pexprnode3
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction417
+private class ReduceAction551
        super ReduceAction
        redef fun action(p: Parser)
        super ReduceAction
        redef fun action(p: Parser)
-       do
-                                       var node_list: nullable Object = null
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
+       do
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwifnode2 = nodearraylist1
-                                       assert tkwifnode2 isa nullable TKwif
+                                       var tkwoncenode2 = nodearraylist1
+                                       assert tkwoncenode2 isa nullable TKwonce
                                        var pexprnode3 = nodearraylist3
                                        assert pexprnode3 isa nullable AExpr
                                        var pexprnode3 = nodearraylist3
                                        assert pexprnode3 isa nullable AExpr
-                                       var pexprnode5 = nodearraylist6
-                                       assert pexprnode5 isa nullable AExpr
-                                       var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
-                                               tkwifnode2,
-                                               pexprnode3,
-                                               null,
-                                               pexprnode5
+                                       var pexprnode1: nullable AOnceExpr = new AOnceExpr.init_aonceexpr(
+                                               tkwoncenode2,
+                                               pexprnode3
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction418
+private class ReduceAction553
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwifnode2 = nodearraylist1
-                                       assert tkwifnode2 isa nullable TKwif
-                                       var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa nullable AExpr
-                                       var pexprnode5 = nodearraylist7
-                                       assert pexprnode5 isa nullable AExpr
-                                       var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
-                                               tkwifnode2,
-                                               pexprnode3,
+                                       var tkwnewnode2 = nodearraylist1
+                                       assert tkwnewnode2 isa nullable TKwnew
+                                       var ptypenode3 = nodearraylist3
+                                       assert ptypenode3 isa nullable AType
+                                       var pexprsnode5 = nodearraylist4
+                                       assert pexprsnode5 isa nullable AExprs
+                                       var pexprnode1: nullable ANewExpr = new ANewExpr.init_anewexpr(
+                                               tkwnewnode2,
+                                               ptypenode3,
                                                null,
                                                null,
-                                               pexprnode5
+                                               pexprsnode5
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction421
+private class ReduceAction554
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwloopnode2 = nodearraylist1
-                                       assert tkwloopnode2 isa nullable TKwloop
+                                       var tkwissetnode2 = nodearraylist1
+                                       assert tkwissetnode2 isa nullable TKwisset
                                        var pexprnode3 = nodearraylist2
                                        assert pexprnode3 isa nullable AExpr
                                        var pexprnode3 = nodearraylist2
                                        assert pexprnode3 isa nullable AExpr
-                                       var plabelnode4 = nodearraylist3
-                                       assert plabelnode4 isa nullable ALabel
-                                       var pexprnode1: nullable ALoopExpr = new ALoopExpr.init_aloopexpr(
-                                               tkwloopnode2,
+                                       var tattridnode4 = nodearraylist5
+                                       assert tattridnode4 isa nullable TAttrid
+                                       var pexprnode1: nullable AIssetAttrExpr = new AIssetAttrExpr.init_aissetattrexpr(
+                                               tkwissetnode2,
                                                pexprnode3,
                                                pexprnode3,
-                                               plabelnode4
+                                               tattridnode4
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction422
+private class ReduceAction555
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwloopnode2 = nodearraylist1
-                                       assert tkwloopnode2 isa nullable TKwloop
-                                       var pexprnode3 = nodearraylist2
-                                       assert pexprnode3 isa nullable AExpr
-                                       var pexprnode1: nullable ALoopExpr = new ALoopExpr.init_aloopexpr(
-                                               tkwloopnode2,
+                                       var tkwissetnode2 = nodearraylist1
+                                       assert tkwissetnode2 isa nullable TKwisset
+                                       var pexprnode3: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var tattridnode4 = nodearraylist2
+                                       assert tattridnode4 isa nullable TAttrid
+                                       var pexprnode1: nullable AIssetAttrExpr = new AIssetAttrExpr.init_aissetattrexpr(
+                                               tkwissetnode2,
                                                pexprnode3,
                                                pexprnode3,
-                                               null
+                                               tattridnode4
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction423
+private class ReduceAction556
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwwhilenode2 = nodearraylist1
-                                       assert tkwwhilenode2 isa nullable TKwwhile
-                                       var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa nullable AExpr
-                                       var tkwdonode4 = nodearraylist5
-                                       assert tkwdonode4 isa nullable TKwdo
-                                       var pexprnode5 = nodearraylist6
-                                       assert pexprnode5 isa nullable AExpr
-                                       var plabelnode6 = nodearraylist7
-                                       assert plabelnode6 isa nullable ALabel
-                                       var pexprnode1: nullable AWhileExpr = new AWhileExpr.init_awhileexpr(
-                                               tkwwhilenode2,
-                                               pexprnode3,
-                                               tkwdonode4,
-                                               pexprnode5,
-                                               plabelnode6
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var tattridnode3 = nodearraylist4
+                                       assert tattridnode3 isa nullable TAttrid
+                                       var pexprnode1: nullable AAttrExpr = new AAttrExpr.init_aattrexpr(
+                                               pexprnode2,
+                                               tattridnode3
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction424
+private class ReduceAction557
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwwhilenode2 = nodearraylist1
-                                       assert tkwwhilenode2 isa nullable TKwwhile
-                                       var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa nullable AExpr
-                                       var tkwdonode4 = nodearraylist5
-                                       assert tkwdonode4 isa nullable TKwdo
-                                       var pexprnode5 = nodearraylist6
-                                       assert pexprnode5 isa nullable AExpr
-                                       var pexprnode1: nullable AWhileExpr = new AWhileExpr.init_awhileexpr(
-                                               tkwwhilenode2,
-                                               pexprnode3,
-                                               tkwdonode4,
-                                               pexprnode5,
-                                               null
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
+                                       var tattridnode3 = nodearraylist1
+                                       assert tattridnode3 isa nullable TAttrid
+                                       var pexprnode1: nullable AAttrExpr = new AAttrExpr.init_aattrexpr(
+                                               pexprnode2,
+                                               tattridnode3
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction425
+private class ReduceAction564
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist13 = p.pop
-                                       var nodearraylist12 = p.pop
-                                       var nodearraylist11 = p.pop
-                                       var nodearraylist10 = p.pop
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
-                                       var tkwfornode2 = nodearraylist1
-                                       assert tkwfornode2 isa nullable TKwfor
-                                       var listnode3 = nodearraylist4
-                                       assert listnode3 isa Array[Object]
-                                       listnode4 = concat(listnode4, listnode3)
-                                       var pexprnode5 = nodearraylist9
-                                       assert pexprnode5 isa nullable AExpr
-                                       var tkwdonode6 = nodearraylist11
-                                       assert tkwdonode6 isa nullable TKwdo
-                                       var pexprnode7 = nodearraylist12
-                                       assert pexprnode7 isa nullable AExpr
-                                       var plabelnode8 = nodearraylist13
-                                       assert plabelnode8 isa nullable ALabel
-                                       var pexprnode1: nullable AForExpr = new AForExpr.init_aforexpr(
-                                               tkwfornode2,
-                                               listnode4,
-                                               pexprnode5,
-                                               tkwdonode6,
-                                               pexprnode7,
-                                               plabelnode8
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var pexprsnode3 = nodearraylist2
+                                       assert pexprsnode3 isa nullable AExprs
+                                       var pexprnode1: nullable ABraExpr = new ABraExpr.init_abraexpr(
+                                               pexprnode2,
+                                               pexprsnode3,
+                                               listnode4
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction426
+private class ReduceAction565
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist11 = p.pop
-                                       var nodearraylist10 = p.pop
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -14532,40 +19769,29 @@ private class ReduceAction426
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode4 = new Array[Object]
-                                       var tkwfornode2 = nodearraylist1
-                                       assert tkwfornode2 isa nullable TKwfor
-                                       var listnode3 = nodearraylist3
-                                       assert listnode3 isa Array[Object]
-                                       listnode4 = concat(listnode4, listnode3)
-                                       var pexprnode5 = nodearraylist7
-                                       assert pexprnode5 isa nullable AExpr
-                                       var tkwdonode6 = nodearraylist9
-                                       assert tkwdonode6 isa nullable TKwdo
-                                       var pexprnode7 = nodearraylist10
-                                       assert pexprnode7 isa nullable AExpr
-                                       var plabelnode8 = nodearraylist11
-                                       assert plabelnode8 isa nullable ALabel
-                                       var pexprnode1: nullable AForExpr = new AForExpr.init_aforexpr(
-                                               tkwfornode2,
-                                               listnode4,
-                                               pexprnode5,
-                                               tkwdonode6,
-                                               pexprnode7,
-                                               plabelnode8
+                                       var tkwnewnode2 = nodearraylist1
+                                       assert tkwnewnode2 isa nullable TKwnew
+                                       var ptypenode3 = nodearraylist3
+                                       assert ptypenode3 isa nullable AType
+                                       var tidnode4 = nodearraylist6
+                                       assert tidnode4 isa nullable TId
+                                       var pexprsnode5 = nodearraylist7
+                                       assert pexprsnode5 isa nullable AExprs
+                                       var pexprnode1: nullable ANewExpr = new ANewExpr.init_anewexpr(
+                                               tkwnewnode2,
+                                               ptypenode3,
+                                               tidnode4,
+                                               pexprsnode5
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction427
+private class ReduceAction566
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist12 = p.pop
-                                       var nodearraylist11 = p.pop
-                                       var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -14575,31 +19801,26 @@ private class ReduceAction427
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode4 = new Array[Object]
-                                       var tkwfornode2 = nodearraylist1
-                                       assert tkwfornode2 isa nullable TKwfor
-                                       var listnode3 = nodearraylist4
-                                       assert listnode3 isa Array[Object]
-                                       listnode4 = concat(listnode4, listnode3)
-                                       var pexprnode5 = nodearraylist9
-                                       assert pexprnode5 isa nullable AExpr
-                                       var tkwdonode6 = nodearraylist11
-                                       assert tkwdonode6 isa nullable TKwdo
-                                       var pexprnode7 = nodearraylist12
-                                       assert pexprnode7 isa nullable AExpr
-                                       var pexprnode1: nullable AForExpr = new AForExpr.init_aforexpr(
-                                               tkwfornode2,
-                                               listnode4,
-                                               pexprnode5,
-                                               tkwdonode6,
-                                               pexprnode7,
+                                       var tobranode2 = nodearraylist1
+                                       assert tobranode2 isa nullable TObra
+                                       var pexprnode3 = nodearraylist3
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode4 = nodearraylist7
+                                       assert pexprnode4 isa nullable AExpr
+                                       var tcbranode5 = nodearraylist9
+                                       assert tcbranode5 isa nullable TCbra
+                                       var pexprnode1: nullable ACrangeExpr = new ACrangeExpr.init_acrangeexpr(
+                                               tobranode2,
+                                               pexprnode3,
+                                               pexprnode4,
+                                               tcbranode5,
                                                null
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                                null
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction428
+private class ReduceAction567
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -14614,479 +19835,436 @@ private class ReduceAction428
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode4 = new Array[Object]
-                                       var tkwfornode2 = nodearraylist1
-                                       assert tkwfornode2 isa nullable TKwfor
-                                       var listnode3 = nodearraylist3
-                                       assert listnode3 isa Array[Object]
-                                       listnode4 = concat(listnode4, listnode3)
-                                       var pexprnode5 = nodearraylist7
-                                       assert pexprnode5 isa nullable AExpr
-                                       var tkwdonode6 = nodearraylist9
-                                       assert tkwdonode6 isa nullable TKwdo
-                                       var pexprnode7 = nodearraylist10
-                                       assert pexprnode7 isa nullable AExpr
-                                       var pexprnode1: nullable AForExpr = new AForExpr.init_aforexpr(
-                                               tkwfornode2,
-                                               listnode4,
-                                               pexprnode5,
-                                               tkwdonode6,
-                                               pexprnode7,
-                                               null
+                                       var tobranode2 = nodearraylist1
+                                       assert tobranode2 isa nullable TObra
+                                       var pexprnode3 = nodearraylist3
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode4 = nodearraylist7
+                                       assert pexprnode4 isa nullable AExpr
+                                       var tcbranode5 = nodearraylist9
+                                       assert tcbranode5 isa nullable TCbra
+                                       var pannotationsnode6 = nodearraylist10
+                                       assert pannotationsnode6 isa nullable AAnnotations
+                                       var pexprnode1: nullable ACrangeExpr = new ACrangeExpr.init_acrangeexpr(
+                                               tobranode2,
+                                               pexprnode3,
+                                               pexprnode4,
+                                               tcbranode5,
+                                               pannotationsnode6
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction429
+private class ReduceAction568
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwassertnode2 = nodearraylist1
-                                       assert tkwassertnode2 isa nullable TKwassert
-                                       var pexprnode4 = nodearraylist2
+                                       var tobranode2 = nodearraylist1
+                                       assert tobranode2 isa nullable TObra
+                                       var pexprnode3 = nodearraylist3
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode4 = nodearraylist7
                                        assert pexprnode4 isa nullable AExpr
                                        assert pexprnode4 isa nullable AExpr
-                                       var pexprnode5 = nodearraylist4
-                                       assert pexprnode5 isa nullable AExpr
-                                       var pexprnode1: nullable AAssertExpr = new AAssertExpr.init_aassertexpr(
-                                               tkwassertnode2,
-                                               null,
+                                       var tobranode5 = nodearraylist9
+                                       assert tobranode5 isa nullable TObra
+                                       var pexprnode1: nullable AOrangeExpr = new AOrangeExpr.init_aorangeexpr(
+                                               tobranode2,
+                                               pexprnode3,
                                                pexprnode4,
                                                pexprnode4,
-                                               pexprnode5
+                                               tobranode5,
+                                               null
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction430
+private class ReduceAction569
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwassertnode2 = nodearraylist1
-                                       assert tkwassertnode2 isa nullable TKwassert
-                                       var tidnode3 = nodearraylist2
-                                       assert tidnode3 isa nullable TId
-                                       var pexprnode4 = nodearraylist3
+                                       var tobranode2 = nodearraylist1
+                                       assert tobranode2 isa nullable TObra
+                                       var pexprnode3 = nodearraylist3
+                                       assert pexprnode3 isa nullable AExpr
+                                       var pexprnode4 = nodearraylist7
                                        assert pexprnode4 isa nullable AExpr
                                        assert pexprnode4 isa nullable AExpr
-                                       var pexprnode5 = nodearraylist5
-                                       assert pexprnode5 isa nullable AExpr
-                                       var pexprnode1: nullable AAssertExpr = new AAssertExpr.init_aassertexpr(
-                                               tkwassertnode2,
-                                               tidnode3,
+                                       var tobranode5 = nodearraylist9
+                                       assert tobranode5 isa nullable TObra
+                                       var pannotationsnode6 = nodearraylist10
+                                       assert pannotationsnode6 isa nullable AAnnotations
+                                       var pexprnode1: nullable AOrangeExpr = new AOrangeExpr.init_aorangeexpr(
+                                               tobranode2,
+                                               pexprnode3,
                                                pexprnode4,
                                                pexprnode4,
-                                               pexprnode5
+                                               tobranode5,
+                                               pannotationsnode6
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction431
+private class ReduceAction570
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwassertnode2 = nodearraylist1
-                                       assert tkwassertnode2 isa nullable TKwassert
-                                       var pexprnode4 = nodearraylist2
-                                       assert pexprnode4 isa nullable AExpr
-                                       var pexprnode1: nullable AAssertExpr = new AAssertExpr.init_aassertexpr(
-                                               tkwassertnode2,
-                                               null,
-                                               pexprnode4,
+                                       var pexprsnode2 = nodearraylist1
+                                       assert pexprsnode2 isa nullable AExprs
+                                       var pexprnode1: nullable AArrayExpr = new AArrayExpr.init_aarrayexpr(
+                                               pexprsnode2,
                                                null
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                                null
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction432
+private class ReduceAction571
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwassertnode2 = nodearraylist1
-                                       assert tkwassertnode2 isa nullable TKwassert
-                                       var tidnode3 = nodearraylist2
-                                       assert tidnode3 isa nullable TId
-                                       var pexprnode4 = nodearraylist3
-                                       assert pexprnode4 isa nullable AExpr
-                                       var pexprnode1: nullable AAssertExpr = new AAssertExpr.init_aassertexpr(
-                                               tkwassertnode2,
-                                               tidnode3,
-                                               pexprnode4,
+                                       var pexprsnode2 = nodearraylist1
+                                       assert pexprsnode2 isa nullable AExprs
+                                       var pannotationsnode3 = nodearraylist2
+                                       assert pannotationsnode3 isa nullable AAnnotations
+                                       var pexprnode1: nullable AArrayExpr = new AArrayExpr.init_aarrayexpr(
+                                               pexprsnode2,
+                                               pannotationsnode3
+                                       )
+                                       node_list = pexprnode1
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction572
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist1 = p.pop
+                                       var tkwselfnode2 = nodearraylist1
+                                       assert tkwselfnode2 isa nullable TKwself
+                                       var pexprnode1: nullable ASelfExpr = new ASelfExpr.init_aselfexpr(
+                                               tkwselfnode2,
                                                null
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                                null
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction433
+private class ReduceAction573
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tidnode1 = nodearraylist1
-                                       node_list = tidnode1
+                                       var tkwselfnode2 = nodearraylist1
+                                       assert tkwselfnode2 isa nullable TKwself
+                                       var pannotationsnode3 = nodearraylist2
+                                       assert pannotationsnode3 isa nullable AAnnotations
+                                       var pexprnode1: nullable ASelfExpr = new ASelfExpr.init_aselfexpr(
+                                               tkwselfnode2,
+                                               pannotationsnode3
+                                       )
+                                       node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction437
+private class ReduceAction574
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode5 = new Array[Object]
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var pexprsnode3 = nodearraylist2
-                                       assert pexprsnode3 isa nullable AExprs
-                                       var listnode4 = nodearraylist3
-                                       assert listnode4 isa Array[Object]
-                                       listnode5 = concat(listnode5, listnode4)
-                                       var pexprnode1: nullable ABraExpr = new ABraExpr.init_abraexpr(
-                                               pexprnode2,
-                                               pexprsnode3,
-                                               listnode5
+                                       var tkwtruenode2 = nodearraylist1
+                                       assert tkwtruenode2 isa nullable TKwtrue
+                                       var pexprnode1: nullable ATrueExpr = new ATrueExpr.init_atrueexpr(
+                                               tkwtruenode2,
+                                               null
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction439
+private class ReduceAction575
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist11 = p.pop
-                                       var nodearraylist10 = p.pop
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwifnode2 = nodearraylist1
-                                       assert tkwifnode2 isa nullable TKwif
-                                       var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa nullable AExpr
-                                       var tkwthennode4 = nodearraylist5
-                                       assert tkwthennode4 isa nullable TKwthen
-                                       var pexprnode5 = nodearraylist7
-                                       assert pexprnode5 isa nullable AExpr
-                                       var tkwelsenode6 = nodearraylist9
-                                       assert tkwelsenode6 isa nullable TKwelse
-                                       var pexprnode7 = nodearraylist11
-                                       assert pexprnode7 isa nullable AExpr
-                                       var pexprnode1: nullable AIfexprExpr = new AIfexprExpr.init_aifexprexpr(
-                                               tkwifnode2,
-                                               pexprnode3,
-                                               tkwthennode4,
-                                               pexprnode5,
-                                               tkwelsenode6,
-                                               pexprnode7
+                                       var tkwtruenode2 = nodearraylist1
+                                       assert tkwtruenode2 isa nullable TKwtrue
+                                       var pannotationsnode3 = nodearraylist2
+                                       assert pannotationsnode3 isa nullable AAnnotations
+                                       var pexprnode1: nullable ATrueExpr = new ATrueExpr.init_atrueexpr(
+                                               tkwtruenode2,
+                                               pannotationsnode3
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction441
+private class ReduceAction576
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable AExpr
-                                       var pexprnode1: nullable AOrExpr = new AOrExpr.init_aorexpr(
-                                               pexprnode2,
-                                               pexprnode3
+                                       var tkwfalsenode2 = nodearraylist1
+                                       assert tkwfalsenode2 isa nullable TKwfalse
+                                       var pexprnode1: nullable AFalseExpr = new AFalseExpr.init_afalseexpr(
+                                               tkwfalsenode2,
+                                               null
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction442
+private class ReduceAction577
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable AExpr
-                                       var pexprnode1: nullable AAndExpr = new AAndExpr.init_aandexpr(
-                                               pexprnode2,
-                                               pexprnode3
+                                       var tkwfalsenode2 = nodearraylist1
+                                       assert tkwfalsenode2 isa nullable TKwfalse
+                                       var pannotationsnode3 = nodearraylist2
+                                       assert pannotationsnode3 isa nullable AAnnotations
+                                       var pexprnode1: nullable AFalseExpr = new AFalseExpr.init_afalseexpr(
+                                               tkwfalsenode2,
+                                               pannotationsnode3
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction443
+private class ReduceAction578
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var pexprnode3 = nodearraylist5
-                                       assert pexprnode3 isa nullable AExpr
-                                       var pexprnode1: nullable AOrElseExpr = new AOrElseExpr.init_aorelseexpr(
-                                               pexprnode2,
-                                               pexprnode3
+                                       var tkwnullnode2 = nodearraylist1
+                                       assert tkwnullnode2 isa nullable TKwnull
+                                       var pexprnode1: nullable ANullExpr = new ANullExpr.init_anullexpr(
+                                               tkwnullnode2,
+                                               null
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction445
+private class ReduceAction579
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwnotnode2 = nodearraylist1
-                                       assert tkwnotnode2 isa nullable TKwnot
-                                       var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa nullable AExpr
-                                       var pexprnode1: nullable ANotExpr = new ANotExpr.init_anotexpr(
-                                               tkwnotnode2,
-                                               pexprnode3
+                                       var tkwnullnode2 = nodearraylist1
+                                       assert tkwnullnode2 isa nullable TKwnull
+                                       var pannotationsnode3 = nodearraylist2
+                                       assert pannotationsnode3 isa nullable AAnnotations
+                                       var pexprnode1: nullable ANullExpr = new ANullExpr.init_anullexpr(
+                                               tkwnullnode2,
+                                               pannotationsnode3
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction447
+private class ReduceAction580
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable AExpr
-                                       var pexprnode1: nullable AEqExpr = new AEqExpr.init_aeqexpr(
-                                               pexprnode2,
-                                               pexprnode3
+                                       var tnumbernode2 = nodearraylist1
+                                       assert tnumbernode2 isa nullable TNumber
+                                       var pexprnode1: nullable AIntExpr = new AIntExpr.init_aintexpr(
+                                               tnumbernode2,
+                                               null
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction448
+private class ReduceAction581
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable AExpr
-                                       var pexprnode1: nullable AEeExpr = new AEeExpr.init_aeeexpr(
-                                               pexprnode2,
-                                               pexprnode3
+                                       var tnumbernode2 = nodearraylist1
+                                       assert tnumbernode2 isa nullable TNumber
+                                       var pannotationsnode3 = nodearraylist2
+                                       assert pannotationsnode3 isa nullable AAnnotations
+                                       var pexprnode1: nullable AIntExpr = new AIntExpr.init_aintexpr(
+                                               tnumbernode2,
+                                               pannotationsnode3
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction449
+private class ReduceAction582
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable AExpr
-                                       var pexprnode1: nullable ANeExpr = new ANeExpr.init_aneexpr(
-                                               pexprnode2,
-                                               pexprnode3
+                                       var tfloatnode2 = nodearraylist1
+                                       assert tfloatnode2 isa nullable TFloat
+                                       var pexprnode1: nullable AFloatExpr = new AFloatExpr.init_afloatexpr(
+                                               tfloatnode2,
+                                               null
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction450
+private class ReduceAction583
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable AExpr
-                                       var pexprnode1: nullable ALtExpr = new ALtExpr.init_altexpr(
-                                               pexprnode2,
-                                               pexprnode3
+                                       var tfloatnode2 = nodearraylist1
+                                       assert tfloatnode2 isa nullable TFloat
+                                       var pannotationsnode3 = nodearraylist2
+                                       assert pannotationsnode3 isa nullable AAnnotations
+                                       var pexprnode1: nullable AFloatExpr = new AFloatExpr.init_afloatexpr(
+                                               tfloatnode2,
+                                               pannotationsnode3
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction451
+private class ReduceAction584
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable AExpr
-                                       var pexprnode1: nullable ALeExpr = new ALeExpr.init_aleexpr(
-                                               pexprnode2,
-                                               pexprnode3
+                                       var tcharnode2 = nodearraylist1
+                                       assert tcharnode2 isa nullable TChar
+                                       var pexprnode1: nullable ACharExpr = new ACharExpr.init_acharexpr(
+                                               tcharnode2,
+                                               null
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction452
+private class ReduceAction585
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable AExpr
-                                       var pexprnode1: nullable ALlExpr = new ALlExpr.init_allexpr(
-                                               pexprnode2,
-                                               pexprnode3
+                                       var tcharnode2 = nodearraylist1
+                                       assert tcharnode2 isa nullable TChar
+                                       var pannotationsnode3 = nodearraylist2
+                                       assert pannotationsnode3 isa nullable AAnnotations
+                                       var pexprnode1: nullable ACharExpr = new ACharExpr.init_acharexpr(
+                                               tcharnode2,
+                                               pannotationsnode3
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction453
+private class ReduceAction586
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable AExpr
-                                       var pexprnode1: nullable AGtExpr = new AGtExpr.init_agtexpr(
-                                               pexprnode2,
-                                               pexprnode3
+                                       var tstringnode2 = nodearraylist1
+                                       assert tstringnode2 isa nullable TString
+                                       var pexprnode1: nullable AStringExpr = new AStringExpr.init_astringexpr(
+                                               tstringnode2,
+                                               null
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction454
+private class ReduceAction587
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable AExpr
-                                       var pexprnode1: nullable AGeExpr = new AGeExpr.init_ageexpr(
-                                               pexprnode2,
-                                               pexprnode3
+                                       var tstringnode2 = nodearraylist1
+                                       assert tstringnode2 isa nullable TString
+                                       var pannotationsnode3 = nodearraylist2
+                                       assert pannotationsnode3 isa nullable AAnnotations
+                                       var pexprnode1: nullable AStringExpr = new AStringExpr.init_astringexpr(
+                                               tstringnode2,
+                                               pannotationsnode3
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction455
+private class ReduceAction589
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var pexprnode3 = nodearraylist4
+                                       var toparnode2 = nodearraylist1
+                                       assert toparnode2 isa nullable TOpar
+                                       var pexprnode3 = nodearraylist2
                                        assert pexprnode3 isa nullable AExpr
                                        assert pexprnode3 isa nullable AExpr
-                                       var pexprnode1: nullable AGgExpr = new AGgExpr.init_aggexpr(
-                                               pexprnode2,
-                                               pexprnode3
+                                       var tcparnode4 = nodearraylist3
+                                       assert tcparnode4 isa nullable TCpar
+                                       var pexprnode1: nullable AParExpr = new AParExpr.init_aparexpr(
+                                               toparnode2,
+                                               pexprnode3,
+                                               tcparnode4,
+                                               null
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction456
+private class ReduceAction590
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -15095,124 +20273,181 @@ private class ReduceAction456
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var pexprnode3 = nodearraylist4
+                                       var toparnode2 = nodearraylist1
+                                       assert toparnode2 isa nullable TOpar
+                                       var pexprnode3 = nodearraylist2
                                        assert pexprnode3 isa nullable AExpr
                                        assert pexprnode3 isa nullable AExpr
-                                       var pexprnode1: nullable AStarshipExpr = new AStarshipExpr.init_astarshipexpr(
-                                               pexprnode2,
-                                               pexprnode3
+                                       var tcparnode4 = nodearraylist3
+                                       assert tcparnode4 isa nullable TCpar
+                                       var pannotationsnode5 = nodearraylist4
+                                       assert pannotationsnode5 isa nullable AAnnotations
+                                       var pexprnode1: nullable AParExpr = new AParExpr.init_aparexpr(
+                                               toparnode2,
+                                               pexprnode3,
+                                               tcparnode4,
+                                               pannotationsnode5
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction457
+private class ReduceAction591
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
                                        assert pexprnode2 isa nullable AExpr
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
                                        assert pexprnode2 isa nullable AExpr
-                                       var ptypenode3 = nodearraylist4
-                                       assert ptypenode3 isa nullable AType
-                                       var pexprnode1: nullable AIsaExpr = new AIsaExpr.init_aisaexpr(
+                                       var tkwasnode3 = nodearraylist4
+                                       assert tkwasnode3 isa nullable TKwas
+                                       var toparnode4 = nodearraylist6
+                                       assert toparnode4 isa nullable TOpar
+                                       var ptypenode5 = nodearraylist8
+                                       assert ptypenode5 isa nullable AType
+                                       var tcparnode6 = nodearraylist10
+                                       assert tcparnode6 isa nullable TCpar
+                                       var pexprnode1: nullable AAsCastExpr = new AAsCastExpr.init_aascastexpr(
                                                pexprnode2,
                                                pexprnode2,
-                                               ptypenode3
+                                               tkwasnode3,
+                                               toparnode4,
+                                               ptypenode5,
+                                               tcparnode6
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction459
+private class ReduceAction592
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist12 = p.pop
+                                       var nodearraylist11 = p.pop
+                                       var nodearraylist10 = p.pop
+                                       var nodearraylist9 = p.pop
+                                       var nodearraylist8 = p.pop
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
                                        assert pexprnode2 isa nullable AExpr
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
                                        assert pexprnode2 isa nullable AExpr
-                                       var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable AExpr
-                                       var pexprnode1: nullable APlusExpr = new APlusExpr.init_aplusexpr(
+                                       var tkwasnode3 = nodearraylist4
+                                       assert tkwasnode3 isa nullable TKwas
+                                       var toparnode4 = nodearraylist6
+                                       assert toparnode4 isa nullable TOpar
+                                       var tkwnotnode5 = nodearraylist8
+                                       assert tkwnotnode5 isa nullable TKwnot
+                                       var tkwnullnode6 = nodearraylist10
+                                       assert tkwnullnode6 isa nullable TKwnull
+                                       var tcparnode7 = nodearraylist12
+                                       assert tcparnode7 isa nullable TCpar
+                                       var pexprnode1: nullable AAsNotnullExpr = new AAsNotnullExpr.init_aasnotnullexpr(
                                                pexprnode2,
                                                pexprnode2,
-                                               pexprnode3
+                                               tkwasnode3,
+                                               toparnode4,
+                                               tkwnotnode5,
+                                               tkwnullnode6,
+                                               tcparnode7
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction460
+private class ReduceAction593
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var pexprnode3 = nodearraylist4
+                                       var listnode4 = new Array[Object]
+                                       var listnode2 = nodearraylist1
+                                       assert listnode2 isa Array[Object]
+                                       var pexprnode3 = nodearraylist2
                                        assert pexprnode3 isa nullable AExpr
                                        assert pexprnode3 isa nullable AExpr
-                                       var pexprnode1: nullable AMinusExpr = new AMinusExpr.init_aminusexpr(
-                                               pexprnode2,
-                                               pexprnode3
+                                       listnode4 = concat(listnode4, listnode2)
+                                       if pexprnode3 != null then
+                                               listnode4.add(pexprnode3)
+                                       end
+                                       var pexprnode1: nullable ASuperstringExpr = new ASuperstringExpr.init_asuperstringexpr(
+                                               listnode4,
+                                               null
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction462
+private class ReduceAction594
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable AExpr
-                                       var pexprnode1: nullable AStarExpr = new AStarExpr.init_astarexpr(
-                                               pexprnode2,
-                                               pexprnode3
+                                       var listnode5 = new Array[Object]
+                                       var listnode2 = nodearraylist1
+                                       assert listnode2 isa Array[Object]
+                                       var listnode3 = nodearraylist2
+                                       assert listnode3 isa Array[Object]
+                                       var pexprnode4 = nodearraylist3
+                                       assert pexprnode4 isa nullable AExpr
+                                       listnode5 = concat(listnode5, listnode2)
+                                       listnode5 = concat(listnode5, listnode3)
+                                       if pexprnode4 != null then
+                                               listnode5.add(pexprnode4)
+                                       end
+                                       var pexprnode1: nullable ASuperstringExpr = new ASuperstringExpr.init_asuperstringexpr(
+                                               listnode5,
+                                               null
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction463
+private class ReduceAction595
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var pexprnode3 = nodearraylist4
+                                       var listnode4 = new Array[Object]
+                                       var listnode2 = nodearraylist1
+                                       assert listnode2 isa Array[Object]
+                                       var pexprnode3 = nodearraylist2
                                        assert pexprnode3 isa nullable AExpr
                                        assert pexprnode3 isa nullable AExpr
-                                       var pexprnode1: nullable ASlashExpr = new ASlashExpr.init_aslashexpr(
-                                               pexprnode2,
-                                               pexprnode3
+                                       listnode4 = concat(listnode4, listnode2)
+                                       if pexprnode3 != null then
+                                               listnode4.add(pexprnode3)
+                                       end
+                                       var pannotationsnode5 = nodearraylist3
+                                       assert pannotationsnode5 isa nullable AAnnotations
+                                       var pexprnode1: nullable ASuperstringExpr = new ASuperstringExpr.init_asuperstringexpr(
+                                               listnode4,
+                                               pannotationsnode5
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction464
+private class ReduceAction596
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -15221,130 +20456,121 @@ private class ReduceAction464
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa nullable AExpr
-                                       var pexprnode1: nullable APercentExpr = new APercentExpr.init_apercentexpr(
-                                               pexprnode2,
-                                               pexprnode3
+                                       var listnode5 = new Array[Object]
+                                       var listnode2 = nodearraylist1
+                                       assert listnode2 isa Array[Object]
+                                       var listnode3 = nodearraylist2
+                                       assert listnode3 isa Array[Object]
+                                       var pexprnode4 = nodearraylist3
+                                       assert pexprnode4 isa nullable AExpr
+                                       listnode5 = concat(listnode5, listnode2)
+                                       listnode5 = concat(listnode5, listnode3)
+                                       if pexprnode4 != null then
+                                               listnode5.add(pexprnode4)
+                                       end
+                                       var pannotationsnode6 = nodearraylist4
+                                       assert pannotationsnode6 isa nullable AAnnotations
+                                       var pexprnode1: nullable ASuperstringExpr = new ASuperstringExpr.init_asuperstringexpr(
+                                               listnode5,
+                                               pannotationsnode6
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction466
+private class ReduceAction597
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tminusnode2 = nodearraylist1
-                                       assert tminusnode2 isa nullable TMinus
-                                       var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa nullable AExpr
-                                       var pexprnode1: nullable AUminusExpr = new AUminusExpr.init_auminusexpr(
-                                               tminusnode2,
-                                               pexprnode3
-                                       )
-                                       node_list = pexprnode1
+                                       var listnode3 = new Array[Object]
+                                       var pexprnode1 = nodearraylist1
+                                       var pexprnode2 = nodearraylist3
+                                       if pexprnode1 != null then
+                                               listnode3.add(pexprnode1)
+                                       end
+                                       if pexprnode2 != null then
+                                               listnode3.add(pexprnode2)
+                                       end
+                                       node_list = listnode3
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction467
+private class ReduceAction598
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwoncenode2 = nodearraylist1
-                                       assert tkwoncenode2 isa nullable TKwonce
-                                       var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa nullable AExpr
-                                       var pexprnode1: nullable AOnceExpr = new AOnceExpr.init_aonceexpr(
-                                               tkwoncenode2,
-                                               pexprnode3
+                                       var tstartstringnode2 = nodearraylist1
+                                       assert tstartstringnode2 isa nullable TStartString
+                                       var pexprnode1: nullable AStartStringExpr = new AStartStringExpr.init_astartstringexpr(
+                                               tstartstringnode2
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction469
+private class ReduceAction600
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwnewnode2 = nodearraylist1
-                                       assert tkwnewnode2 isa nullable TKwnew
-                                       var ptypenode3 = nodearraylist3
-                                       assert ptypenode3 isa nullable AType
-                                       var pexprsnode5 = nodearraylist4
-                                       assert pexprsnode5 isa nullable AExprs
-                                       var pexprnode1: nullable ANewExpr = new ANewExpr.init_anewexpr(
-                                               tkwnewnode2,
-                                               ptypenode3,
-                                               null,
-                                               pexprsnode5
+                                       var tmidstringnode2 = nodearraylist1
+                                       assert tmidstringnode2 isa nullable TMidString
+                                       var pexprnode1: nullable AMidStringExpr = new AMidStringExpr.init_amidstringexpr(
+                                               tmidstringnode2
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction470
+private class ReduceAction601
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwissetnode2 = nodearraylist1
-                                       assert tkwissetnode2 isa nullable TKwisset
-                                       var pexprnode3 = nodearraylist2
-                                       assert pexprnode3 isa nullable AExpr
-                                       var tattridnode4 = nodearraylist5
-                                       assert tattridnode4 isa nullable TAttrid
-                                       var pexprnode1: nullable AIssetAttrExpr = new AIssetAttrExpr.init_aissetattrexpr(
-                                               tkwissetnode2,
-                                               pexprnode3,
-                                               tattridnode4
+                                       var tendstringnode2 = nodearraylist1
+                                       assert tendstringnode2 isa nullable TEndString
+                                       var pexprnode1: nullable AEndStringExpr = new AEndStringExpr.init_aendstringexpr(
+                                               tendstringnode2
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction471
+private class ReduceAction602
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwissetnode2 = nodearraylist1
-                                       assert tkwissetnode2 isa nullable TKwisset
-                                       var pexprnode3: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
-                                       var tattridnode4 = nodearraylist2
-                                       assert tattridnode4 isa nullable TAttrid
-                                       var pexprnode1: nullable AIssetAttrExpr = new AIssetAttrExpr.init_aissetattrexpr(
-                                               tkwissetnode2,
-                                               pexprnode3,
-                                               tattridnode4
+                                       var listnode5 = new Array[Object]
+                                       var tatnode2 = nodearraylist1
+                                       assert tatnode2 isa nullable TAt
+                                       var pannotationnode4 = nodearraylist2
+                                       assert pannotationnode4 isa nullable AAnnotation
+                                       if pannotationnode4 != null then
+                                               listnode5.add(pannotationnode4)
+                                       end
+                                       var pannotationsnode1: nullable AAnnotations = new AAnnotations.init_aannotations(
+                                               tatnode2,
+                                               null,
+                                               listnode5,
+                                               null
                                        )
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationsnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction472
+private class ReduceAction603
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -15353,36 +20579,47 @@ private class ReduceAction472
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var tattridnode3 = nodearraylist4
-                                       assert tattridnode3 isa nullable TAttrid
-                                       var pexprnode1: nullable AAttrExpr = new AAttrExpr.init_aattrexpr(
-                                               pexprnode2,
-                                               tattridnode3
+                                       var listnode5 = new Array[Object]
+                                       var tatnode2 = nodearraylist1
+                                       assert tatnode2 isa nullable TAt
+                                       var toparnode3 = nodearraylist2
+                                       assert toparnode3 isa nullable TOpar
+                                       var listnode4 = nodearraylist3
+                                       assert listnode4 isa Array[Object]
+                                       listnode5 = concat(listnode5, listnode4)
+                                       var tcparnode6 = nodearraylist4
+                                       assert tcparnode6 isa nullable TCpar
+                                       var pannotationsnode1: nullable AAnnotations = new AAnnotations.init_aannotations(
+                                               tatnode2,
+                                               toparnode3,
+                                               listnode5,
+                                               tcparnode6
                                        )
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationsnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction473
+private class ReduceAction604
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr
-                                       var tattridnode3 = nodearraylist1
-                                       assert tattridnode3 isa nullable TAttrid
-                                       var pexprnode1: nullable AAttrExpr = new AAttrExpr.init_aattrexpr(
-                                               pexprnode2,
-                                               tattridnode3
+                                       var listnode4 = new Array[Object]
+                                       var patidnode2 = nodearraylist1
+                                       assert patidnode2 isa nullable AAtid
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               patidnode2,
+                                               null,
+                                               listnode4,
+                                               null,
+                                               null
                                        )
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction480
+private class ReduceAction605
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -15390,466 +20627,444 @@ private class ReduceAction480
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var pexprsnode3 = nodearraylist2
-                                       assert pexprsnode3 isa nullable AExprs
-                                       var pexprnode1: nullable ABraExpr = new ABraExpr.init_abraexpr(
-                                               pexprnode2,
-                                               pexprsnode3,
-                                               listnode4
+                                       var patidnode2 = nodearraylist1
+                                       assert patidnode2 isa nullable AAtid
+                                       var pannotationsnode6 = nodearraylist2
+                                       assert pannotationsnode6 isa nullable AAnnotations
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               patidnode2,
+                                               null,
+                                               listnode4,
+                                               null,
+                                               pannotationsnode6
                                        )
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction481
+private class ReduceAction606
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwnewnode2 = nodearraylist1
-                                       assert tkwnewnode2 isa nullable TKwnew
-                                       var ptypenode3 = nodearraylist3
-                                       assert ptypenode3 isa nullable AType
-                                       var tidnode4 = nodearraylist6
-                                       assert tidnode4 isa nullable TId
-                                       var pexprsnode5 = nodearraylist7
-                                       assert pexprsnode5 isa nullable AExprs
-                                       var pexprnode1: nullable ANewExpr = new ANewExpr.init_anewexpr(
-                                               tkwnewnode2,
-                                               ptypenode3,
-                                               tidnode4,
-                                               pexprsnode5
+                                       var listnode5 = new Array[Object]
+                                       var patidnode2 = nodearraylist1
+                                       assert patidnode2 isa nullable AAtid
+                                       var toparnode3 = nodearraylist2
+                                       assert toparnode3 isa nullable TOpar
+                                       var listnode4 = nodearraylist3
+                                       assert listnode4 isa Array[Object]
+                                       listnode5 = concat(listnode5, listnode4)
+                                       var tcparnode6 = nodearraylist4
+                                       assert tcparnode6 isa nullable TCpar
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               patidnode2,
+                                               toparnode3,
+                                               listnode5,
+                                               tcparnode6,
+                                               null
                                        )
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction482
+private class ReduceAction607
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tobranode2 = nodearraylist1
-                                       assert tobranode2 isa nullable TObra
-                                       var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa nullable AExpr
-                                       var pexprnode4 = nodearraylist7
-                                       assert pexprnode4 isa nullable AExpr
-                                       var tcbranode5 = nodearraylist9
-                                       assert tcbranode5 isa nullable TCbra
-                                       var pexprnode1: nullable ACrangeExpr = new ACrangeExpr.init_acrangeexpr(
-                                               tobranode2,
-                                               pexprnode3,
-                                               pexprnode4,
-                                               tcbranode5
+                                       var listnode5 = new Array[Object]
+                                       var patidnode2 = nodearraylist1
+                                       assert patidnode2 isa nullable AAtid
+                                       var toparnode3 = nodearraylist2
+                                       assert toparnode3 isa nullable TOpar
+                                       var listnode4 = nodearraylist3
+                                       assert listnode4 isa Array[Object]
+                                       listnode5 = concat(listnode5, listnode4)
+                                       var tcparnode6 = nodearraylist4
+                                       assert tcparnode6 isa nullable TCpar
+                                       var pannotationsnode7 = nodearraylist5
+                                       assert pannotationsnode7 isa nullable AAnnotations
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               patidnode2,
+                                               toparnode3,
+                                               listnode5,
+                                               tcparnode6,
+                                               pannotationsnode7
                                        )
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction483
+private class ReduceAction608
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tobranode2 = nodearraylist1
-                                       assert tobranode2 isa nullable TObra
-                                       var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa nullable AExpr
-                                       var pexprnode4 = nodearraylist7
-                                       assert pexprnode4 isa nullable AExpr
-                                       var tobranode5 = nodearraylist9
-                                       assert tobranode5 isa nullable TObra
-                                       var pexprnode1: nullable AOrangeExpr = new AOrangeExpr.init_aorangeexpr(
-                                               tobranode2,
-                                               pexprnode3,
-                                               pexprnode4,
-                                               tobranode5
+                                       var listnode5 = new Array[Object]
+                                       var listnode4 = nodearraylist1
+                                       assert listnode4 isa Array[Object]
+                                       listnode5 = concat(listnode5, listnode4)
+                                       var pannotationsnode1: nullable AAnnotations = new AAnnotations.init_aannotations(
+                                               null,
+                                               null,
+                                               listnode5,
+                                               null
                                        )
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationsnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction484
+private class ReduceAction609
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
-                                       var pexprsnode2 = nodearraylist1
-                                       assert pexprsnode2 isa nullable AExprs
-                                       var pexprnode1: nullable AArrayExpr = new AArrayExpr.init_aarrayexpr(
-                                               pexprsnode2
-                                       )
-                                       node_list = pexprnode1
+                                       var listnode2 = new Array[Object]
+                                       var pannotationnode1 = nodearraylist1
+                                       if pannotationnode1 != null then
+                                               listnode2.add(pannotationnode1)
+                                       end
+                                       node_list = listnode2
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction485
+private class ReduceAction610
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwselfnode2 = nodearraylist1
-                                       assert tkwselfnode2 isa nullable TKwself
-                                       var pexprnode1: nullable ASelfExpr = new ASelfExpr.init_aselfexpr(
-                                               tkwselfnode2
-                                       )
-                                       node_list = pexprnode1
+                                       var listnode3 = new Array[Object]
+                                       var pannotationnode1 = nodearraylist1
+                                       var listnode2 = nodearraylist2
+                                       assert listnode2 isa Array[Object]
+                                       if pannotationnode1 != null then
+                                               listnode3.add(pannotationnode1)
+                                       end
+                                       listnode3 = concat(listnode3, listnode2)
+                                       node_list = listnode3
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction486
+private class ReduceAction612
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwtruenode2 = nodearraylist1
-                                       assert tkwtruenode2 isa nullable TKwtrue
-                                       var pexprnode1: nullable ATrueExpr = new ATrueExpr.init_atrueexpr(
-                                               tkwtruenode2
+                                       var listnode4 = new Array[Object]
+                                       var patidnode2 = nodearraylist2
+                                       assert patidnode2 isa nullable AAtid
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               patidnode2,
+                                               null,
+                                               listnode4,
+                                               null,
+                                               null
                                        )
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction487
+private class ReduceAction613
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwfalsenode2 = nodearraylist1
-                                       assert tkwfalsenode2 isa nullable TKwfalse
-                                       var pexprnode1: nullable AFalseExpr = new AFalseExpr.init_afalseexpr(
-                                               tkwfalsenode2
+                                       var listnode4 = new Array[Object]
+                                       var patidnode2 = nodearraylist2
+                                       assert patidnode2 isa nullable AAtid
+                                       var pannotationsnode6 = nodearraylist3
+                                       assert pannotationsnode6 isa nullable AAnnotations
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               patidnode2,
+                                               null,
+                                               listnode4,
+                                               null,
+                                               pannotationsnode6
                                        )
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction488
+private class ReduceAction614
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tkwnullnode2 = nodearraylist1
-                                       assert tkwnullnode2 isa nullable TKwnull
-                                       var pexprnode1: nullable ANullExpr = new ANullExpr.init_anullexpr(
-                                               tkwnullnode2
+                                       var listnode5 = new Array[Object]
+                                       var patidnode2 = nodearraylist2
+                                       assert patidnode2 isa nullable AAtid
+                                       var toparnode3 = nodearraylist3
+                                       assert toparnode3 isa nullable TOpar
+                                       var listnode4 = nodearraylist4
+                                       assert listnode4 isa Array[Object]
+                                       listnode5 = concat(listnode5, listnode4)
+                                       var tcparnode6 = nodearraylist5
+                                       assert tcparnode6 isa nullable TCpar
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               patidnode2,
+                                               toparnode3,
+                                               listnode5,
+                                               tcparnode6,
+                                               null
                                        )
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction489
+private class ReduceAction615
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist7 = p.pop
+                                       var nodearraylist6 = p.pop
+                                       var nodearraylist5 = p.pop
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tnumbernode2 = nodearraylist1
-                                       assert tnumbernode2 isa nullable TNumber
-                                       var pexprnode1: nullable AIntExpr = new AIntExpr.init_aintexpr(
-                                               tnumbernode2
+                                       var listnode5 = new Array[Object]
+                                       var patidnode2 = nodearraylist2
+                                       assert patidnode2 isa nullable AAtid
+                                       var toparnode3 = nodearraylist3
+                                       assert toparnode3 isa nullable TOpar
+                                       var listnode4 = nodearraylist4
+                                       assert listnode4 isa Array[Object]
+                                       listnode5 = concat(listnode5, listnode4)
+                                       var tcparnode6 = nodearraylist5
+                                       assert tcparnode6 isa nullable TCpar
+                                       var pannotationsnode7 = nodearraylist6
+                                       assert pannotationsnode7 isa nullable AAnnotations
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               patidnode2,
+                                               toparnode3,
+                                               listnode5,
+                                               tcparnode6,
+                                               pannotationsnode7
                                        )
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction490
+private class ReduceAction616
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist4 = p.pop
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tfloatnode2 = nodearraylist1
-                                       assert tfloatnode2 isa nullable TFloat
-                                       var pexprnode1: nullable AFloatExpr = new AFloatExpr.init_afloatexpr(
-                                               tfloatnode2
+                                       var listnode5 = new Array[Object]
+                                       var patidnode2 = nodearraylist2
+                                       assert patidnode2 isa nullable AAtid
+                                       var listnode4 = nodearraylist3
+                                       assert listnode4 isa Array[Object]
+                                       listnode5 = concat(listnode5, listnode4)
+                                       var pannotationnode1: nullable AAnnotation = new AAnnotation.init_aannotation(
+                                               patidnode2,
+                                               null,
+                                               listnode5,
+                                               null,
+                                               null
                                        )
                                        )
-                                       node_list = pexprnode1
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction491
+private class ReduceAction617
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
+                                       var nodearraylist3 = p.pop
+                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var tcharnode2 = nodearraylist1
-                                       assert tcharnode2 isa nullable TChar
-                                       var pexprnode1: nullable ACharExpr = new ACharExpr.init_acharexpr(
-                                               tcharnode2
-                                       )
-                                       node_list = pexprnode1
+                                       var pannotationnode1 = nodearraylist3
+                                       node_list = pannotationnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction492
+private class ReduceAction618
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
-                                       var tstringnode2 = nodearraylist1
-                                       assert tstringnode2 isa nullable TString
-                                       var pexprnode1: nullable AStringExpr = new AStringExpr.init_astringexpr(
-                                               tstringnode2
-                                       )
-                                       node_list = pexprnode1
+                                       var listnode2 = new Array[Object]
+                                       var patargnode1 = nodearraylist1
+                                       if patargnode1 != null then
+                                               listnode2.add(patargnode1)
+                                       end
+                                       node_list = listnode2
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction494
+private class ReduceAction619
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var toparnode2 = nodearraylist1
-                                       assert toparnode2 isa nullable TOpar
-                                       var pexprnode3 = nodearraylist2
-                                       assert pexprnode3 isa nullable AExpr
-                                       var tcparnode4 = nodearraylist3
-                                       assert tcparnode4 isa nullable TCpar
-                                       var pexprnode1: nullable AParExpr = new AParExpr.init_aparexpr(
-                                               toparnode2,
-                                               pexprnode3,
-                                               tcparnode4
-                                       )
-                                       node_list = pexprnode1
+                                       var listnode3 = new Array[Object]
+                                       var patargnode1 = nodearraylist1
+                                       var listnode2 = nodearraylist2
+                                       assert listnode2 isa Array[Object]
+                                       if patargnode1 != null then
+                                               listnode3.add(patargnode1)
+                                       end
+                                       listnode3 = concat(listnode3, listnode2)
+                                       node_list = listnode3
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction495
+private class ReduceAction620
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist10 = p.pop
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var tkwasnode3 = nodearraylist4
-                                       assert tkwasnode3 isa nullable TKwas
-                                       var toparnode4 = nodearraylist6
-                                       assert toparnode4 isa nullable TOpar
-                                       var ptypenode5 = nodearraylist8
-                                       assert ptypenode5 isa nullable AType
-                                       var tcparnode6 = nodearraylist10
-                                       assert tcparnode6 isa nullable TCpar
-                                       var pexprnode1: nullable AAsCastExpr = new AAsCastExpr.init_aascastexpr(
-                                               pexprnode2,
-                                               tkwasnode3,
-                                               toparnode4,
-                                               ptypenode5,
-                                               tcparnode6
-                                       )
-                                       node_list = pexprnode1
+                                       var patargnode1 = nodearraylist3
+                                       node_list = patargnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction496
+private class ReduceAction621
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist12 = p.pop
-                                       var nodearraylist11 = p.pop
-                                       var nodearraylist10 = p.pop
-                                       var nodearraylist9 = p.pop
-                                       var nodearraylist8 = p.pop
-                                       var nodearraylist7 = p.pop
-                                       var nodearraylist6 = p.pop
-                                       var nodearraylist5 = p.pop
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa nullable AExpr
-                                       var tkwasnode3 = nodearraylist4
-                                       assert tkwasnode3 isa nullable TKwas
-                                       var toparnode4 = nodearraylist6
-                                       assert toparnode4 isa nullable TOpar
-                                       var tkwnotnode5 = nodearraylist8
-                                       assert tkwnotnode5 isa nullable TKwnot
-                                       var tkwnullnode6 = nodearraylist10
-                                       assert tkwnullnode6 isa nullable TKwnull
-                                       var tcparnode7 = nodearraylist12
-                                       assert tcparnode7 isa nullable TCpar
-                                       var pexprnode1: nullable AAsNotnullExpr = new AAsNotnullExpr.init_aasnotnullexpr(
-                                               pexprnode2,
-                                               tkwasnode3,
-                                               toparnode4,
-                                               tkwnotnode5,
-                                               tkwnullnode6,
-                                               tcparnode7
+                                       var ptypenode2 = nodearraylist1
+                                       assert ptypenode2 isa nullable AType
+                                       var patargnode1: nullable ATypeAtArg = new ATypeAtArg.init_atypeatarg(
+                                               ptypenode2
                                        )
                                        )
-                                       node_list = pexprnode1
+                                       node_list = patargnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction497
+private class ReduceAction622
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode4 = new Array[Object]
-                                       var listnode2 = nodearraylist1
-                                       assert listnode2 isa Array[Object]
-                                       var pexprnode3 = nodearraylist2
-                                       assert pexprnode3 isa nullable AExpr
-                                       listnode4 = concat(listnode4, listnode2)
-                                       if pexprnode3 != null then
-                                               listnode4.add(pexprnode3)
-                                       end
-                                       var pexprnode1: nullable ASuperstringExpr = new ASuperstringExpr.init_asuperstringexpr(
-                                               listnode4
+                                       var pexprnode2 = nodearraylist1
+                                       assert pexprnode2 isa nullable AExpr
+                                       var patargnode1: nullable AExprAtArg = new AExprAtArg.init_aexpratarg(
+                                               pexprnode2
                                        )
                                        )
-                                       node_list = pexprnode1
+                                       node_list = patargnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction498
+private class ReduceAction624
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode5 = new Array[Object]
-                                       var listnode2 = nodearraylist1
-                                       assert listnode2 isa Array[Object]
-                                       var listnode3 = nodearraylist2
-                                       assert listnode3 isa Array[Object]
-                                       var pexprnode4 = nodearraylist3
-                                       assert pexprnode4 isa nullable AExpr
-                                       listnode5 = concat(listnode5, listnode2)
-                                       listnode5 = concat(listnode5, listnode3)
-                                       if pexprnode4 != null then
-                                               listnode5.add(pexprnode4)
-                                       end
-                                       var pexprnode1: nullable ASuperstringExpr = new ASuperstringExpr.init_asuperstringexpr(
-                                               listnode5
+                                       var pannotationsnode2 = nodearraylist1
+                                       assert pannotationsnode2 isa nullable AAnnotations
+                                       var patargnode1: nullable AAtAtArg = new AAtAtArg.init_aatatarg(
+                                               pannotationsnode2
                                        )
                                        )
-                                       node_list = pexprnode1
+                                       node_list = patargnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction499
+private class ReduceAction625
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
-                                       var nodearraylist4 = p.pop
-                                       var nodearraylist3 = p.pop
-                                       var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var listnode3 = new Array[Object]
-                                       var pexprnode1 = nodearraylist1
-                                       var pexprnode2 = nodearraylist3
-                                       if pexprnode1 != null then
-                                               listnode3.add(pexprnode1)
-                                       end
-                                       if pexprnode2 != null then
-                                               listnode3.add(pexprnode2)
-                                       end
-                                       node_list = listnode3
+                                       var tidnode2 = nodearraylist1
+                                       assert tidnode2 isa nullable TId
+                                       var patidnode1: nullable AIdAtid = new AIdAtid.init_aidatid(
+                                               tidnode2
+                                       )
+                                       node_list = patidnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction500
+private class ReduceAction626
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
-                                       var tstartstringnode2 = nodearraylist1
-                                       assert tstartstringnode2 isa nullable TStartString
-                                       var pexprnode1: nullable AStartStringExpr = new AStartStringExpr.init_astartstringexpr(
-                                               tstartstringnode2
+                                       var tkwreadablenode2 = nodearraylist1
+                                       assert tkwreadablenode2 isa nullable TKwreadable
+                                       var patidnode1: nullable AKwreadableAtid = new AKwreadableAtid.init_akwreadableatid(
+                                               tkwreadablenode2
                                        )
                                        )
-                                       node_list = pexprnode1
+                                       node_list = patidnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction502
+private class ReduceAction627
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
-                                       var tmidstringnode2 = nodearraylist1
-                                       assert tmidstringnode2 isa nullable TMidString
-                                       var pexprnode1: nullable AMidStringExpr = new AMidStringExpr.init_amidstringexpr(
-                                               tmidstringnode2
+                                       var tkwwritablenode2 = nodearraylist1
+                                       assert tkwwritablenode2 isa nullable TKwwritable
+                                       var patidnode1: nullable AKwwritableAtid = new AKwwritableAtid.init_akwwritableatid(
+                                               tkwwritablenode2
                                        )
                                        )
-                                       node_list = pexprnode1
+                                       node_list = patidnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction503
+private class ReduceAction628
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
        super ReduceAction
        redef fun action(p: Parser)
        do
                                        var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
-                                       var tendstringnode2 = nodearraylist1
-                                       assert tendstringnode2 isa nullable TEndString
-                                       var pexprnode1: nullable AEndStringExpr = new AEndStringExpr.init_aendstringexpr(
-                                               tendstringnode2
+                                       var tkwimportnode2 = nodearraylist1
+                                       assert tkwimportnode2 isa nullable TKwimport
+                                       var patidnode1: nullable AKwimportAtid = new AKwimportAtid.init_akwimportatid(
+                                               tkwimportnode2
                                        )
                                        )
-                                       node_list = pexprnode1
+                                       node_list = patidnode1
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction504
+private class ReduceAction629
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -15875,7 +21090,7 @@ private class ReduceAction504
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction505
+private class ReduceAction630
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -15897,7 +21112,7 @@ private class ReduceAction505
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction506
+private class ReduceAction631
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -15910,7 +21125,7 @@ private class ReduceAction506
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction508
+private class ReduceAction633
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -15929,7 +21144,7 @@ private class ReduceAction508
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction511
+private class ReduceAction636
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -15955,7 +21170,7 @@ private class ReduceAction511
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction512
+private class ReduceAction637
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -15971,7 +21186,7 @@ private class ReduceAction512
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction513
+private class ReduceAction638
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -15991,7 +21206,7 @@ private class ReduceAction513
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction514
+private class ReduceAction639
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -16005,7 +21220,7 @@ private class ReduceAction514
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction515
+private class ReduceAction640
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -16020,7 +21235,7 @@ private class ReduceAction515
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction516
+private class ReduceAction641
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -16042,7 +21257,7 @@ private class ReduceAction516
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction517
+private class ReduceAction642
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -16060,7 +21275,7 @@ private class ReduceAction517
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction518
+private class ReduceAction643
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -16082,7 +21297,7 @@ private class ReduceAction518
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction519
+private class ReduceAction644
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -16104,7 +21319,7 @@ private class ReduceAction519
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction520
+private class ReduceAction645
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -16130,7 +21345,7 @@ private class ReduceAction520
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction521
+private class ReduceAction646
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -16147,7 +21362,7 @@ private class ReduceAction521
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction522
+private class ReduceAction647
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -16168,7 +21383,7 @@ private class ReduceAction522
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction523
+private class ReduceAction648
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -16186,7 +21401,7 @@ private class ReduceAction523
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction524
+private class ReduceAction649
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -16199,7 +21414,7 @@ private class ReduceAction524
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction525
+private class ReduceAction650
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -16212,7 +21427,7 @@ private class ReduceAction525
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction526
+private class ReduceAction651
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -16221,7 +21436,7 @@ private class ReduceAction526
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction528
+private class ReduceAction653
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -16238,7 +21453,7 @@ private class ReduceAction528
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction529
+private class ReduceAction654
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -16256,7 +21471,7 @@ private class ReduceAction529
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction531
+private class ReduceAction656
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -16265,7 +21480,7 @@ private class ReduceAction531
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction532
+private class ReduceAction657
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -16276,7 +21491,7 @@ private class ReduceAction532
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction533
+private class ReduceAction658
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -16286,7 +21501,7 @@ private class ReduceAction533
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction534
+private class ReduceAction659
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -16297,7 +21512,7 @@ private class ReduceAction534
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction806
+private class ReduceAction931
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -16320,7 +21535,7 @@ private class ReduceAction806
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction807
+private class ReduceAction932
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -16339,7 +21554,7 @@ private class ReduceAction807
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction808
+private class ReduceAction933
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -16364,7 +21579,7 @@ private class ReduceAction808
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction811
+private class ReduceAction936
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -16387,7 +21602,7 @@ private class ReduceAction811
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction824
+private class ReduceAction957
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -16400,7 +21615,7 @@ private class ReduceAction824
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction825
+private class ReduceAction958
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -16410,7 +21625,7 @@ private class ReduceAction825
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction832
+private class ReduceAction1250
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -16425,7 +21640,7 @@ private class ReduceAction832
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction833
+private class ReduceAction1251
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -16444,7 +21659,7 @@ private class ReduceAction833
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction834
+private class ReduceAction1252
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -16459,7 +21674,7 @@ private class ReduceAction834
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction835
+private class ReduceAction1253
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -16478,7 +21693,7 @@ private class ReduceAction835
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction836
+private class ReduceAction1254
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -16493,7 +21708,7 @@ private class ReduceAction836
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction837
+private class ReduceAction1255
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -16512,7 +21727,7 @@ private class ReduceAction837
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction838
+private class ReduceAction1256
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -16527,7 +21742,7 @@ private class ReduceAction838
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction839
+private class ReduceAction1257
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -16546,7 +21761,7 @@ private class ReduceAction839
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction840
+private class ReduceAction1258
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -16561,7 +21776,7 @@ private class ReduceAction840
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction841
+private class ReduceAction1259
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -16580,7 +21795,7 @@ private class ReduceAction841
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction844
+private class ReduceAction1262
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -16595,7 +21810,7 @@ private class ReduceAction844
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction845
+private class ReduceAction1263
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -16614,7 +21829,7 @@ private class ReduceAction845
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction846
+private class ReduceAction1264
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -16629,7 +21844,7 @@ private class ReduceAction846
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction847
+private class ReduceAction1265
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -16648,7 +21863,7 @@ private class ReduceAction847
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction848
+private class ReduceAction1266
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -16663,7 +21878,7 @@ private class ReduceAction848
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction849
+private class ReduceAction1267
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -16682,7 +21897,7 @@ private class ReduceAction849
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction850
+private class ReduceAction1268
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -16697,7 +21912,7 @@ private class ReduceAction850
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction851
+private class ReduceAction1269
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -16716,7 +21931,7 @@ private class ReduceAction851
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction853
+private class ReduceAction1271
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -16735,7 +21950,7 @@ private class ReduceAction853
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction854
+private class ReduceAction1272
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -16750,7 +21965,7 @@ private class ReduceAction854
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction855
+private class ReduceAction1273
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -16769,7 +21984,7 @@ private class ReduceAction855
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction857
+private class ReduceAction1275
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -16787,7 +22002,45 @@ private class ReduceAction857
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction861
+private class ReduceAction1277
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var listnode3 = new Array[Object]
+                                       var listnode1 = nodearraylist1
+                                       assert listnode1 isa Array[Object]
+                                       var pannotationnode2 = nodearraylist2
+                                       listnode3 = concat(listnode3, listnode1)
+                                       if pannotationnode2 != null then
+                                               listnode3.add(pannotationnode2)
+                                       end
+                                       node_list = listnode3
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction1281
+       super ReduceAction
+       redef fun action(p: Parser)
+       do
+                                       var node_list: nullable Object = null
+                                       var nodearraylist2 = p.pop
+                                       var nodearraylist1 = p.pop
+                                       var listnode3 = new Array[Object]
+                                       var listnode1 = nodearraylist1
+                                       assert listnode1 isa Array[Object]
+                                       var patargnode2 = nodearraylist2
+                                       listnode3 = concat(listnode3, listnode1)
+                                       if patargnode2 != null then
+                                               listnode3.add(patargnode2)
+                                       end
+                                       node_list = listnode3
+                                       p.push(p.go_to(_goto), node_list)
+       end
+end
+private class ReduceAction1285
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -16806,7 +22059,7 @@ private class ReduceAction861
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction862
+private class ReduceAction1286
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -16821,7 +22074,7 @@ private class ReduceAction862
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction863
+private class ReduceAction1287
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -16840,7 +22093,7 @@ private class ReduceAction863
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction864
+private class ReduceAction1288
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
@@ -16855,7 +22108,7 @@ private class ReduceAction864
                                        p.push(p.go_to(_goto), node_list)
        end
 end
                                        p.push(p.go_to(_goto), node_list)
        end
 end
-private class ReduceAction865
+private class ReduceAction1289
        super ReduceAction
        redef fun action(p: Parser)
        do
        super ReduceAction
        redef fun action(p: Parser)
        do
index 9e9e7a2..4c620db 100644 (file)
@@ -260,6 +260,9 @@ end
 class TBang
        super Token
 end
 class TBang
        super Token
 end
+class TAt
+       super Token
+end
 class TClassid
        super Token
 end
 class TClassid
        super Token
 end
@@ -336,6 +339,10 @@ class AInLanguage super Prod end
 class AExternCodeBlock super Prod end
 class AQualified super Prod end
 class ADoc super Prod end
 class AExternCodeBlock super Prod end
 class AQualified super Prod end
 class ADoc super Prod end
+class AAnnotations super Prod end
+class AAnnotation super Prod end
+class AAtArg super Prod end
+class AAtid super Prod end
 
 class AModule
        super AModule
 
 class AModule
        super AModule
@@ -349,12 +356,14 @@ class AModuledecl
     readable var _n_doc: nullable ADoc = null
     readable var _n_kwmodule: TKwmodule
     readable var _n_name: AModuleName
     readable var _n_doc: nullable ADoc = null
     readable var _n_kwmodule: TKwmodule
     readable var _n_name: AModuleName
+    readable var _n_annotations: nullable AAnnotations = null
 end
 class AStdImport
        super AImport
     readable var _n_visibility: AVisibility
     readable var _n_kwimport: TKwimport
     readable var _n_name: AModuleName
 end
 class AStdImport
        super AImport
     readable var _n_visibility: AVisibility
     readable var _n_kwimport: TKwimport
     readable var _n_name: AModuleName
+    readable var _n_annotations: nullable AAnnotations = null
 end
 class ANoImport
        super AImport
 end
 class ANoImport
        super AImport
@@ -385,6 +394,7 @@ class AStdClassdef
     readable var _n_classkind: AClasskind
     readable var _n_id: nullable TClassid = null
     readable var _n_formaldefs: List[AFormaldef] = new List[AFormaldef]
     readable var _n_classkind: AClasskind
     readable var _n_id: nullable TClassid = null
     readable var _n_formaldefs: List[AFormaldef] = new List[AFormaldef]
+    readable var _n_annotations: nullable AAnnotations = null
     readable var _n_extern_code_block: nullable AExternCodeBlock = null
     readable var _n_superclasses: List[ASuperclass] = new List[ASuperclass]
     readable var _n_propdefs: List[APropdef] = new List[APropdef]
     readable var _n_extern_code_block: nullable AExternCodeBlock = null
     readable var _n_superclasses: List[ASuperclass] = new List[ASuperclass]
     readable var _n_propdefs: List[APropdef] = new List[APropdef]
@@ -424,11 +434,13 @@ class AFormaldef
        super AFormaldef
     readable var _n_id: TClassid
     readable var _n_type: nullable AType = null
        super AFormaldef
     readable var _n_id: TClassid
     readable var _n_type: nullable AType = null
+    readable var _n_annotations: nullable AAnnotations = null
 end
 class ASuperclass
        super ASuperclass
     readable var _n_kwsuper: TKwsuper
     readable var _n_type: AType
 end
 class ASuperclass
        super ASuperclass
     readable var _n_kwsuper: TKwsuper
     readable var _n_type: AType
+    readable var _n_annotations: nullable AAnnotations = null
 end
 class AAttrPropdef
        super APropdef
 end
 class AAttrPropdef
        super APropdef
@@ -441,6 +453,7 @@ class AAttrPropdef
     readable var _n_id: nullable TAttrid = null
     readable var _n_id2: nullable TId = null
     readable var _n_type: nullable AType = null
     readable var _n_id: nullable TAttrid = null
     readable var _n_id2: nullable TId = null
     readable var _n_type: nullable AType = null
+    readable var _n_annotations: nullable AAnnotations = null
     readable var _n_expr: nullable AExpr = null
 end
 class AMethPropdef
     readable var _n_expr: nullable AExpr = null
 end
 class AMethPropdef
@@ -459,6 +472,7 @@ class ADeferredMethPropdef
     readable var _n_kwmeth: TKwmeth
     readable var _n_methid: AMethid
     readable var _n_signature: ASignature
     readable var _n_kwmeth: TKwmeth
     readable var _n_methid: AMethid
     readable var _n_signature: ASignature
+    readable var _n_annotations: nullable AAnnotations = null
 end
 class AInternMethPropdef
        super APropdef
 end
 class AInternMethPropdef
        super APropdef
@@ -489,6 +503,7 @@ class AConcreteMethPropdef
     readable var _n_kwmeth: TKwmeth
     readable var _n_methid: AMethid
     readable var _n_signature: ASignature
     readable var _n_kwmeth: TKwmeth
     readable var _n_methid: AMethid
     readable var _n_signature: ASignature
+    readable var _n_annotations: nullable AAnnotations = null
     readable var _n_block: nullable AExpr = null
 end
 class AConcreteInitPropdef
     readable var _n_block: nullable AExpr = null
 end
 class AConcreteInitPropdef
@@ -499,6 +514,7 @@ class AConcreteInitPropdef
     readable var _n_kwinit: TKwinit
     readable var _n_methid: nullable AMethid = null
     readable var _n_signature: ASignature
     readable var _n_kwinit: TKwinit
     readable var _n_methid: nullable AMethid = null
     readable var _n_signature: ASignature
+    readable var _n_annotations: nullable AAnnotations = null
     readable var _n_block: nullable AExpr = null
 end
 class AExternInitPropdef
     readable var _n_block: nullable AExpr = null
 end
 class AExternInitPropdef
@@ -526,6 +542,7 @@ class ATypePropdef
     readable var _n_kwtype: TKwtype
     readable var _n_id: TClassid
     readable var _n_type: AType
     readable var _n_kwtype: TKwtype
     readable var _n_id: TClassid
     readable var _n_type: AType
+    readable var _n_annotations: nullable AAnnotations = null
 end
 class AReadAble
        super AAble
 end
 class AReadAble
        super AAble
@@ -627,6 +644,7 @@ class AParam
     readable var _n_id: TId
     readable var _n_type: nullable AType = null
     readable var _n_dotdotdot: nullable TDotdotdot = null
     readable var _n_id: TId
     readable var _n_type: nullable AType = null
     readable var _n_dotdotdot: nullable TDotdotdot = null
+    readable var _n_annotations: nullable AAnnotations = null
 end
 class AClosureDecl
        super AClosureDecl
 end
 class AClosureDecl
        super AClosureDecl
@@ -641,6 +659,7 @@ class AType
     readable var _n_kwnullable: nullable TKwnullable = null
     readable var _n_id: TClassid
     readable var _n_types: List[AType] = new List[AType]
     readable var _n_kwnullable: nullable TKwnullable = null
     readable var _n_id: TClassid
     readable var _n_types: List[AType] = new List[AType]
+    readable var _n_annotations: nullable AAnnotations = null
 end
 class ALabel
        super ALabel
 end
 class ALabel
        super ALabel
@@ -659,6 +678,7 @@ class AVardeclExpr
     readable var _n_type: nullable AType = null
     readable var _n_assign: nullable TAssign = null
     readable var _n_expr: nullable AExpr = null
     readable var _n_type: nullable AType = null
     readable var _n_assign: nullable TAssign = null
     readable var _n_expr: nullable AExpr = null
+    readable var _n_annotations: nullable AAnnotations = null
 end
 class AReturnExpr
        super AExpr
 end
 class AReturnExpr
        super AExpr
@@ -959,6 +979,7 @@ class ARangeExpr
        super AExpr
     readable var _n_expr: AExpr
     readable var _n_expr2: AExpr
        super AExpr
     readable var _n_expr: AExpr
     readable var _n_expr2: AExpr
+    readable var _n_annotations: nullable AAnnotations = null
 end
 class ACrangeExpr
        super AExpr
 end
 class ACrangeExpr
        super AExpr
@@ -966,6 +987,7 @@ class ACrangeExpr
     readable var _n_expr: AExpr
     readable var _n_expr2: AExpr
     readable var _n_cbra: TCbra
     readable var _n_expr: AExpr
     readable var _n_expr2: AExpr
     readable var _n_cbra: TCbra
+    readable var _n_annotations: nullable AAnnotations = null
 end
 class AOrangeExpr
        super AExpr
 end
 class AOrangeExpr
        super AExpr
@@ -973,14 +995,17 @@ class AOrangeExpr
     readable var _n_expr: AExpr
     readable var _n_expr2: AExpr
     readable var _n_cbra: TObra
     readable var _n_expr: AExpr
     readable var _n_expr2: AExpr
     readable var _n_cbra: TObra
+    readable var _n_annotations: nullable AAnnotations = null
 end
 class AArrayExpr
        super AExpr
     readable var _n_exprs: AExprs
 end
 class AArrayExpr
        super AExpr
     readable var _n_exprs: AExprs
+    readable var _n_annotations: nullable AAnnotations = null
 end
 class ASelfExpr
        super AExpr
     readable var _n_kwself: TKwself
 end
 class ASelfExpr
        super AExpr
     readable var _n_kwself: TKwself
+    readable var _n_annotations: nullable AAnnotations = null
 end
 class AImplicitSelfExpr
        super AExpr
 end
 class AImplicitSelfExpr
        super AExpr
@@ -988,30 +1013,37 @@ end
 class ATrueExpr
        super AExpr
     readable var _n_kwtrue: TKwtrue
 class ATrueExpr
        super AExpr
     readable var _n_kwtrue: TKwtrue
+    readable var _n_annotations: nullable AAnnotations = null
 end
 class AFalseExpr
        super AExpr
     readable var _n_kwfalse: TKwfalse
 end
 class AFalseExpr
        super AExpr
     readable var _n_kwfalse: TKwfalse
+    readable var _n_annotations: nullable AAnnotations = null
 end
 class ANullExpr
        super AExpr
     readable var _n_kwnull: TKwnull
 end
 class ANullExpr
        super AExpr
     readable var _n_kwnull: TKwnull
+    readable var _n_annotations: nullable AAnnotations = null
 end
 class AIntExpr
        super AExpr
     readable var _n_number: TNumber
 end
 class AIntExpr
        super AExpr
     readable var _n_number: TNumber
+    readable var _n_annotations: nullable AAnnotations = null
 end
 class AFloatExpr
        super AExpr
     readable var _n_float: TFloat
 end
 class AFloatExpr
        super AExpr
     readable var _n_float: TFloat
+    readable var _n_annotations: nullable AAnnotations = null
 end
 class ACharExpr
        super AExpr
     readable var _n_char: TChar
 end
 class ACharExpr
        super AExpr
     readable var _n_char: TChar
+    readable var _n_annotations: nullable AAnnotations = null
 end
 class AStringExpr
        super AExpr
     readable var _n_string: TString
 end
 class AStringExpr
        super AExpr
     readable var _n_string: TString
+    readable var _n_annotations: nullable AAnnotations = null
 end
 class AStartStringExpr
        super AExpr
 end
 class AStartStringExpr
        super AExpr
@@ -1028,12 +1060,14 @@ end
 class ASuperstringExpr
        super AExpr
     readable var _n_exprs: List[AExpr] = new List[AExpr]
 class ASuperstringExpr
        super AExpr
     readable var _n_exprs: List[AExpr] = new List[AExpr]
+    readable var _n_annotations: nullable AAnnotations = null
 end
 class AParExpr
        super AExpr
     readable var _n_opar: TOpar
     readable var _n_expr: AExpr
     readable var _n_cpar: TCpar
 end
 class AParExpr
        super AExpr
     readable var _n_opar: TOpar
     readable var _n_expr: AExpr
     readable var _n_cpar: TCpar
+    readable var _n_annotations: nullable AAnnotations = null
 end
 class AAsCastExpr
        super AExpr
 end
 class AAsCastExpr
        super AExpr
@@ -1176,6 +1210,57 @@ class ADoc
        super ADoc
     readable var _n_comment: List[TComment] = new List[TComment]
 end
        super ADoc
     readable var _n_comment: List[TComment] = new List[TComment]
 end
+class AAnnotations
+       super AAnnotations
+    readable var _n_at: nullable TAt = null
+    readable var _n_opar: nullable TOpar = null
+    readable var _n_items: List[AAnnotation] = new List[AAnnotation]
+    readable var _n_cpar: nullable TCpar = null
+end
+class AAnnotation
+       super AAnnotation
+    readable var _n_atid: AAtid
+    readable var _n_opar: nullable TOpar = null
+    readable var _n_args: List[AAtArg] = new List[AAtArg]
+    readable var _n_cpar: nullable TCpar = null
+    readable var _n_annotations: nullable AAnnotations = null
+end
+class ATypeAtArg
+       super AAtArg
+    readable var _n_type: AType
+end
+class AExprAtArg
+       super AAtArg
+    readable var _n_expr: AExpr
+end
+class AAtAtArg
+       super AAtArg
+    readable var _n_annotations: AAnnotations
+end
+class AIdAtid
+       super AAtid
+    readable var _n_id: TId
+end
+class AKwexternAtid
+       super AAtid
+    readable var _n_id: TKwextern
+end
+class AKwinternAtid
+       super AAtid
+    readable var _n_id: TKwintern
+end
+class AKwreadableAtid
+       super AAtid
+    readable var _n_id: TKwreadable
+end
+class AKwwritableAtid
+       super AAtid
+    readable var _n_id: TKwwritable
+end
+class AKwimportAtid
+       super AAtid
+    readable var _n_id: TKwimport
+end
 
 class Start
        super Prod
 
 class Start
        super Prod
index 775c120..12bc9a9 100644 (file)
@@ -52,6 +52,7 @@ end
 abstract class Prod
        super ANode
        fun location=(l: Location) do _location = l
 abstract class Prod
        super ANode
        fun location=(l: Location) do _location = l
+       readable var _n_annotations: nullable AAnnotations = null
 end
 class TEol
        super Token
 end
 class TEol
        super Token
@@ -308,6 +309,9 @@ end
 class TBang
        super TokenOperator
 end
 class TBang
        super TokenOperator
 end
+class TAt
+       super Token
+end
 class TClassid
        super Token
        redef fun to_s
 class TClassid
        super Token
        redef fun to_s
@@ -1208,6 +1212,57 @@ class ADoc
     readable var _n_comment: List[TComment] = new List[TComment]
 end
 
     readable var _n_comment: List[TComment] = new List[TComment]
 end
 
+class AAnnotations
+       super Prod
+       readable var _n_at: nullable TAt = null
+       readable var _n_opar: nullable TOpar = null
+       readable var _n_items: List[AAnnotation] = new List[AAnnotation]
+       readable var _n_cpar: nullable TCpar = null
+end
+class AAnnotation
+       super Prod
+       readable var _n_atid: AAtid
+       readable var _n_opar: nullable TOpar = null
+       readable var _n_args: List[AAtArg] = new List[AAtArg]
+       readable var _n_cpar: nullable TCpar = null
+end
+abstract class AAtArg
+       super Prod
+end
+class ATypeAtArg
+       super AAtArg
+       readable var _n_type: AType
+end
+class AExprAtArg
+       super AAtArg
+       readable var _n_expr: AExpr
+end
+class AAtAtArg
+       super AAtArg
+end
+abstract class AAtid
+       super Prod
+       readable var _n_id: Token
+end
+class AIdAtid
+       super AAtid
+end
+class AKwexternAtid
+       super AAtid
+end
+class AKwinternAtid
+       super AAtid
+end
+class AKwreadableAtid
+       super AAtid
+end
+class AKwwritableAtid
+       super AAtid
+end
+class AKwimportAtid
+       super AAtid
+end
+
 class Start
        super Prod
     readable var _n_base: nullable AModule
 class Start
        super Prod
     readable var _n_base: nullable AModule
index fe86fb2..1abc515 100644 (file)
@@ -171,7 +171,8 @@ redef class AModuledecl
     init init_amoduledecl (
             n_doc: nullable ADoc,
             n_kwmodule: nullable TKwmodule,
     init init_amoduledecl (
             n_doc: nullable ADoc,
             n_kwmodule: nullable TKwmodule,
-            n_name: nullable AModuleName
+            n_name: nullable AModuleName,
+            n_annotations: nullable AAnnotations
     )
     do
         empty_init
     )
     do
         empty_init
@@ -183,6 +184,10 @@ redef class AModuledecl
        n_kwmodule.parent = self
         _n_name = n_name.as(not null)
        n_name.parent = self
        n_kwmodule.parent = self
         _n_name = n_name.as(not null)
        n_name.parent = self
+        _n_annotations = n_annotations
+       if n_annotations != null then
+               n_annotations.parent = self
+       end
     end
 
     redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     end
 
     redef fun replace_child(old_child: ANode, new_child: nullable ANode)
@@ -217,6 +222,16 @@ redef class AModuledecl
             end
             return
        end
             end
             return
        end
+        if _n_annotations == old_child then
+            if new_child != null then
+                new_child.parent = self
+               assert new_child isa AAnnotations
+                _n_annotations = new_child
+           else
+               _n_annotations = null
+            end
+            return
+       end
     end
 
     redef fun visit_all(v: Visitor)
     end
 
     redef fun visit_all(v: Visitor)
@@ -226,6 +241,9 @@ redef class AModuledecl
         end
         v.enter_visit(_n_kwmodule)
         v.enter_visit(_n_name)
         end
         v.enter_visit(_n_kwmodule)
         v.enter_visit(_n_name)
+        if _n_annotations != null then
+            v.enter_visit(_n_annotations.as(not null))
+        end
     end
 end
 redef class AStdImport
     end
 end
 redef class AStdImport
@@ -234,7 +252,8 @@ redef class AStdImport
     init init_astdimport (
             n_visibility: nullable AVisibility,
             n_kwimport: nullable TKwimport,
     init init_astdimport (
             n_visibility: nullable AVisibility,
             n_kwimport: nullable TKwimport,
-            n_name: nullable AModuleName
+            n_name: nullable AModuleName,
+            n_annotations: nullable AAnnotations
     )
     do
         empty_init
     )
     do
         empty_init
@@ -244,6 +263,10 @@ redef class AStdImport
        n_kwimport.parent = self
         _n_name = n_name.as(not null)
        n_name.parent = self
        n_kwimport.parent = self
         _n_name = n_name.as(not null)
        n_name.parent = self
+        _n_annotations = n_annotations
+       if n_annotations != null then
+               n_annotations.parent = self
+       end
     end
 
     redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     end
 
     redef fun replace_child(old_child: ANode, new_child: nullable ANode)
@@ -278,6 +301,16 @@ redef class AStdImport
             end
             return
        end
             end
             return
        end
+        if _n_annotations == old_child then
+            if new_child != null then
+                new_child.parent = self
+               assert new_child isa AAnnotations
+                _n_annotations = new_child
+           else
+               _n_annotations = null
+            end
+            return
+       end
     end
 
     redef fun visit_all(v: Visitor)
     end
 
     redef fun visit_all(v: Visitor)
@@ -285,6 +318,9 @@ redef class AStdImport
         v.enter_visit(_n_visibility)
         v.enter_visit(_n_kwimport)
         v.enter_visit(_n_name)
         v.enter_visit(_n_visibility)
         v.enter_visit(_n_kwimport)
         v.enter_visit(_n_name)
+        if _n_annotations != null then
+            v.enter_visit(_n_annotations.as(not null))
+        end
     end
 end
 redef class ANoImport
     end
 end
 redef class ANoImport
@@ -465,6 +501,7 @@ redef class AStdClassdef
             n_classkind: nullable AClasskind,
             n_id: nullable TClassid,
             n_formaldefs: Collection[Object], # Should be Collection[AFormaldef]
             n_classkind: nullable AClasskind,
             n_id: nullable TClassid,
             n_formaldefs: Collection[Object], # Should be Collection[AFormaldef]
+            n_annotations: nullable AAnnotations,
             n_extern_code_block: nullable AExternCodeBlock,
             n_superclasses: Collection[Object], # Should be Collection[ASuperclass]
             n_propdefs: Collection[Object], # Should be Collection[APropdef]
             n_extern_code_block: nullable AExternCodeBlock,
             n_superclasses: Collection[Object], # Should be Collection[ASuperclass]
             n_propdefs: Collection[Object], # Should be Collection[APropdef]
@@ -493,6 +530,10 @@ redef class AStdClassdef
                _n_formaldefs.add(n)
                n.parent = self
        end
                _n_formaldefs.add(n)
                n.parent = self
        end
+        _n_annotations = n_annotations
+       if n_annotations != null then
+               n_annotations.parent = self
+       end
         _n_extern_code_block = n_extern_code_block
        if n_extern_code_block != null then
                n_extern_code_block.parent = self
         _n_extern_code_block = n_extern_code_block
        if n_extern_code_block != null then
                n_extern_code_block.parent = self
@@ -575,6 +616,16 @@ redef class AStdClassdef
                 return
             end
         end
                 return
             end
         end
+        if _n_annotations == old_child then
+            if new_child != null then
+                new_child.parent = self
+               assert new_child isa AAnnotations
+                _n_annotations = new_child
+           else
+               _n_annotations = null
+            end
+            return
+       end
         if _n_extern_code_block == old_child then
             if new_child != null then
                 new_child.parent = self
         if _n_extern_code_block == old_child then
             if new_child != null then
                 new_child.parent = self
@@ -637,6 +688,9 @@ redef class AStdClassdef
             for n in _n_formaldefs do
                 v.enter_visit(n)
            end
             for n in _n_formaldefs do
                 v.enter_visit(n)
            end
+        if _n_annotations != null then
+            v.enter_visit(_n_annotations.as(not null))
+        end
         if _n_extern_code_block != null then
             v.enter_visit(_n_extern_code_block.as(not null))
         end
         if _n_extern_code_block != null then
             v.enter_visit(_n_extern_code_block.as(not null))
         end
@@ -917,7 +971,8 @@ redef class AFormaldef
 
     init init_aformaldef (
             n_id: nullable TClassid,
 
     init init_aformaldef (
             n_id: nullable TClassid,
-            n_type: nullable AType
+            n_type: nullable AType,
+            n_annotations: nullable AAnnotations
     )
     do
         empty_init
     )
     do
         empty_init
@@ -927,6 +982,10 @@ redef class AFormaldef
        if n_type != null then
                n_type.parent = self
        end
        if n_type != null then
                n_type.parent = self
        end
+        _n_annotations = n_annotations
+       if n_annotations != null then
+               n_annotations.parent = self
+       end
     end
 
     redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     end
 
     redef fun replace_child(old_child: ANode, new_child: nullable ANode)
@@ -951,6 +1010,16 @@ redef class AFormaldef
             end
             return
        end
             end
             return
        end
+        if _n_annotations == old_child then
+            if new_child != null then
+                new_child.parent = self
+               assert new_child isa AAnnotations
+                _n_annotations = new_child
+           else
+               _n_annotations = null
+            end
+            return
+       end
     end
 
     redef fun visit_all(v: Visitor)
     end
 
     redef fun visit_all(v: Visitor)
@@ -959,6 +1028,9 @@ redef class AFormaldef
         if _n_type != null then
             v.enter_visit(_n_type.as(not null))
         end
         if _n_type != null then
             v.enter_visit(_n_type.as(not null))
         end
+        if _n_annotations != null then
+            v.enter_visit(_n_annotations.as(not null))
+        end
     end
 end
 redef class ASuperclass
     end
 end
 redef class ASuperclass
@@ -966,7 +1038,8 @@ redef class ASuperclass
 
     init init_asuperclass (
             n_kwsuper: nullable TKwsuper,
 
     init init_asuperclass (
             n_kwsuper: nullable TKwsuper,
-            n_type: nullable AType
+            n_type: nullable AType,
+            n_annotations: nullable AAnnotations
     )
     do
         empty_init
     )
     do
         empty_init
@@ -974,6 +1047,10 @@ redef class ASuperclass
        n_kwsuper.parent = self
         _n_type = n_type.as(not null)
        n_type.parent = self
        n_kwsuper.parent = self
         _n_type = n_type.as(not null)
        n_type.parent = self
+        _n_annotations = n_annotations
+       if n_annotations != null then
+               n_annotations.parent = self
+       end
     end
 
     redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     end
 
     redef fun replace_child(old_child: ANode, new_child: nullable ANode)
@@ -998,12 +1075,25 @@ redef class ASuperclass
             end
             return
        end
             end
             return
        end
+        if _n_annotations == old_child then
+            if new_child != null then
+                new_child.parent = self
+               assert new_child isa AAnnotations
+                _n_annotations = new_child
+           else
+               _n_annotations = null
+            end
+            return
+       end
     end
 
     redef fun visit_all(v: Visitor)
     do
         v.enter_visit(_n_kwsuper)
         v.enter_visit(_n_type)
     end
 
     redef fun visit_all(v: Visitor)
     do
         v.enter_visit(_n_kwsuper)
         v.enter_visit(_n_type)
+        if _n_annotations != null then
+            v.enter_visit(_n_annotations.as(not null))
+        end
     end
 end
 redef class AAttrPropdef
     end
 end
 redef class AAttrPropdef
@@ -1019,6 +1109,7 @@ redef class AAttrPropdef
             n_id: nullable TAttrid,
             n_id2: nullable TId,
             n_type: nullable AType,
             n_id: nullable TAttrid,
             n_id2: nullable TId,
             n_type: nullable AType,
+            n_annotations: nullable AAnnotations,
             n_expr: nullable AExpr
     )
     do
             n_expr: nullable AExpr
     )
     do
@@ -1055,6 +1146,10 @@ redef class AAttrPropdef
        if n_type != null then
                n_type.parent = self
        end
        if n_type != null then
                n_type.parent = self
        end
+        _n_annotations = n_annotations
+       if n_annotations != null then
+               n_annotations.parent = self
+       end
         _n_expr = n_expr
        if n_expr != null then
                n_expr.parent = self
         _n_expr = n_expr
        if n_expr != null then
                n_expr.parent = self
@@ -1153,6 +1248,16 @@ redef class AAttrPropdef
             end
             return
        end
             end
             return
        end
+        if _n_annotations == old_child then
+            if new_child != null then
+                new_child.parent = self
+               assert new_child isa AAnnotations
+                _n_annotations = new_child
+           else
+               _n_annotations = null
+            end
+            return
+       end
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
@@ -1190,6 +1295,9 @@ redef class AAttrPropdef
         if _n_type != null then
             v.enter_visit(_n_type.as(not null))
         end
         if _n_type != null then
             v.enter_visit(_n_type.as(not null))
         end
+        if _n_annotations != null then
+            v.enter_visit(_n_annotations.as(not null))
+        end
         if _n_expr != null then
             v.enter_visit(_n_expr.as(not null))
         end
         if _n_expr != null then
             v.enter_visit(_n_expr.as(not null))
         end
@@ -1299,7 +1407,8 @@ redef class ADeferredMethPropdef
             n_visibility: nullable AVisibility,
             n_kwmeth: nullable TKwmeth,
             n_methid: nullable AMethid,
             n_visibility: nullable AVisibility,
             n_kwmeth: nullable TKwmeth,
             n_methid: nullable AMethid,
-            n_signature: nullable ASignature
+            n_signature: nullable ASignature,
+            n_annotations: nullable AAnnotations
     )
     do
         empty_init
     )
     do
         empty_init
@@ -1319,6 +1428,10 @@ redef class ADeferredMethPropdef
        n_methid.parent = self
         _n_signature = n_signature.as(not null)
        n_signature.parent = self
        n_methid.parent = self
         _n_signature = n_signature.as(not null)
        n_signature.parent = self
+        _n_annotations = n_annotations
+       if n_annotations != null then
+               n_annotations.parent = self
+       end
     end
 
     redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     end
 
     redef fun replace_child(old_child: ANode, new_child: nullable ANode)
@@ -1383,6 +1496,16 @@ redef class ADeferredMethPropdef
             end
             return
        end
             end
             return
        end
+        if _n_annotations == old_child then
+            if new_child != null then
+                new_child.parent = self
+               assert new_child isa AAnnotations
+                _n_annotations = new_child
+           else
+               _n_annotations = null
+            end
+            return
+       end
     end
 
     redef fun visit_all(v: Visitor)
     end
 
     redef fun visit_all(v: Visitor)
@@ -1397,6 +1520,9 @@ redef class ADeferredMethPropdef
         v.enter_visit(_n_kwmeth)
         v.enter_visit(_n_methid)
         v.enter_visit(_n_signature)
         v.enter_visit(_n_kwmeth)
         v.enter_visit(_n_methid)
         v.enter_visit(_n_signature)
+        if _n_annotations != null then
+            v.enter_visit(_n_annotations.as(not null))
+        end
     end
 end
 redef class AInternMethPropdef
     end
 end
 redef class AInternMethPropdef
@@ -1681,6 +1807,7 @@ redef class AConcreteMethPropdef
             n_kwmeth: nullable TKwmeth,
             n_methid: nullable AMethid,
             n_signature: nullable ASignature,
             n_kwmeth: nullable TKwmeth,
             n_methid: nullable AMethid,
             n_signature: nullable ASignature,
+            n_annotations: nullable AAnnotations,
             n_block: nullable AExpr
     )
     do
             n_block: nullable AExpr
     )
     do
@@ -1701,6 +1828,10 @@ redef class AConcreteMethPropdef
        n_methid.parent = self
         _n_signature = n_signature.as(not null)
        n_signature.parent = self
        n_methid.parent = self
         _n_signature = n_signature.as(not null)
        n_signature.parent = self
+        _n_annotations = n_annotations
+       if n_annotations != null then
+               n_annotations.parent = self
+       end
         _n_block = n_block
        if n_block != null then
                n_block.parent = self
         _n_block = n_block
        if n_block != null then
                n_block.parent = self
@@ -1769,6 +1900,16 @@ redef class AConcreteMethPropdef
             end
             return
        end
             end
             return
        end
+        if _n_annotations == old_child then
+            if new_child != null then
+                new_child.parent = self
+               assert new_child isa AAnnotations
+                _n_annotations = new_child
+           else
+               _n_annotations = null
+            end
+            return
+       end
         if _n_block == old_child then
             if new_child != null then
                 new_child.parent = self
         if _n_block == old_child then
             if new_child != null then
                 new_child.parent = self
@@ -1793,6 +1934,9 @@ redef class AConcreteMethPropdef
         v.enter_visit(_n_kwmeth)
         v.enter_visit(_n_methid)
         v.enter_visit(_n_signature)
         v.enter_visit(_n_kwmeth)
         v.enter_visit(_n_methid)
         v.enter_visit(_n_signature)
+        if _n_annotations != null then
+            v.enter_visit(_n_annotations.as(not null))
+        end
         if _n_block != null then
             v.enter_visit(_n_block.as(not null))
         end
         if _n_block != null then
             v.enter_visit(_n_block.as(not null))
         end
@@ -1808,6 +1952,7 @@ redef class AConcreteInitPropdef
             n_kwinit: nullable TKwinit,
             n_methid: nullable AMethid,
             n_signature: nullable ASignature,
             n_kwinit: nullable TKwinit,
             n_methid: nullable AMethid,
             n_signature: nullable ASignature,
+            n_annotations: nullable AAnnotations,
             n_block: nullable AExpr
     )
     do
             n_block: nullable AExpr
     )
     do
@@ -1830,6 +1975,10 @@ redef class AConcreteInitPropdef
        end
         _n_signature = n_signature.as(not null)
        n_signature.parent = self
        end
         _n_signature = n_signature.as(not null)
        n_signature.parent = self
+        _n_annotations = n_annotations
+       if n_annotations != null then
+               n_annotations.parent = self
+       end
         _n_block = n_block
        if n_block != null then
                n_block.parent = self
         _n_block = n_block
        if n_block != null then
                n_block.parent = self
@@ -1898,6 +2047,16 @@ redef class AConcreteInitPropdef
             end
             return
        end
             end
             return
        end
+        if _n_annotations == old_child then
+            if new_child != null then
+                new_child.parent = self
+               assert new_child isa AAnnotations
+                _n_annotations = new_child
+           else
+               _n_annotations = null
+            end
+            return
+       end
         if _n_block == old_child then
             if new_child != null then
                 new_child.parent = self
         if _n_block == old_child then
             if new_child != null then
                 new_child.parent = self
@@ -1924,6 +2083,9 @@ redef class AConcreteInitPropdef
             v.enter_visit(_n_methid.as(not null))
         end
         v.enter_visit(_n_signature)
             v.enter_visit(_n_methid.as(not null))
         end
         v.enter_visit(_n_signature)
+        if _n_annotations != null then
+            v.enter_visit(_n_annotations.as(not null))
+        end
         if _n_block != null then
             v.enter_visit(_n_block.as(not null))
         end
         if _n_block != null then
             v.enter_visit(_n_block.as(not null))
         end
@@ -2158,7 +2320,8 @@ redef class ATypePropdef
             n_visibility: nullable AVisibility,
             n_kwtype: nullable TKwtype,
             n_id: nullable TClassid,
             n_visibility: nullable AVisibility,
             n_kwtype: nullable TKwtype,
             n_id: nullable TClassid,
-            n_type: nullable AType
+            n_type: nullable AType,
+            n_annotations: nullable AAnnotations
     )
     do
         empty_init
     )
     do
         empty_init
@@ -2178,6 +2341,10 @@ redef class ATypePropdef
        n_id.parent = self
         _n_type = n_type.as(not null)
        n_type.parent = self
        n_id.parent = self
         _n_type = n_type.as(not null)
        n_type.parent = self
+        _n_annotations = n_annotations
+       if n_annotations != null then
+               n_annotations.parent = self
+       end
     end
 
     redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     end
 
     redef fun replace_child(old_child: ANode, new_child: nullable ANode)
@@ -2242,6 +2409,16 @@ redef class ATypePropdef
             end
             return
        end
             end
             return
        end
+        if _n_annotations == old_child then
+            if new_child != null then
+                new_child.parent = self
+               assert new_child isa AAnnotations
+                _n_annotations = new_child
+           else
+               _n_annotations = null
+            end
+            return
+       end
     end
 
     redef fun visit_all(v: Visitor)
     end
 
     redef fun visit_all(v: Visitor)
@@ -2256,6 +2433,9 @@ redef class ATypePropdef
         v.enter_visit(_n_kwtype)
         v.enter_visit(_n_id)
         v.enter_visit(_n_type)
         v.enter_visit(_n_kwtype)
         v.enter_visit(_n_id)
         v.enter_visit(_n_type)
+        if _n_annotations != null then
+            v.enter_visit(_n_annotations.as(not null))
+        end
     end
 end
 redef class AReadAble
     end
 end
 redef class AReadAble
@@ -3107,7 +3287,8 @@ redef class AParam
     init init_aparam (
             n_id: nullable TId,
             n_type: nullable AType,
     init init_aparam (
             n_id: nullable TId,
             n_type: nullable AType,
-            n_dotdotdot: nullable TDotdotdot
+            n_dotdotdot: nullable TDotdotdot,
+            n_annotations: nullable AAnnotations
     )
     do
         empty_init
     )
     do
         empty_init
@@ -3121,6 +3302,10 @@ redef class AParam
        if n_dotdotdot != null then
                n_dotdotdot.parent = self
        end
        if n_dotdotdot != null then
                n_dotdotdot.parent = self
        end
+        _n_annotations = n_annotations
+       if n_annotations != null then
+               n_annotations.parent = self
+       end
     end
 
     redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     end
 
     redef fun replace_child(old_child: ANode, new_child: nullable ANode)
@@ -3155,6 +3340,16 @@ redef class AParam
             end
             return
        end
             end
             return
        end
+        if _n_annotations == old_child then
+            if new_child != null then
+                new_child.parent = self
+               assert new_child isa AAnnotations
+                _n_annotations = new_child
+           else
+               _n_annotations = null
+            end
+            return
+       end
     end
 
     redef fun visit_all(v: Visitor)
     end
 
     redef fun visit_all(v: Visitor)
@@ -3166,6 +3361,9 @@ redef class AParam
         if _n_dotdotdot != null then
             v.enter_visit(_n_dotdotdot.as(not null))
         end
         if _n_dotdotdot != null then
             v.enter_visit(_n_dotdotdot.as(not null))
         end
+        if _n_annotations != null then
+            v.enter_visit(_n_annotations.as(not null))
+        end
     end
 end
 redef class AClosureDecl
     end
 end
 redef class AClosureDecl
@@ -3269,7 +3467,8 @@ redef class AType
     init init_atype (
             n_kwnullable: nullable TKwnullable,
             n_id: nullable TClassid,
     init init_atype (
             n_kwnullable: nullable TKwnullable,
             n_id: nullable TClassid,
-            n_types: Collection[Object] # Should be Collection[AType]
+            n_types: Collection[Object], # Should be Collection[AType]
+            n_annotations: nullable AAnnotations
     )
     do
         empty_init
     )
     do
         empty_init
@@ -3284,6 +3483,10 @@ redef class AType
                _n_types.add(n)
                n.parent = self
        end
                _n_types.add(n)
                n.parent = self
        end
+        _n_annotations = n_annotations
+       if n_annotations != null then
+               n_annotations.parent = self
+       end
     end
 
     redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     end
 
     redef fun replace_child(old_child: ANode, new_child: nullable ANode)
@@ -3320,6 +3523,16 @@ redef class AType
                 return
             end
         end
                 return
             end
         end
+        if _n_annotations == old_child then
+            if new_child != null then
+                new_child.parent = self
+               assert new_child isa AAnnotations
+                _n_annotations = new_child
+           else
+               _n_annotations = null
+            end
+            return
+       end
     end
 
     redef fun visit_all(v: Visitor)
     end
 
     redef fun visit_all(v: Visitor)
@@ -3331,6 +3544,9 @@ redef class AType
             for n in _n_types do
                 v.enter_visit(n)
            end
             for n in _n_types do
                 v.enter_visit(n)
            end
+        if _n_annotations != null then
+            v.enter_visit(_n_annotations.as(not null))
+        end
     end
 end
 redef class ALabel
     end
 end
 redef class ALabel
@@ -3442,7 +3658,8 @@ redef class AVardeclExpr
             n_id: nullable TId,
             n_type: nullable AType,
             n_assign: nullable TAssign,
             n_id: nullable TId,
             n_type: nullable AType,
             n_assign: nullable TAssign,
-            n_expr: nullable AExpr
+            n_expr: nullable AExpr,
+            n_annotations: nullable AAnnotations
     )
     do
         empty_init
     )
     do
         empty_init
@@ -3462,6 +3679,10 @@ redef class AVardeclExpr
        if n_expr != null then
                n_expr.parent = self
        end
        if n_expr != null then
                n_expr.parent = self
        end
+        _n_annotations = n_annotations
+       if n_annotations != null then
+               n_annotations.parent = self
+       end
     end
 
     redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     end
 
     redef fun replace_child(old_child: ANode, new_child: nullable ANode)
@@ -3516,6 +3737,16 @@ redef class AVardeclExpr
             end
             return
        end
             end
             return
        end
+        if _n_annotations == old_child then
+            if new_child != null then
+                new_child.parent = self
+               assert new_child isa AAnnotations
+                _n_annotations = new_child
+           else
+               _n_annotations = null
+            end
+            return
+       end
     end
 
     redef fun visit_all(v: Visitor)
     end
 
     redef fun visit_all(v: Visitor)
@@ -3531,6 +3762,9 @@ redef class AVardeclExpr
         if _n_expr != null then
             v.enter_visit(_n_expr.as(not null))
         end
         if _n_expr != null then
             v.enter_visit(_n_expr.as(not null))
         end
+        if _n_annotations != null then
+            v.enter_visit(_n_annotations.as(not null))
+        end
     end
 end
 redef class AReturnExpr
     end
 end
 redef class AReturnExpr
@@ -6505,7 +6739,8 @@ redef class ARangeExpr
 
     init init_arangeexpr (
             n_expr: nullable AExpr,
 
     init init_arangeexpr (
             n_expr: nullable AExpr,
-            n_expr2: nullable AExpr
+            n_expr2: nullable AExpr,
+            n_annotations: nullable AAnnotations
     )
     do
         empty_init
     )
     do
         empty_init
@@ -6513,6 +6748,10 @@ redef class ARangeExpr
        n_expr.parent = self
         _n_expr2 = n_expr2.as(not null)
        n_expr2.parent = self
        n_expr.parent = self
         _n_expr2 = n_expr2.as(not null)
        n_expr2.parent = self
+        _n_annotations = n_annotations
+       if n_annotations != null then
+               n_annotations.parent = self
+       end
     end
 
     redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     end
 
     redef fun replace_child(old_child: ANode, new_child: nullable ANode)
@@ -6537,12 +6776,25 @@ redef class ARangeExpr
             end
             return
        end
             end
             return
        end
+        if _n_annotations == old_child then
+            if new_child != null then
+                new_child.parent = self
+               assert new_child isa AAnnotations
+                _n_annotations = new_child
+           else
+               _n_annotations = null
+            end
+            return
+       end
     end
 
     redef fun visit_all(v: Visitor)
     do
         v.enter_visit(_n_expr)
         v.enter_visit(_n_expr2)
     end
 
     redef fun visit_all(v: Visitor)
     do
         v.enter_visit(_n_expr)
         v.enter_visit(_n_expr2)
+        if _n_annotations != null then
+            v.enter_visit(_n_annotations.as(not null))
+        end
     end
 end
 redef class ACrangeExpr
     end
 end
 redef class ACrangeExpr
@@ -6552,7 +6804,8 @@ redef class ACrangeExpr
             n_obra: nullable TObra,
             n_expr: nullable AExpr,
             n_expr2: nullable AExpr,
             n_obra: nullable TObra,
             n_expr: nullable AExpr,
             n_expr2: nullable AExpr,
-            n_cbra: nullable TCbra
+            n_cbra: nullable TCbra,
+            n_annotations: nullable AAnnotations
     )
     do
         empty_init
     )
     do
         empty_init
@@ -6564,6 +6817,10 @@ redef class ACrangeExpr
        n_expr2.parent = self
         _n_cbra = n_cbra.as(not null)
        n_cbra.parent = self
        n_expr2.parent = self
         _n_cbra = n_cbra.as(not null)
        n_cbra.parent = self
+        _n_annotations = n_annotations
+       if n_annotations != null then
+               n_annotations.parent = self
+       end
     end
 
     redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     end
 
     redef fun replace_child(old_child: ANode, new_child: nullable ANode)
@@ -6608,6 +6865,16 @@ redef class ACrangeExpr
             end
             return
        end
             end
             return
        end
+        if _n_annotations == old_child then
+            if new_child != null then
+                new_child.parent = self
+               assert new_child isa AAnnotations
+                _n_annotations = new_child
+           else
+               _n_annotations = null
+            end
+            return
+       end
     end
 
     redef fun visit_all(v: Visitor)
     end
 
     redef fun visit_all(v: Visitor)
@@ -6616,6 +6883,9 @@ redef class ACrangeExpr
         v.enter_visit(_n_expr)
         v.enter_visit(_n_expr2)
         v.enter_visit(_n_cbra)
         v.enter_visit(_n_expr)
         v.enter_visit(_n_expr2)
         v.enter_visit(_n_cbra)
+        if _n_annotations != null then
+            v.enter_visit(_n_annotations.as(not null))
+        end
     end
 end
 redef class AOrangeExpr
     end
 end
 redef class AOrangeExpr
@@ -6625,7 +6895,8 @@ redef class AOrangeExpr
             n_obra: nullable TObra,
             n_expr: nullable AExpr,
             n_expr2: nullable AExpr,
             n_obra: nullable TObra,
             n_expr: nullable AExpr,
             n_expr2: nullable AExpr,
-            n_cbra: nullable TObra
+            n_cbra: nullable TObra,
+            n_annotations: nullable AAnnotations
     )
     do
         empty_init
     )
     do
         empty_init
@@ -6637,6 +6908,10 @@ redef class AOrangeExpr
        n_expr2.parent = self
         _n_cbra = n_cbra.as(not null)
        n_cbra.parent = self
        n_expr2.parent = self
         _n_cbra = n_cbra.as(not null)
        n_cbra.parent = self
+        _n_annotations = n_annotations
+       if n_annotations != null then
+               n_annotations.parent = self
+       end
     end
 
     redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     end
 
     redef fun replace_child(old_child: ANode, new_child: nullable ANode)
@@ -6681,6 +6956,16 @@ redef class AOrangeExpr
             end
             return
        end
             end
             return
        end
+        if _n_annotations == old_child then
+            if new_child != null then
+                new_child.parent = self
+               assert new_child isa AAnnotations
+                _n_annotations = new_child
+           else
+               _n_annotations = null
+            end
+            return
+       end
     end
 
     redef fun visit_all(v: Visitor)
     end
 
     redef fun visit_all(v: Visitor)
@@ -6689,18 +6974,26 @@ redef class AOrangeExpr
         v.enter_visit(_n_expr)
         v.enter_visit(_n_expr2)
         v.enter_visit(_n_cbra)
         v.enter_visit(_n_expr)
         v.enter_visit(_n_expr2)
         v.enter_visit(_n_cbra)
+        if _n_annotations != null then
+            v.enter_visit(_n_annotations.as(not null))
+        end
     end
 end
 redef class AArrayExpr
     private init empty_init do end
 
     init init_aarrayexpr (
     end
 end
 redef class AArrayExpr
     private init empty_init do end
 
     init init_aarrayexpr (
-            n_exprs: nullable AExprs
+            n_exprs: nullable AExprs,
+            n_annotations: nullable AAnnotations
     )
     do
         empty_init
         _n_exprs = n_exprs.as(not null)
        n_exprs.parent = self
     )
     do
         empty_init
         _n_exprs = n_exprs.as(not null)
        n_exprs.parent = self
+        _n_annotations = n_annotations
+       if n_annotations != null then
+               n_annotations.parent = self
+       end
     end
 
     redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     end
 
     redef fun replace_child(old_child: ANode, new_child: nullable ANode)
@@ -6715,23 +7008,41 @@ redef class AArrayExpr
             end
             return
        end
             end
             return
        end
+        if _n_annotations == old_child then
+            if new_child != null then
+                new_child.parent = self
+               assert new_child isa AAnnotations
+                _n_annotations = new_child
+           else
+               _n_annotations = null
+            end
+            return
+       end
     end
 
     redef fun visit_all(v: Visitor)
     do
         v.enter_visit(_n_exprs)
     end
 
     redef fun visit_all(v: Visitor)
     do
         v.enter_visit(_n_exprs)
+        if _n_annotations != null then
+            v.enter_visit(_n_annotations.as(not null))
+        end
     end
 end
 redef class ASelfExpr
     private init empty_init do end
 
     init init_aselfexpr (
     end
 end
 redef class ASelfExpr
     private init empty_init do end
 
     init init_aselfexpr (
-            n_kwself: nullable TKwself
+            n_kwself: nullable TKwself,
+            n_annotations: nullable AAnnotations
     )
     do
         empty_init
         _n_kwself = n_kwself.as(not null)
        n_kwself.parent = self
     )
     do
         empty_init
         _n_kwself = n_kwself.as(not null)
        n_kwself.parent = self
+        _n_annotations = n_annotations
+       if n_annotations != null then
+               n_annotations.parent = self
+       end
     end
 
     redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     end
 
     redef fun replace_child(old_child: ANode, new_child: nullable ANode)
@@ -6746,11 +7057,24 @@ redef class ASelfExpr
             end
             return
        end
             end
             return
        end
+        if _n_annotations == old_child then
+            if new_child != null then
+                new_child.parent = self
+               assert new_child isa AAnnotations
+                _n_annotations = new_child
+           else
+               _n_annotations = null
+            end
+            return
+       end
     end
 
     redef fun visit_all(v: Visitor)
     do
         v.enter_visit(_n_kwself)
     end
 
     redef fun visit_all(v: Visitor)
     do
         v.enter_visit(_n_kwself)
+        if _n_annotations != null then
+            v.enter_visit(_n_annotations.as(not null))
+        end
     end
 end
 redef class AImplicitSelfExpr
     end
 end
 redef class AImplicitSelfExpr
@@ -6773,12 +7097,17 @@ redef class ATrueExpr
     private init empty_init do end
 
     init init_atrueexpr (
     private init empty_init do end
 
     init init_atrueexpr (
-            n_kwtrue: nullable TKwtrue
+            n_kwtrue: nullable TKwtrue,
+            n_annotations: nullable AAnnotations
     )
     do
         empty_init
         _n_kwtrue = n_kwtrue.as(not null)
        n_kwtrue.parent = self
     )
     do
         empty_init
         _n_kwtrue = n_kwtrue.as(not null)
        n_kwtrue.parent = self
+        _n_annotations = n_annotations
+       if n_annotations != null then
+               n_annotations.parent = self
+       end
     end
 
     redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     end
 
     redef fun replace_child(old_child: ANode, new_child: nullable ANode)
@@ -6793,23 +7122,41 @@ redef class ATrueExpr
             end
             return
        end
             end
             return
        end
+        if _n_annotations == old_child then
+            if new_child != null then
+                new_child.parent = self
+               assert new_child isa AAnnotations
+                _n_annotations = new_child
+           else
+               _n_annotations = null
+            end
+            return
+       end
     end
 
     redef fun visit_all(v: Visitor)
     do
         v.enter_visit(_n_kwtrue)
     end
 
     redef fun visit_all(v: Visitor)
     do
         v.enter_visit(_n_kwtrue)
+        if _n_annotations != null then
+            v.enter_visit(_n_annotations.as(not null))
+        end
     end
 end
 redef class AFalseExpr
     private init empty_init do end
 
     init init_afalseexpr (
     end
 end
 redef class AFalseExpr
     private init empty_init do end
 
     init init_afalseexpr (
-            n_kwfalse: nullable TKwfalse
+            n_kwfalse: nullable TKwfalse,
+            n_annotations: nullable AAnnotations
     )
     do
         empty_init
         _n_kwfalse = n_kwfalse.as(not null)
        n_kwfalse.parent = self
     )
     do
         empty_init
         _n_kwfalse = n_kwfalse.as(not null)
        n_kwfalse.parent = self
+        _n_annotations = n_annotations
+       if n_annotations != null then
+               n_annotations.parent = self
+       end
     end
 
     redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     end
 
     redef fun replace_child(old_child: ANode, new_child: nullable ANode)
@@ -6824,23 +7171,41 @@ redef class AFalseExpr
             end
             return
        end
             end
             return
        end
+        if _n_annotations == old_child then
+            if new_child != null then
+                new_child.parent = self
+               assert new_child isa AAnnotations
+                _n_annotations = new_child
+           else
+               _n_annotations = null
+            end
+            return
+       end
     end
 
     redef fun visit_all(v: Visitor)
     do
         v.enter_visit(_n_kwfalse)
     end
 
     redef fun visit_all(v: Visitor)
     do
         v.enter_visit(_n_kwfalse)
+        if _n_annotations != null then
+            v.enter_visit(_n_annotations.as(not null))
+        end
     end
 end
 redef class ANullExpr
     private init empty_init do end
 
     init init_anullexpr (
     end
 end
 redef class ANullExpr
     private init empty_init do end
 
     init init_anullexpr (
-            n_kwnull: nullable TKwnull
+            n_kwnull: nullable TKwnull,
+            n_annotations: nullable AAnnotations
     )
     do
         empty_init
         _n_kwnull = n_kwnull.as(not null)
        n_kwnull.parent = self
     )
     do
         empty_init
         _n_kwnull = n_kwnull.as(not null)
        n_kwnull.parent = self
+        _n_annotations = n_annotations
+       if n_annotations != null then
+               n_annotations.parent = self
+       end
     end
 
     redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     end
 
     redef fun replace_child(old_child: ANode, new_child: nullable ANode)
@@ -6855,23 +7220,41 @@ redef class ANullExpr
             end
             return
        end
             end
             return
        end
+        if _n_annotations == old_child then
+            if new_child != null then
+                new_child.parent = self
+               assert new_child isa AAnnotations
+                _n_annotations = new_child
+           else
+               _n_annotations = null
+            end
+            return
+       end
     end
 
     redef fun visit_all(v: Visitor)
     do
         v.enter_visit(_n_kwnull)
     end
 
     redef fun visit_all(v: Visitor)
     do
         v.enter_visit(_n_kwnull)
+        if _n_annotations != null then
+            v.enter_visit(_n_annotations.as(not null))
+        end
     end
 end
 redef class AIntExpr
     private init empty_init do end
 
     init init_aintexpr (
     end
 end
 redef class AIntExpr
     private init empty_init do end
 
     init init_aintexpr (
-            n_number: nullable TNumber
+            n_number: nullable TNumber,
+            n_annotations: nullable AAnnotations
     )
     do
         empty_init
         _n_number = n_number.as(not null)
        n_number.parent = self
     )
     do
         empty_init
         _n_number = n_number.as(not null)
        n_number.parent = self
+        _n_annotations = n_annotations
+       if n_annotations != null then
+               n_annotations.parent = self
+       end
     end
 
     redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     end
 
     redef fun replace_child(old_child: ANode, new_child: nullable ANode)
@@ -6886,23 +7269,41 @@ redef class AIntExpr
             end
             return
        end
             end
             return
        end
+        if _n_annotations == old_child then
+            if new_child != null then
+                new_child.parent = self
+               assert new_child isa AAnnotations
+                _n_annotations = new_child
+           else
+               _n_annotations = null
+            end
+            return
+       end
     end
 
     redef fun visit_all(v: Visitor)
     do
         v.enter_visit(_n_number)
     end
 
     redef fun visit_all(v: Visitor)
     do
         v.enter_visit(_n_number)
+        if _n_annotations != null then
+            v.enter_visit(_n_annotations.as(not null))
+        end
     end
 end
 redef class AFloatExpr
     private init empty_init do end
 
     init init_afloatexpr (
     end
 end
 redef class AFloatExpr
     private init empty_init do end
 
     init init_afloatexpr (
-            n_float: nullable TFloat
+            n_float: nullable TFloat,
+            n_annotations: nullable AAnnotations
     )
     do
         empty_init
         _n_float = n_float.as(not null)
        n_float.parent = self
     )
     do
         empty_init
         _n_float = n_float.as(not null)
        n_float.parent = self
+        _n_annotations = n_annotations
+       if n_annotations != null then
+               n_annotations.parent = self
+       end
     end
 
     redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     end
 
     redef fun replace_child(old_child: ANode, new_child: nullable ANode)
@@ -6917,23 +7318,41 @@ redef class AFloatExpr
             end
             return
        end
             end
             return
        end
+        if _n_annotations == old_child then
+            if new_child != null then
+                new_child.parent = self
+               assert new_child isa AAnnotations
+                _n_annotations = new_child
+           else
+               _n_annotations = null
+            end
+            return
+       end
     end
 
     redef fun visit_all(v: Visitor)
     do
         v.enter_visit(_n_float)
     end
 
     redef fun visit_all(v: Visitor)
     do
         v.enter_visit(_n_float)
+        if _n_annotations != null then
+            v.enter_visit(_n_annotations.as(not null))
+        end
     end
 end
 redef class ACharExpr
     private init empty_init do end
 
     init init_acharexpr (
     end
 end
 redef class ACharExpr
     private init empty_init do end
 
     init init_acharexpr (
-            n_char: nullable TChar
+            n_char: nullable TChar,
+            n_annotations: nullable AAnnotations
     )
     do
         empty_init
         _n_char = n_char.as(not null)
        n_char.parent = self
     )
     do
         empty_init
         _n_char = n_char.as(not null)
        n_char.parent = self
+        _n_annotations = n_annotations
+       if n_annotations != null then
+               n_annotations.parent = self
+       end
     end
 
     redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     end
 
     redef fun replace_child(old_child: ANode, new_child: nullable ANode)
@@ -6948,23 +7367,41 @@ redef class ACharExpr
             end
             return
        end
             end
             return
        end
+        if _n_annotations == old_child then
+            if new_child != null then
+                new_child.parent = self
+               assert new_child isa AAnnotations
+                _n_annotations = new_child
+           else
+               _n_annotations = null
+            end
+            return
+       end
     end
 
     redef fun visit_all(v: Visitor)
     do
         v.enter_visit(_n_char)
     end
 
     redef fun visit_all(v: Visitor)
     do
         v.enter_visit(_n_char)
+        if _n_annotations != null then
+            v.enter_visit(_n_annotations.as(not null))
+        end
     end
 end
 redef class AStringExpr
     private init empty_init do end
 
     init init_astringexpr (
     end
 end
 redef class AStringExpr
     private init empty_init do end
 
     init init_astringexpr (
-            n_string: nullable TString
+            n_string: nullable TString,
+            n_annotations: nullable AAnnotations
     )
     do
         empty_init
         _n_string = n_string.as(not null)
        n_string.parent = self
     )
     do
         empty_init
         _n_string = n_string.as(not null)
        n_string.parent = self
+        _n_annotations = n_annotations
+       if n_annotations != null then
+               n_annotations.parent = self
+       end
     end
 
     redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     end
 
     redef fun replace_child(old_child: ANode, new_child: nullable ANode)
@@ -6979,11 +7416,24 @@ redef class AStringExpr
             end
             return
        end
             end
             return
        end
+        if _n_annotations == old_child then
+            if new_child != null then
+                new_child.parent = self
+               assert new_child isa AAnnotations
+                _n_annotations = new_child
+           else
+               _n_annotations = null
+            end
+            return
+       end
     end
 
     redef fun visit_all(v: Visitor)
     do
         v.enter_visit(_n_string)
     end
 
     redef fun visit_all(v: Visitor)
     do
         v.enter_visit(_n_string)
+        if _n_annotations != null then
+            v.enter_visit(_n_annotations.as(not null))
+        end
     end
 end
 redef class AStartStringExpr
     end
 end
 redef class AStartStringExpr
@@ -7083,7 +7533,8 @@ redef class ASuperstringExpr
     private init empty_init do end
 
     init init_asuperstringexpr (
     private init empty_init do end
 
     init init_asuperstringexpr (
-            n_exprs: Collection[Object] # Should be Collection[AExpr]
+            n_exprs: Collection[Object], # Should be Collection[AExpr]
+            n_annotations: nullable AAnnotations
     )
     do
         empty_init
     )
     do
         empty_init
@@ -7092,6 +7543,10 @@ redef class ASuperstringExpr
                _n_exprs.add(n)
                n.parent = self
        end
                _n_exprs.add(n)
                n.parent = self
        end
+        _n_annotations = n_annotations
+       if n_annotations != null then
+               n_annotations.parent = self
+       end
     end
 
     redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     end
 
     redef fun replace_child(old_child: ANode, new_child: nullable ANode)
@@ -7108,6 +7563,16 @@ redef class ASuperstringExpr
                 return
             end
         end
                 return
             end
         end
+        if _n_annotations == old_child then
+            if new_child != null then
+                new_child.parent = self
+               assert new_child isa AAnnotations
+                _n_annotations = new_child
+           else
+               _n_annotations = null
+            end
+            return
+       end
     end
 
     redef fun visit_all(v: Visitor)
     end
 
     redef fun visit_all(v: Visitor)
@@ -7115,6 +7580,9 @@ redef class ASuperstringExpr
             for n in _n_exprs do
                 v.enter_visit(n)
            end
             for n in _n_exprs do
                 v.enter_visit(n)
            end
+        if _n_annotations != null then
+            v.enter_visit(_n_annotations.as(not null))
+        end
     end
 end
 redef class AParExpr
     end
 end
 redef class AParExpr
@@ -7123,7 +7591,8 @@ redef class AParExpr
     init init_aparexpr (
             n_opar: nullable TOpar,
             n_expr: nullable AExpr,
     init init_aparexpr (
             n_opar: nullable TOpar,
             n_expr: nullable AExpr,
-            n_cpar: nullable TCpar
+            n_cpar: nullable TCpar,
+            n_annotations: nullable AAnnotations
     )
     do
         empty_init
     )
     do
         empty_init
@@ -7133,6 +7602,10 @@ redef class AParExpr
        n_expr.parent = self
         _n_cpar = n_cpar.as(not null)
        n_cpar.parent = self
        n_expr.parent = self
         _n_cpar = n_cpar.as(not null)
        n_cpar.parent = self
+        _n_annotations = n_annotations
+       if n_annotations != null then
+               n_annotations.parent = self
+       end
     end
 
     redef fun replace_child(old_child: ANode, new_child: nullable ANode)
     end
 
     redef fun replace_child(old_child: ANode, new_child: nullable ANode)
@@ -7167,6 +7640,16 @@ redef class AParExpr
             end
             return
        end
             end
             return
        end
+        if _n_annotations == old_child then
+            if new_child != null then
+                new_child.parent = self
+               assert new_child isa AAnnotations
+                _n_annotations = new_child
+           else
+               _n_annotations = null
+            end
+            return
+       end
     end
 
     redef fun visit_all(v: Visitor)
     end
 
     redef fun visit_all(v: Visitor)
@@ -7174,6 +7657,9 @@ redef class AParExpr
         v.enter_visit(_n_opar)
         v.enter_visit(_n_expr)
         v.enter_visit(_n_cpar)
         v.enter_visit(_n_opar)
         v.enter_visit(_n_expr)
         v.enter_visit(_n_cpar)
+        if _n_annotations != null then
+            v.enter_visit(_n_annotations.as(not null))
+        end
     end
 end
 redef class AAsCastExpr
     end
 end
 redef class AAsCastExpr
@@ -8583,6 +9069,483 @@ redef class ADoc
            end
     end
 end
            end
     end
 end
+redef class AAnnotations
+    private init empty_init do end
+
+    init init_aannotations (
+            n_at: nullable TAt,
+            n_opar: nullable TOpar,
+            n_items: Collection[Object], # Should be Collection[AAnnotation]
+            n_cpar: nullable TCpar
+    )
+    do
+        empty_init
+        _n_at = n_at
+       if n_at != null then
+               n_at.parent = self
+       end
+        _n_opar = n_opar
+       if n_opar != null then
+               n_opar.parent = self
+       end
+       for n in n_items do
+               assert n isa AAnnotation
+               _n_items.add(n)
+               n.parent = self
+       end
+        _n_cpar = n_cpar
+       if n_cpar != null then
+               n_cpar.parent = self
+       end
+    end
+
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
+    do
+        if _n_at == old_child then
+            if new_child != null then
+                new_child.parent = self
+               assert new_child isa TAt
+                _n_at = new_child
+           else
+               _n_at = null
+            end
+            return
+       end
+        if _n_opar == old_child then
+            if new_child != null then
+                new_child.parent = self
+               assert new_child isa TOpar
+                _n_opar = new_child
+           else
+               _n_opar = null
+            end
+            return
+       end
+        for i in [0.._n_items.length[ do
+            if _n_items[i] == old_child then
+                if new_child != null then
+                   assert new_child isa AAnnotation
+                    _n_items[i] = new_child
+                    new_child.parent = self
+                else
+                    _n_items.remove_at(i)
+                end
+                return
+            end
+        end
+        if _n_cpar == old_child then
+            if new_child != null then
+                new_child.parent = self
+               assert new_child isa TCpar
+                _n_cpar = new_child
+           else
+               _n_cpar = null
+            end
+            return
+       end
+    end
+
+    redef fun visit_all(v: Visitor)
+    do
+        if _n_at != null then
+            v.enter_visit(_n_at.as(not null))
+        end
+        if _n_opar != null then
+            v.enter_visit(_n_opar.as(not null))
+        end
+            for n in _n_items do
+                v.enter_visit(n)
+           end
+        if _n_cpar != null then
+            v.enter_visit(_n_cpar.as(not null))
+        end
+    end
+end
+redef class AAnnotation
+    private init empty_init do end
+
+    init init_aannotation (
+            n_atid: nullable AAtid,
+            n_opar: nullable TOpar,
+            n_args: Collection[Object], # Should be Collection[AAtArg]
+            n_cpar: nullable TCpar,
+            n_annotations: nullable AAnnotations
+    )
+    do
+        empty_init
+        _n_atid = n_atid.as(not null)
+       n_atid.parent = self
+        _n_opar = n_opar
+       if n_opar != null then
+               n_opar.parent = self
+       end
+       for n in n_args do
+               assert n isa AAtArg
+               _n_args.add(n)
+               n.parent = self
+       end
+        _n_cpar = n_cpar
+       if n_cpar != null then
+               n_cpar.parent = self
+       end
+        _n_annotations = n_annotations
+       if n_annotations != null then
+               n_annotations.parent = self
+       end
+    end
+
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
+    do
+        if _n_atid == old_child then
+            if new_child != null then
+                new_child.parent = self
+               assert new_child isa AAtid
+                _n_atid = new_child
+           else
+               abort
+            end
+            return
+       end
+        if _n_opar == old_child then
+            if new_child != null then
+                new_child.parent = self
+               assert new_child isa TOpar
+                _n_opar = new_child
+           else
+               _n_opar = null
+            end
+            return
+       end
+        for i in [0.._n_args.length[ do
+            if _n_args[i] == old_child then
+                if new_child != null then
+                   assert new_child isa AAtArg
+                    _n_args[i] = new_child
+                    new_child.parent = self
+                else
+                    _n_args.remove_at(i)
+                end
+                return
+            end
+        end
+        if _n_cpar == old_child then
+            if new_child != null then
+                new_child.parent = self
+               assert new_child isa TCpar
+                _n_cpar = new_child
+           else
+               _n_cpar = null
+            end
+            return
+       end
+        if _n_annotations == old_child then
+            if new_child != null then
+                new_child.parent = self
+               assert new_child isa AAnnotations
+                _n_annotations = new_child
+           else
+               _n_annotations = null
+            end
+            return
+       end
+    end
+
+    redef fun visit_all(v: Visitor)
+    do
+        v.enter_visit(_n_atid)
+        if _n_opar != null then
+            v.enter_visit(_n_opar.as(not null))
+        end
+            for n in _n_args do
+                v.enter_visit(n)
+           end
+        if _n_cpar != null then
+            v.enter_visit(_n_cpar.as(not null))
+        end
+        if _n_annotations != null then
+            v.enter_visit(_n_annotations.as(not null))
+        end
+    end
+end
+redef class ATypeAtArg
+    private init empty_init do end
+
+    init init_atypeatarg (
+            n_type: nullable AType
+    )
+    do
+        empty_init
+        _n_type = n_type.as(not null)
+       n_type.parent = self
+    end
+
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
+    do
+        if _n_type == old_child then
+            if new_child != null then
+                new_child.parent = self
+               assert new_child isa AType
+                _n_type = new_child
+           else
+               abort
+            end
+            return
+       end
+    end
+
+    redef fun visit_all(v: Visitor)
+    do
+        v.enter_visit(_n_type)
+    end
+end
+redef class AExprAtArg
+    private init empty_init do end
+
+    init init_aexpratarg (
+            n_expr: nullable AExpr
+    )
+    do
+        empty_init
+        _n_expr = n_expr.as(not null)
+       n_expr.parent = self
+    end
+
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
+    do
+        if _n_expr == old_child then
+            if new_child != null then
+                new_child.parent = self
+               assert new_child isa AExpr
+                _n_expr = new_child
+           else
+               abort
+            end
+            return
+       end
+    end
+
+    redef fun visit_all(v: Visitor)
+    do
+        v.enter_visit(_n_expr)
+    end
+end
+redef class AAtAtArg
+    private init empty_init do end
+
+    init init_aatatarg (
+            n_annotations: nullable AAnnotations
+    )
+    do
+        empty_init
+        _n_annotations = n_annotations.as(not null)
+       n_annotations.parent = self
+    end
+
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
+    do
+        if _n_annotations == old_child then
+            if new_child != null then
+                new_child.parent = self
+               assert new_child isa AAnnotations
+                _n_annotations = new_child
+           else
+               abort
+            end
+            return
+       end
+    end
+
+    redef fun visit_all(v: Visitor)
+    do
+        v.enter_visit(_n_annotations)
+    end
+end
+redef class AIdAtid
+    private init empty_init do end
+
+    init init_aidatid (
+            n_id: nullable TId
+    )
+    do
+        empty_init
+        _n_id = n_id.as(not null)
+       n_id.parent = self
+    end
+
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
+    do
+        if _n_id == old_child then
+            if new_child != null then
+                new_child.parent = self
+               assert new_child isa TId
+                _n_id = new_child
+           else
+               abort
+            end
+            return
+       end
+    end
+
+    redef fun visit_all(v: Visitor)
+    do
+        v.enter_visit(_n_id)
+    end
+end
+redef class AKwexternAtid
+    private init empty_init do end
+
+    init init_akwexternatid (
+            n_id: nullable TKwextern
+    )
+    do
+        empty_init
+        _n_id = n_id.as(not null)
+       n_id.parent = self
+    end
+
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
+    do
+        if _n_id == old_child then
+            if new_child != null then
+                new_child.parent = self
+               assert new_child isa TKwextern
+                _n_id = new_child
+           else
+               abort
+            end
+            return
+       end
+    end
+
+    redef fun visit_all(v: Visitor)
+    do
+        v.enter_visit(_n_id)
+    end
+end
+redef class AKwinternAtid
+    private init empty_init do end
+
+    init init_akwinternatid (
+            n_id: nullable TKwintern
+    )
+    do
+        empty_init
+        _n_id = n_id.as(not null)
+       n_id.parent = self
+    end
+
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
+    do
+        if _n_id == old_child then
+            if new_child != null then
+                new_child.parent = self
+               assert new_child isa TKwintern
+                _n_id = new_child
+           else
+               abort
+            end
+            return
+       end
+    end
+
+    redef fun visit_all(v: Visitor)
+    do
+        v.enter_visit(_n_id)
+    end
+end
+redef class AKwreadableAtid
+    private init empty_init do end
+
+    init init_akwreadableatid (
+            n_id: nullable TKwreadable
+    )
+    do
+        empty_init
+        _n_id = n_id.as(not null)
+       n_id.parent = self
+    end
+
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
+    do
+        if _n_id == old_child then
+            if new_child != null then
+                new_child.parent = self
+               assert new_child isa TKwreadable
+                _n_id = new_child
+           else
+               abort
+            end
+            return
+       end
+    end
+
+    redef fun visit_all(v: Visitor)
+    do
+        v.enter_visit(_n_id)
+    end
+end
+redef class AKwwritableAtid
+    private init empty_init do end
+
+    init init_akwwritableatid (
+            n_id: nullable TKwwritable
+    )
+    do
+        empty_init
+        _n_id = n_id.as(not null)
+       n_id.parent = self
+    end
+
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
+    do
+        if _n_id == old_child then
+            if new_child != null then
+                new_child.parent = self
+               assert new_child isa TKwwritable
+                _n_id = new_child
+           else
+               abort
+            end
+            return
+       end
+    end
+
+    redef fun visit_all(v: Visitor)
+    do
+        v.enter_visit(_n_id)
+    end
+end
+redef class AKwimportAtid
+    private init empty_init do end
+
+    init init_akwimportatid (
+            n_id: nullable TKwimport
+    )
+    do
+        empty_init
+        _n_id = n_id.as(not null)
+       n_id.parent = self
+    end
+
+    redef fun replace_child(old_child: ANode, new_child: nullable ANode)
+    do
+        if _n_id == old_child then
+            if new_child != null then
+                new_child.parent = self
+               assert new_child isa TKwimport
+                _n_id = new_child
+           else
+               abort
+            end
+            return
+       end
+    end
+
+    redef fun visit_all(v: Visitor)
+    do
+        v.enter_visit(_n_id)
+    end
+end
 
 redef class Start
     redef fun replace_child(old_child: ANode, new_child: nullable ANode)
 
 redef class Start
     redef fun replace_child(old_child: ANode, new_child: nullable ANode)
index 5263df7..83dc490 100644 (file)
@@ -3,7 +3,7 @@
 #include "tables_nit.h"
 
 static const int lexer_goto_row1[] = {
 #include "tables_nit.h"
 
 static const int lexer_goto_row1[] = {
-       50,
+       51,
        9, 9, 1,
        10, 10, 2,
        13, 13, 3,
        9, 9, 1,
        10, 10, 2,
        13, 13, 3,
@@ -26,34 +26,35 @@ static const int lexer_goto_row1[] = {
        60, 60, 20,
        61, 61, 21,
        62, 62, 22,
        60, 60, 20,
        61, 61, 21,
        62, 62, 22,
-       65, 90, 23,
-       91, 91, 24,
-       93, 93, 25,
-       95, 95, 26,
-       96, 96, 27,
-       97, 97, 28,
-       98, 98, 29,
-       99, 99, 30,
-       100, 100, 31,
-       101, 101, 32,
-       102, 102, 33,
-       103, 104, 34,
-       105, 105, 35,
-       106, 107, 34,
-       108, 108, 36,
-       109, 109, 37,
-       110, 110, 38,
-       111, 111, 39,
-       112, 112, 40,
-       113, 113, 34,
-       114, 114, 41,
-       115, 115, 42,
-       116, 116, 43,
-       117, 117, 44,
-       118, 118, 45,
-       119, 119, 46,
-       120, 122, 34,
-       125, 125, 47
+       64, 64, 23,
+       65, 90, 24,
+       91, 91, 25,
+       93, 93, 26,
+       95, 95, 27,
+       96, 96, 28,
+       97, 97, 29,
+       98, 98, 30,
+       99, 99, 31,
+       100, 100, 32,
+       101, 101, 33,
+       102, 102, 34,
+       103, 104, 35,
+       105, 105, 36,
+       106, 107, 35,
+       108, 108, 37,
+       109, 109, 38,
+       110, 110, 39,
+       111, 111, 40,
+       112, 112, 41,
+       113, 113, 35,
+       114, 114, 42,
+       115, 115, 43,
+       116, 116, 44,
+       117, 117, 45,
+       118, 118, 46,
+       119, 119, 47,
+       120, 122, 35,
+       125, 125, 48
 };
 static const int lexer_goto_row2[] = {
        2,
 };
 static const int lexer_goto_row2[] = {
        2,
@@ -62,7 +63,7 @@ static const int lexer_goto_row2[] = {
 };
 static const int lexer_goto_row4[] = {
        1,
 };
 static const int lexer_goto_row4[] = {
        1,
-       10, 10, 48
+       10, 10, 49
 };
 static const int lexer_goto_row5[] = {
        1,
 };
 static const int lexer_goto_row5[] = {
        1,
@@ -70,1428 +71,1428 @@ static const int lexer_goto_row5[] = {
 };
 static const int lexer_goto_row6[] = {
        1,
 };
 static const int lexer_goto_row6[] = {
        1,
-       61, 61, 49
+       61, 61, 50
 };
 static const int lexer_goto_row7[] = {
        9,
 };
 static const int lexer_goto_row7[] = {
        9,
-       0, 9, 50,
-       11, 12, 50,
-       14, 33, 50,
-       34, 34, 51,
-       35, 91, 50,
-       92, 92, 52,
-       93, 122, 50,
-       123, 123, 53,
-       124, 255, 50
+       0, 9, 51,
+       11, 12, 51,
+       14, 33, 51,
+       34, 34, 52,
+       35, 91, 51,
+       92, 92, 53,
+       93, 122, 51,
+       123, 123, 54,
+       124, 255, 51
 };
 static const int lexer_goto_row8[] = {
        5,
 };
 static const int lexer_goto_row8[] = {
        5,
-       0, 9, 54,
-       10, 10, 55,
-       11, 12, 54,
-       13, 13, 56,
-       14, 255, 54
+       0, 9, 55,
+       10, 10, 56,
+       11, 12, 55,
+       13, 13, 57,
+       14, 255, 55
 };
 static const int lexer_goto_row10[] = {
        7,
 };
 static const int lexer_goto_row10[] = {
        7,
-       0, 9, 57,
-       11, 12, 57,
-       14, 38, 57,
-       39, 39, 58,
-       40, 91, 57,
-       92, 92, 59,
-       93, 255, 57
+       0, 9, 58,
+       11, 12, 58,
+       14, 38, 58,
+       39, 39, 59,
+       40, 91, 58,
+       92, 92, 60,
+       93, 255, 58
 };
 static const int lexer_goto_row14[] = {
        1,
 };
 static const int lexer_goto_row14[] = {
        1,
-       61, 61, 60
+       61, 61, 61
 };
 static const int lexer_goto_row16[] = {
        1,
 };
 static const int lexer_goto_row16[] = {
        1,
-       61, 61, 61
+       61, 61, 62
 };
 static const int lexer_goto_row17[] = {
        2,
 };
 static const int lexer_goto_row17[] = {
        2,
-       46, 46, 62,
-       48, 57, 63
+       46, 46, 63,
+       48, 57, 64
 };
 static const int lexer_goto_row19[] = {
        2,
 };
 static const int lexer_goto_row19[] = {
        2,
-       46, 46, 64,
+       46, 46, 65,
        48, 57, 18
 };
 static const int lexer_goto_row20[] = {
        1,
        48, 57, 18
 };
 static const int lexer_goto_row20[] = {
        1,
-       58, 58, 65
+       58, 58, 66
 };
 static const int lexer_goto_row21[] = {
        2,
 };
 static const int lexer_goto_row21[] = {
        2,
-       60, 60, 66,
-       61, 61, 67
+       60, 60, 67,
+       61, 61, 68
 };
 static const int lexer_goto_row22[] = {
        1,
 };
 static const int lexer_goto_row22[] = {
        1,
-       61, 61, 68
+       61, 61, 69
 };
 static const int lexer_goto_row23[] = {
        2,
 };
 static const int lexer_goto_row23[] = {
        2,
-       61, 61, 69,
-       62, 62, 70
+       61, 61, 70,
+       62, 62, 71
 };
 };
-static const int lexer_goto_row24[] = {
+static const int lexer_goto_row25[] = {
        4,
        4,
-       48, 57, 71,
-       65, 90, 72,
-       95, 95, 73,
-       97, 122, 74
-};
-static const int lexer_goto_row27[] = {
-       2,
-       95, 95, 75,
-       97, 122, 76
+       48, 57, 72,
+       65, 90, 73,
+       95, 95, 74,
+       97, 122, 75
 };
 static const int lexer_goto_row28[] = {
 };
 static const int lexer_goto_row28[] = {
-       1,
-       123, 123, 77
+       2,
+       95, 95, 76,
+       97, 122, 77
 };
 static const int lexer_goto_row29[] = {
 };
 static const int lexer_goto_row29[] = {
-       10,
-       48, 57, 78,
-       65, 90, 79,
-       95, 95, 80,
-       97, 97, 81,
-       98, 98, 82,
-       99, 109, 81,
-       110, 110, 83,
-       111, 114, 81,
-       115, 115, 84,
-       116, 122, 81
+       1,
+       123, 123, 78
 };
 static const int lexer_goto_row30[] = {
 };
 static const int lexer_goto_row30[] = {
-       4,
-       48, 95, -30,
-       97, 113, 81,
-       114, 114, 85,
-       115, 122, 81
+       10,
+       48, 57, 79,
+       65, 90, 80,
+       95, 95, 81,
+       97, 97, 82,
+       98, 98, 83,
+       99, 109, 82,
+       110, 110, 84,
+       111, 114, 82,
+       115, 115, 85,
+       116, 122, 82
 };
 static const int lexer_goto_row31[] = {
 };
 static const int lexer_goto_row31[] = {
-       6,
-       48, 95, -30,
-       97, 107, 81,
-       108, 108, 86,
-       109, 110, 81,
-       111, 111, 87,
-       112, 122, 81
+       4,
+       48, 95, -31,
+       97, 113, 82,
+       114, 114, 86,
+       115, 122, 82
 };
 static const int lexer_goto_row32[] = {
 };
 static const int lexer_goto_row32[] = {
-       4,
-       48, 95, -30,
-       97, 110, 81,
+       6,
+       48, 95, -31,
+       97, 107, 82,
+       108, 108, 87,
+       109, 110, 82,
        111, 111, 88,
        111, 111, 88,
-       112, 122, 81
+       112, 122, 82
 };
 static const int lexer_goto_row33[] = {
 };
 static const int lexer_goto_row33[] = {
-       7,
-       48, 107, -32,
-       108, 108, 89,
-       109, 109, 81,
-       110, 110, 90,
-       111, 119, 81,
-       120, 120, 91,
-       121, 122, 81
+       4,
+       48, 95, -31,
+       97, 110, 82,
+       111, 111, 89,
+       112, 122, 82
 };
 static const int lexer_goto_row34[] = {
        7,
 };
 static const int lexer_goto_row34[] = {
        7,
-       48, 95, -30,
-       97, 97, 92,
-       98, 110, 81,
-       111, 111, 93,
-       112, 116, 81,
-       117, 117, 94,
-       118, 122, 81
+       48, 107, -33,
+       108, 108, 90,
+       109, 109, 82,
+       110, 110, 91,
+       111, 119, 82,
+       120, 120, 92,
+       121, 122, 82
 };
 static const int lexer_goto_row35[] = {
 };
 static const int lexer_goto_row35[] = {
-       2,
-       48, 95, -30,
-       97, 122, 81
+       7,
+       48, 95, -31,
+       97, 97, 93,
+       98, 110, 82,
+       111, 111, 94,
+       112, 116, 82,
+       117, 117, 95,
+       118, 122, 82
 };
 static const int lexer_goto_row36[] = {
 };
 static const int lexer_goto_row36[] = {
-       9,
-       48, 95, -30,
-       97, 101, 81,
-       102, 102, 95,
-       103, 108, 81,
-       109, 109, 96,
-       110, 110, 97,
-       111, 114, 81,
-       115, 115, 98,
-       116, 122, 81
+       2,
+       48, 95, -31,
+       97, 122, 82
 };
 static const int lexer_goto_row37[] = {
 };
 static const int lexer_goto_row37[] = {
-       5,
-       48, 95, -30,
-       97, 97, 99,
-       98, 110, 81,
-       111, 111, 100,
-       112, 122, 81
+       9,
+       48, 95, -31,
+       97, 101, 82,
+       102, 102, 96,
+       103, 108, 82,
+       109, 109, 97,
+       110, 110, 98,
+       111, 114, 82,
+       115, 115, 99,
+       116, 122, 82
 };
 static const int lexer_goto_row38[] = {
 };
 static const int lexer_goto_row38[] = {
-       3,
-       48, 110, -33,
+       5,
+       48, 95, -31,
+       97, 97, 100,
+       98, 110, 82,
        111, 111, 101,
        111, 111, 101,
-       112, 122, 81
+       112, 122, 82
 };
 static const int lexer_goto_row39[] = {
 };
 static const int lexer_goto_row39[] = {
-       8,
-       48, 95, -30,
-       97, 100, 81,
-       101, 101, 102,
-       102, 110, 81,
-       111, 111, 103,
-       112, 116, 81,
-       117, 117, 104,
-       118, 122, 81
+       3,
+       48, 110, -34,
+       111, 111, 102,
+       112, 122, 82
 };
 static const int lexer_goto_row40[] = {
 };
 static const int lexer_goto_row40[] = {
-       6,
-       48, 95, -30,
-       97, 109, 81,
-       110, 110, 105,
-       111, 113, 81,
-       114, 114, 106,
-       115, 122, 81
+       8,
+       48, 95, -31,
+       97, 100, 82,
+       101, 101, 103,
+       102, 110, 82,
+       111, 111, 104,
+       112, 116, 82,
+       117, 117, 105,
+       118, 122, 82
 };
 static const int lexer_goto_row41[] = {
 };
 static const int lexer_goto_row41[] = {
-       5,
-       48, 95, -30,
-       97, 97, 107,
-       98, 113, 81,
-       114, 114, 108,
-       115, 122, 81
+       6,
+       48, 95, -31,
+       97, 109, 82,
+       110, 110, 106,
+       111, 113, 82,
+       114, 114, 107,
+       115, 122, 82
 };
 static const int lexer_goto_row42[] = {
 };
 static const int lexer_goto_row42[] = {
-       3,
-       48, 100, -40,
-       101, 101, 109,
-       102, 122, 81
+       5,
+       48, 95, -31,
+       97, 97, 108,
+       98, 113, 82,
+       114, 114, 109,
+       115, 122, 82
 };
 static const int lexer_goto_row43[] = {
 };
 static const int lexer_goto_row43[] = {
-       5,
-       48, 100, -40,
+       3,
+       48, 100, -41,
        101, 101, 110,
        101, 101, 110,
-       102, 116, 81,
-       117, 117, 111,
-       118, 122, 81
+       102, 122, 82
 };
 static const int lexer_goto_row44[] = {
 };
 static const int lexer_goto_row44[] = {
-       8,
-       48, 95, -30,
-       97, 103, 81,
-       104, 104, 112,
-       105, 113, 81,
-       114, 114, 113,
-       115, 120, 81,
-       121, 121, 114,
-       122, 122, 81
+       5,
+       48, 100, -41,
+       101, 101, 111,
+       102, 116, 82,
+       117, 117, 112,
+       118, 122, 82
 };
 static const int lexer_goto_row45[] = {
 };
 static const int lexer_goto_row45[] = {
-       3,
-       48, 109, -41,
-       110, 110, 115,
-       111, 122, 81
+       8,
+       48, 95, -31,
+       97, 103, 82,
+       104, 104, 113,
+       105, 113, 82,
+       114, 114, 114,
+       115, 120, 82,
+       121, 121, 115,
+       122, 122, 82
 };
 static const int lexer_goto_row46[] = {
        3,
 };
 static const int lexer_goto_row46[] = {
        3,
-       48, 95, -30,
-       97, 97, 116,
-       98, 122, 81
+       48, 109, -42,
+       110, 110, 116,
+       111, 122, 82
 };
 static const int lexer_goto_row47[] = {
 };
 static const int lexer_goto_row47[] = {
-       5,
-       48, 103, -45,
-       104, 104, 117,
-       105, 113, 81,
-       114, 114, 118,
-       115, 122, 81
+       3,
+       48, 95, -31,
+       97, 97, 117,
+       98, 122, 82
 };
 static const int lexer_goto_row48[] = {
 };
 static const int lexer_goto_row48[] = {
+       5,
+       48, 103, -46,
+       104, 104, 118,
+       105, 113, 82,
+       114, 114, 119,
+       115, 122, 82
+};
+static const int lexer_goto_row49[] = {
        9,
        9,
-       0, 9, 119,
-       11, 12, 119,
-       14, 33, 119,
-       34, 34, 120,
-       35, 91, 119,
-       92, 92, 121,
-       93, 122, 119,
-       123, 123, 122,
-       124, 255, 119
-};
-static const int lexer_goto_row51[] = {
+       0, 9, 120,
+       11, 12, 120,
+       14, 33, 120,
+       34, 34, 121,
+       35, 91, 120,
+       92, 92, 122,
+       93, 122, 120,
+       123, 123, 123,
+       124, 255, 120
+};
+static const int lexer_goto_row52[] = {
        1,
        0, 255, -8
 };
        1,
        0, 255, -8
 };
-static const int lexer_goto_row53[] = {
+static const int lexer_goto_row54[] = {
        3,
        3,
-       0, 9, 123,
-       11, 12, 123,
-       14, 255, 123
+       0, 9, 124,
+       11, 12, 124,
+       14, 255, 124
 };
 };
-static const int lexer_goto_row55[] = {
+static const int lexer_goto_row56[] = {
        1,
        0, 255, -9
 };
        1,
        0, 255, -9
 };
-static const int lexer_goto_row57[] = {
+static const int lexer_goto_row58[] = {
        1,
        1,
-       10, 10, 124
+       10, 10, 125
 };
 };
-static const int lexer_goto_row58[] = {
+static const int lexer_goto_row59[] = {
        1,
        1,
-       39, 39, 125
+       39, 39, 126
 };
 };
-static const int lexer_goto_row60[] = {
+static const int lexer_goto_row61[] = {
        3,
        3,
-       0, 9, 126,
-       11, 12, 126,
-       14, 255, 126
-};
-static const int lexer_goto_row63[] = {
-       1,
-       46, 46, 127
+       0, 9, 127,
+       11, 12, 127,
+       14, 255, 127
 };
 static const int lexer_goto_row64[] = {
        1,
 };
 static const int lexer_goto_row64[] = {
        1,
-       48, 57, 63
+       46, 46, 128
 };
 static const int lexer_goto_row65[] = {
        1,
 };
 static const int lexer_goto_row65[] = {
        1,
-       48, 57, 63
+       48, 57, 64
 };
 };
-static const int lexer_goto_row68[] = {
+static const int lexer_goto_row66[] = {
        1,
        1,
-       62, 62, 128
+       48, 57, 64
 };
 };
-static const int lexer_goto_row72[] = {
+static const int lexer_goto_row69[] = {
        1,
        1,
-       48, 122, -25
+       62, 62, 129
 };
 static const int lexer_goto_row73[] = {
        1,
 };
 static const int lexer_goto_row73[] = {
        1,
-       48, 122, -25
+       48, 122, -26
 };
 static const int lexer_goto_row74[] = {
        1,
 };
 static const int lexer_goto_row74[] = {
        1,
-       48, 122, -25
+       48, 122, -26
 };
 static const int lexer_goto_row75[] = {
        1,
 };
 static const int lexer_goto_row75[] = {
        1,
-       48, 122, -25
+       48, 122, -26
 };
 static const int lexer_goto_row76[] = {
        1,
 };
 static const int lexer_goto_row76[] = {
        1,
-       100, 100, 129
+       48, 122, -26
 };
 static const int lexer_goto_row77[] = {
 };
 static const int lexer_goto_row77[] = {
-       4,
-       48, 57, 130,
-       65, 90, 131,
-       95, 95, 132,
-       97, 122, 133
+       1,
+       100, 100, 130
 };
 static const int lexer_goto_row78[] = {
 };
 static const int lexer_goto_row78[] = {
-       5,
-       0, 91, 134,
-       92, 92, 135,
-       93, 95, 134,
-       96, 96, 136,
-       97, 255, 134
+       4,
+       48, 57, 131,
+       65, 90, 132,
+       95, 95, 133,
+       97, 122, 134
 };
 static const int lexer_goto_row79[] = {
 };
 static const int lexer_goto_row79[] = {
-       1,
-       48, 122, -36
+       5,
+       0, 91, 135,
+       92, 92, 136,
+       93, 95, 135,
+       96, 96, 137,
+       97, 255, 135
 };
 static const int lexer_goto_row80[] = {
        1,
 };
 static const int lexer_goto_row80[] = {
        1,
-       48, 122, -36
+       48, 122, -37
 };
 static const int lexer_goto_row81[] = {
        1,
 };
 static const int lexer_goto_row81[] = {
        1,
-       48, 122, -36
+       48, 122, -37
 };
 static const int lexer_goto_row82[] = {
        1,
 };
 static const int lexer_goto_row82[] = {
        1,
-       48, 122, -36
+       48, 122, -37
 };
 static const int lexer_goto_row83[] = {
 };
 static const int lexer_goto_row83[] = {
-       5,
-       48, 110, -33,
-       111, 111, 137,
-       112, 114, 81,
-       115, 115, 138,
-       116, 122, 81
+       1,
+       48, 122, -37
 };
 static const int lexer_goto_row84[] = {
 };
 static const int lexer_goto_row84[] = {
-       4,
-       48, 95, -30,
-       97, 99, 81,
-       100, 100, 139,
-       101, 122, 81
+       5,
+       48, 110, -34,
+       111, 111, 138,
+       112, 114, 82,
+       115, 115, 139,
+       116, 122, 82
 };
 static const int lexer_goto_row85[] = {
        4,
 };
 static const int lexer_goto_row85[] = {
        4,
-       48, 95, -30,
-       97, 114, 81,
-       115, 115, 140,
-       116, 122, 81
+       48, 95, -31,
+       97, 99, 82,
+       100, 100, 140,
+       101, 122, 82
 };
 static const int lexer_goto_row86[] = {
 };
 static const int lexer_goto_row86[] = {
-       3,
-       48, 100, -40,
-       101, 101, 141,
-       102, 122, 81
+       4,
+       48, 95, -31,
+       97, 114, 82,
+       115, 115, 141,
+       116, 122, 82
 };
 static const int lexer_goto_row87[] = {
        3,
 };
 static const int lexer_goto_row87[] = {
        3,
-       48, 95, -30,
-       97, 97, 142,
-       98, 122, 81
+       48, 100, -41,
+       101, 101, 142,
+       102, 122, 82
 };
 static const int lexer_goto_row88[] = {
        3,
 };
 static const int lexer_goto_row88[] = {
        3,
-       48, 109, -41,
-       110, 110, 143,
-       111, 122, 81
+       48, 95, -31,
+       97, 97, 143,
+       98, 122, 82
 };
 static const int lexer_goto_row89[] = {
 };
 static const int lexer_goto_row89[] = {
-       1,
-       48, 122, -36
+       3,
+       48, 109, -42,
+       110, 110, 144,
+       111, 122, 82
 };
 static const int lexer_goto_row90[] = {
 };
 static const int lexer_goto_row90[] = {
-       3,
-       48, 114, -86,
-       115, 115, 144,
-       116, 122, 81
+       1,
+       48, 122, -37
 };
 static const int lexer_goto_row91[] = {
 };
 static const int lexer_goto_row91[] = {
-       5,
-       48, 99, -85,
-       100, 100, 145,
-       101, 116, 81,
-       117, 117, 146,
-       118, 122, 81
+       3,
+       48, 114, -87,
+       115, 115, 145,
+       116, 122, 82
 };
 static const int lexer_goto_row92[] = {
 };
 static const int lexer_goto_row92[] = {
-       4,
-       48, 95, -30,
-       97, 115, 81,
-       116, 116, 147,
-       117, 122, 81
+       5,
+       48, 99, -86,
+       100, 100, 146,
+       101, 116, 82,
+       117, 117, 147,
+       118, 122, 82
 };
 static const int lexer_goto_row93[] = {
 };
 static const int lexer_goto_row93[] = {
-       3,
-       48, 107, -32,
-       108, 108, 148,
-       109, 122, 81
+       4,
+       48, 95, -31,
+       97, 115, 82,
+       116, 116, 148,
+       117, 122, 82
 };
 static const int lexer_goto_row94[] = {
        3,
 };
 static const int lexer_goto_row94[] = {
        3,
-       48, 113, -31,
-       114, 114, 149,
-       115, 122, 81
+       48, 107, -33,
+       108, 108, 149,
+       109, 122, 82
 };
 static const int lexer_goto_row95[] = {
        3,
 };
 static const int lexer_goto_row95[] = {
        3,
-       48, 109, -41,
-       110, 110, 150,
-       111, 122, 81
+       48, 113, -32,
+       114, 114, 150,
+       115, 122, 82
 };
 static const int lexer_goto_row96[] = {
 };
 static const int lexer_goto_row96[] = {
-       1,
-       48, 122, -36
+       3,
+       48, 109, -42,
+       110, 110, 151,
+       111, 122, 82
 };
 static const int lexer_goto_row97[] = {
 };
 static const int lexer_goto_row97[] = {
-       4,
-       48, 95, -30,
-       97, 111, 81,
-       112, 112, 151,
-       113, 122, 81
+       1,
+       48, 122, -37
 };
 static const int lexer_goto_row98[] = {
 };
 static const int lexer_goto_row98[] = {
-       6,
-       48, 95, -30,
-       97, 104, 81,
-       105, 105, 152,
-       106, 115, 81,
-       116, 116, 153,
-       117, 122, 81
+       4,
+       48, 95, -31,
+       97, 111, 82,
+       112, 112, 152,
+       113, 122, 82
 };
 static const int lexer_goto_row99[] = {
 };
 static const int lexer_goto_row99[] = {
-       5,
-       48, 95, -30,
-       97, 97, 154,
-       98, 114, 81,
-       115, 115, 155,
-       116, 122, 81
+       6,
+       48, 95, -31,
+       97, 104, 82,
+       105, 105, 153,
+       106, 115, 82,
+       116, 116, 154,
+       117, 122, 82
 };
 static const int lexer_goto_row100[] = {
 };
 static const int lexer_goto_row100[] = {
-       3,
-       48, 97, -30,
-       98, 98, 156,
-       99, 122, 81
+       5,
+       48, 95, -31,
+       97, 97, 155,
+       98, 114, 82,
+       115, 115, 156,
+       116, 122, 82
 };
 static const int lexer_goto_row101[] = {
        3,
 };
 static const int lexer_goto_row101[] = {
        3,
-       48, 110, -33,
-       111, 111, 157,
-       112, 122, 81
+       48, 97, -31,
+       98, 98, 157,
+       99, 122, 82
 };
 static const int lexer_goto_row102[] = {
        3,
 };
 static const int lexer_goto_row102[] = {
        3,
-       48, 99, -85,
-       100, 100, 158,
-       101, 122, 81
+       48, 110, -34,
+       111, 111, 158,
+       112, 122, 82
 };
 static const int lexer_goto_row103[] = {
 };
 static const int lexer_goto_row103[] = {
-       4,
-       48, 95, -30,
-       97, 118, 81,
-       119, 119, 159,
-       120, 122, 81
+       3,
+       48, 99, -86,
+       100, 100, 159,
+       101, 122, 82
 };
 static const int lexer_goto_row104[] = {
 };
 static const int lexer_goto_row104[] = {
-       3,
-       48, 115, -93,
-       116, 116, 160,
-       117, 122, 81
+       4,
+       48, 95, -31,
+       97, 118, 82,
+       119, 119, 160,
+       120, 122, 82
 };
 static const int lexer_goto_row105[] = {
        3,
 };
 static const int lexer_goto_row105[] = {
        3,
-       48, 107, -32,
-       108, 108, 161,
-       109, 122, 81
+       48, 115, -94,
+       116, 116, 161,
+       117, 122, 82
 };
 static const int lexer_goto_row106[] = {
 };
 static const int lexer_goto_row106[] = {
-       4,
-       48, 95, -30,
-       97, 98, 81,
-       99, 99, 162,
-       100, 122, 81
+       3,
+       48, 107, -33,
+       108, 108, 162,
+       109, 122, 82
 };
 static const int lexer_goto_row107[] = {
 };
 static const int lexer_goto_row107[] = {
-       1,
-       48, 122, -36
+       4,
+       48, 95, -31,
+       97, 98, 82,
+       99, 99, 163,
+       100, 122, 82
 };
 static const int lexer_goto_row108[] = {
 };
 static const int lexer_goto_row108[] = {
-       3,
-       48, 98, -107,
-       99, 99, 163,
-       100, 122, 81
+       1,
+       48, 122, -37
 };
 static const int lexer_goto_row109[] = {
 };
 static const int lexer_goto_row109[] = {
-       5,
-       48, 104, -99,
-       105, 105, 164,
-       106, 110, 81,
-       111, 111, 165,
-       112, 122, 81
+       3,
+       48, 98, -108,
+       99, 99, 164,
+       100, 122, 82
 };
 static const int lexer_goto_row110[] = {
 };
 static const int lexer_goto_row110[] = {
-       7,
-       48, 95, -30,
-       97, 97, 166,
-       98, 99, 81,
-       100, 100, 167,
-       101, 115, 81,
-       116, 116, 168,
-       117, 122, 81
+       5,
+       48, 104, -100,
+       105, 105, 165,
+       106, 110, 82,
+       111, 111, 166,
+       112, 122, 82
 };
 static const int lexer_goto_row111[] = {
 };
 static const int lexer_goto_row111[] = {
-       3,
-       48, 107, -32,
-       108, 108, 169,
-       109, 122, 81
+       7,
+       48, 95, -31,
+       97, 97, 167,
+       98, 99, 82,
+       100, 100, 168,
+       101, 115, 82,
+       116, 116, 169,
+       117, 122, 82
 };
 static const int lexer_goto_row112[] = {
        3,
 };
 static const int lexer_goto_row112[] = {
        3,
-       48, 111, -98,
-       112, 112, 170,
-       113, 122, 81
+       48, 107, -33,
+       108, 108, 170,
+       109, 122, 82
 };
 static const int lexer_goto_row113[] = {
        3,
 };
 static const int lexer_goto_row113[] = {
        3,
-       48, 100, -40,
-       101, 101, 171,
-       102, 122, 81
+       48, 111, -99,
+       112, 112, 171,
+       113, 122, 82
 };
 static const int lexer_goto_row114[] = {
 };
 static const int lexer_goto_row114[] = {
-       4,
-       48, 95, -30,
-       97, 116, 81,
-       117, 117, 172,
-       118, 122, 81
+       3,
+       48, 100, -41,
+       101, 101, 172,
+       102, 122, 82
 };
 static const int lexer_goto_row115[] = {
 };
 static const int lexer_goto_row115[] = {
-       3,
-       48, 111, -98,
-       112, 112, 173,
-       113, 122, 81
+       4,
+       48, 95, -31,
+       97, 116, 82,
+       117, 117, 173,
+       118, 122, 82
 };
 static const int lexer_goto_row116[] = {
        3,
 };
 static const int lexer_goto_row116[] = {
        3,
-       48, 104, -99,
-       105, 105, 174,
-       106, 122, 81
+       48, 111, -99,
+       112, 112, 174,
+       113, 122, 82
 };
 static const int lexer_goto_row117[] = {
        3,
 };
 static const int lexer_goto_row117[] = {
        3,
-       48, 113, -31,
-       114, 114, 175,
-       115, 122, 81
+       48, 104, -100,
+       105, 105, 175,
+       106, 122, 82
 };
 static const int lexer_goto_row118[] = {
        3,
 };
 static const int lexer_goto_row118[] = {
        3,
-       48, 104, -99,
-       105, 105, 176,
-       106, 122, 81
+       48, 113, -32,
+       114, 114, 176,
+       115, 122, 82
 };
 static const int lexer_goto_row119[] = {
        3,
 };
 static const int lexer_goto_row119[] = {
        3,
-       48, 104, -99,
+       48, 104, -100,
        105, 105, 177,
        105, 105, 177,
-       106, 122, 81
+       106, 122, 82
 };
 static const int lexer_goto_row120[] = {
 };
 static const int lexer_goto_row120[] = {
+       3,
+       48, 104, -100,
+       105, 105, 178,
+       106, 122, 82
+};
+static const int lexer_goto_row121[] = {
        1,
        1,
-       0, 255, -49
+       0, 255, -50
 };
 };
-static const int lexer_goto_row122[] = {
+static const int lexer_goto_row123[] = {
        3,
        3,
-       0, 9, 178,
-       11, 12, 178,
-       14, 255, 178
+       0, 9, 179,
+       11, 12, 179,
+       14, 255, 179
 };
 };
-static const int lexer_goto_row124[] = {
+static const int lexer_goto_row125[] = {
        1,
        0, 255, -8
 };
        1,
        0, 255, -8
 };
-static const int lexer_goto_row127[] = {
-       1,
-       39, 39, 179
-};
-static const int lexer_goto_row130[] = {
+static const int lexer_goto_row128[] = {
        1,
        1,
-       101, 101, 180
+       39, 39, 180
 };
 static const int lexer_goto_row131[] = {
        1,
 };
 static const int lexer_goto_row131[] = {
        1,
-       48, 122, -78
+       101, 101, 181
 };
 static const int lexer_goto_row132[] = {
        1,
 };
 static const int lexer_goto_row132[] = {
        1,
-       48, 122, -78
+       48, 122, -79
 };
 static const int lexer_goto_row133[] = {
        1,
 };
 static const int lexer_goto_row133[] = {
        1,
-       48, 122, -78
+       48, 122, -79
 };
 static const int lexer_goto_row134[] = {
        1,
 };
 static const int lexer_goto_row134[] = {
        1,
-       48, 122, -78
+       48, 122, -79
 };
 static const int lexer_goto_row135[] = {
        1,
 };
 static const int lexer_goto_row135[] = {
        1,
-       0, 255, -79
+       48, 122, -79
 };
 static const int lexer_goto_row136[] = {
        1,
 };
 static const int lexer_goto_row136[] = {
        1,
-       0, 255, 181
+       0, 255, -80
 };
 static const int lexer_goto_row137[] = {
        1,
 };
 static const int lexer_goto_row137[] = {
        1,
-       125, 125, 182
+       0, 255, 182
 };
 static const int lexer_goto_row138[] = {
 };
 static const int lexer_goto_row138[] = {
-       3,
-       48, 113, -31,
-       114, 114, 183,
-       115, 122, 81
+       1,
+       125, 125, 183
 };
 static const int lexer_goto_row139[] = {
        3,
 };
 static const int lexer_goto_row139[] = {
        3,
-       48, 115, -93,
-       116, 116, 184,
-       117, 122, 81
+       48, 113, -32,
+       114, 114, 184,
+       115, 122, 82
 };
 static const int lexer_goto_row140[] = {
 };
 static const int lexer_goto_row140[] = {
-       1,
-       48, 122, -36
+       3,
+       48, 115, -94,
+       116, 116, 185,
+       117, 122, 82
 };
 static const int lexer_goto_row141[] = {
 };
 static const int lexer_goto_row141[] = {
-       3,
-       48, 100, -40,
-       101, 101, 185,
-       102, 122, 81
+       1,
+       48, 122, -37
 };
 static const int lexer_goto_row142[] = {
        3,
 };
 static const int lexer_goto_row142[] = {
        3,
-       48, 95, -30,
-       97, 97, 186,
-       98, 122, 81
+       48, 100, -41,
+       101, 101, 186,
+       102, 122, 82
 };
 static const int lexer_goto_row143[] = {
        3,
 };
 static const int lexer_goto_row143[] = {
        3,
-       48, 114, -86,
-       115, 115, 187,
-       116, 122, 81
+       48, 95, -31,
+       97, 97, 187,
+       98, 122, 82
 };
 static const int lexer_goto_row144[] = {
        3,
 };
 static const int lexer_goto_row144[] = {
        3,
-       48, 115, -93,
-       116, 116, 188,
-       117, 122, 81
+       48, 114, -87,
+       115, 115, 188,
+       116, 122, 82
 };
 static const int lexer_goto_row145[] = {
        3,
 };
 static const int lexer_goto_row145[] = {
        3,
-       48, 100, -40,
-       101, 101, 189,
-       102, 122, 81
+       48, 115, -94,
+       116, 116, 189,
+       117, 122, 82
 };
 static const int lexer_goto_row146[] = {
 };
 static const int lexer_goto_row146[] = {
-       1,
-       48, 122, -36
+       3,
+       48, 100, -41,
+       101, 101, 190,
+       102, 122, 82
 };
 static const int lexer_goto_row147[] = {
 };
 static const int lexer_goto_row147[] = {
-       4,
-       48, 95, -30,
-       97, 108, 81,
-       109, 109, 190,
-       110, 122, 81
+       1,
+       48, 122, -37
 };
 static const int lexer_goto_row148[] = {
 };
 static const int lexer_goto_row148[] = {
-       3,
-       48, 100, -40,
-       101, 101, 191,
-       102, 122, 81
+       4,
+       48, 95, -31,
+       97, 108, 82,
+       109, 109, 191,
+       110, 122, 82
 };
 static const int lexer_goto_row149[] = {
        3,
 };
 static const int lexer_goto_row149[] = {
        3,
-       48, 114, -86,
-       115, 115, 192,
-       116, 122, 81
+       48, 100, -41,
+       101, 101, 192,
+       102, 122, 82
 };
 static const int lexer_goto_row150[] = {
 };
 static const int lexer_goto_row150[] = {
-       1,
-       48, 122, -36
+       3,
+       48, 114, -87,
+       115, 115, 193,
+       116, 122, 82
 };
 static const int lexer_goto_row151[] = {
        1,
 };
 static const int lexer_goto_row151[] = {
        1,
-       48, 122, -36
+       48, 122, -37
 };
 static const int lexer_goto_row152[] = {
 };
 static const int lexer_goto_row152[] = {
-       3,
-       48, 110, -33,
-       111, 111, 193,
-       112, 122, 81
+       1,
+       48, 122, -37
 };
 static const int lexer_goto_row153[] = {
        3,
 };
 static const int lexer_goto_row153[] = {
        3,
-       48, 115, -93,
-       116, 116, 194,
-       117, 122, 81
+       48, 110, -34,
+       111, 111, 194,
+       112, 122, 82
 };
 static const int lexer_goto_row154[] = {
 };
 static const int lexer_goto_row154[] = {
-       5,
-       48, 100, -40,
-       101, 101, 195,
-       102, 113, 81,
-       114, 114, 196,
-       115, 122, 81
+       3,
+       48, 115, -94,
+       116, 116, 195,
+       117, 122, 82
 };
 static const int lexer_goto_row155[] = {
 };
 static const int lexer_goto_row155[] = {
-       1,
-       48, 122, -36
+       5,
+       48, 100, -41,
+       101, 101, 196,
+       102, 113, 82,
+       114, 114, 197,
+       115, 122, 82
 };
 static const int lexer_goto_row156[] = {
 };
 static const int lexer_goto_row156[] = {
-       3,
-       48, 100, -40,
-       101, 101, 197,
-       102, 122, 81
+       1,
+       48, 122, -37
 };
 static const int lexer_goto_row157[] = {
        3,
 };
 static const int lexer_goto_row157[] = {
        3,
-       48, 100, -40,
+       48, 100, -41,
        101, 101, 198,
        101, 101, 198,
-       102, 122, 81
+       102, 122, 82
 };
 static const int lexer_goto_row158[] = {
        3,
 };
 static const int lexer_goto_row158[] = {
        3,
-       48, 111, -98,
-       112, 112, 199,
-       113, 122, 81
+       48, 100, -41,
+       101, 101, 199,
+       102, 122, 82
 };
 static const int lexer_goto_row159[] = {
        3,
 };
 static const int lexer_goto_row159[] = {
        3,
-       48, 116, -115,
-       117, 117, 200,
-       118, 122, 81
+       48, 111, -99,
+       112, 112, 200,
+       113, 122, 82
 };
 static const int lexer_goto_row160[] = {
 };
 static const int lexer_goto_row160[] = {
-       1,
-       48, 122, -36
+       3,
+       48, 116, -116,
+       117, 117, 201,
+       118, 122, 82
 };
 static const int lexer_goto_row161[] = {
        1,
 };
 static const int lexer_goto_row161[] = {
        1,
-       48, 122, -36
+       48, 122, -37
 };
 static const int lexer_goto_row162[] = {
 };
 static const int lexer_goto_row162[] = {
-       3,
-       48, 107, -32,
-       108, 108, 201,
-       109, 122, 81
+       1,
+       48, 122, -37
 };
 static const int lexer_goto_row163[] = {
        3,
 };
 static const int lexer_goto_row163[] = {
        3,
-       48, 100, -40,
-       101, 101, 202,
-       102, 122, 81
+       48, 107, -33,
+       108, 108, 202,
+       109, 122, 82
 };
 static const int lexer_goto_row164[] = {
 };
 static const int lexer_goto_row164[] = {
-       4,
-       48, 95, -30,
-       97, 106, 81,
-       107, 107, 203,
-       108, 122, 81
+       3,
+       48, 100, -41,
+       101, 101, 203,
+       102, 122, 82
 };
 static const int lexer_goto_row165[] = {
        4,
 };
 static const int lexer_goto_row165[] = {
        4,
-       48, 95, -30,
-       97, 117, 81,
-       118, 118, 204,
-       119, 122, 81
+       48, 95, -31,
+       97, 106, 82,
+       107, 107, 204,
+       108, 122, 82
 };
 static const int lexer_goto_row166[] = {
 };
 static const int lexer_goto_row166[] = {
-       3,
-       48, 115, -93,
-       116, 116, 205,
-       117, 122, 81
+       4,
+       48, 95, -31,
+       97, 117, 82,
+       118, 118, 205,
+       119, 122, 82
 };
 static const int lexer_goto_row167[] = {
        3,
 };
 static const int lexer_goto_row167[] = {
        3,
-       48, 99, -85,
-       100, 100, 206,
-       101, 122, 81
+       48, 115, -94,
+       116, 116, 206,
+       117, 122, 82
 };
 static const int lexer_goto_row168[] = {
        3,
 };
 static const int lexer_goto_row168[] = {
        3,
-       48, 100, -40,
-       101, 101, 207,
-       102, 122, 81
+       48, 99, -86,
+       100, 100, 207,
+       101, 122, 82
 };
 static const int lexer_goto_row169[] = {
        3,
 };
 static const int lexer_goto_row169[] = {
        3,
-       48, 116, -115,
-       117, 117, 208,
-       118, 122, 81
+       48, 100, -41,
+       101, 101, 208,
+       102, 122, 82
 };
 static const int lexer_goto_row170[] = {
        3,
 };
 static const int lexer_goto_row170[] = {
        3,
-       48, 101, -37,
-       102, 102, 209,
-       103, 122, 81
+       48, 116, -116,
+       117, 117, 209,
+       118, 122, 82
 };
 static const int lexer_goto_row171[] = {
        3,
 };
 static const int lexer_goto_row171[] = {
        3,
-       48, 100, -40,
-       101, 101, 210,
-       102, 122, 81
+       48, 101, -38,
+       102, 102, 210,
+       103, 122, 82
 };
 static const int lexer_goto_row172[] = {
        3,
 };
 static const int lexer_goto_row172[] = {
        3,
-       48, 109, -41,
-       110, 110, 211,
-       111, 122, 81
+       48, 100, -41,
+       101, 101, 211,
+       102, 122, 82
 };
 static const int lexer_goto_row173[] = {
        3,
 };
 static const int lexer_goto_row173[] = {
        3,
-       48, 100, -40,
-       101, 101, 212,
-       102, 122, 81
+       48, 109, -42,
+       110, 110, 212,
+       111, 122, 82
 };
 static const int lexer_goto_row174[] = {
        3,
 };
 static const int lexer_goto_row174[] = {
        3,
-       48, 100, -40,
+       48, 100, -41,
        101, 101, 213,
        101, 101, 213,
-       102, 122, 81
+       102, 122, 82
 };
 static const int lexer_goto_row175[] = {
        3,
 };
 static const int lexer_goto_row175[] = {
        3,
-       48, 117, -166,
-       118, 118, 214,
-       119, 122, 81
+       48, 100, -41,
+       101, 101, 214,
+       102, 122, 82
 };
 static const int lexer_goto_row176[] = {
 };
 static const int lexer_goto_row176[] = {
-       1,
-       48, 122, -36
+       3,
+       48, 117, -167,
+       118, 118, 215,
+       119, 122, 82
 };
 static const int lexer_goto_row177[] = {
 };
 static const int lexer_goto_row177[] = {
-       3,
-       48, 107, -32,
-       108, 108, 215,
-       109, 122, 81
+       1,
+       48, 122, -37
 };
 static const int lexer_goto_row178[] = {
        3,
 };
 static const int lexer_goto_row178[] = {
        3,
-       48, 115, -93,
-       116, 116, 216,
-       117, 122, 81
+       48, 107, -33,
+       108, 108, 216,
+       109, 122, 82
 };
 static const int lexer_goto_row179[] = {
 };
 static const int lexer_goto_row179[] = {
-       1,
-       0, 255, -49
+       3,
+       48, 115, -94,
+       116, 116, 217,
+       117, 122, 82
 };
 };
-static const int lexer_goto_row181[] = {
+static const int lexer_goto_row180[] = {
        1,
        1,
-       98, 98, 217
+       0, 255, -50
 };
 static const int lexer_goto_row182[] = {
        1,
 };
 static const int lexer_goto_row182[] = {
        1,
-       0, 255, -79
+       98, 98, 218
 };
 };
-static const int lexer_goto_row184[] = {
-       3,
-       48, 115, -93,
-       116, 116, 218,
-       117, 122, 81
+static const int lexer_goto_row183[] = {
+       1,
+       0, 255, -80
 };
 static const int lexer_goto_row185[] = {
        3,
 };
 static const int lexer_goto_row185[] = {
        3,
-       48, 113, -31,
-       114, 114, 219,
-       115, 122, 81
+       48, 115, -94,
+       116, 116, 219,
+       117, 122, 82
 };
 static const int lexer_goto_row186[] = {
        3,
 };
 static const int lexer_goto_row186[] = {
        3,
-       48, 113, -31,
+       48, 113, -32,
        114, 114, 220,
        114, 114, 220,
-       115, 122, 81
+       115, 122, 82
 };
 static const int lexer_goto_row187[] = {
        3,
 };
 static const int lexer_goto_row187[] = {
        3,
-       48, 106, -165,
-       107, 107, 221,
-       108, 122, 81
+       48, 113, -32,
+       114, 114, 221,
+       115, 122, 82
 };
 static const int lexer_goto_row188[] = {
        3,
 };
 static const int lexer_goto_row188[] = {
        3,
-       48, 114, -86,
-       115, 115, 222,
-       116, 122, 81
+       48, 106, -166,
+       107, 107, 222,
+       108, 122, 82
 };
 static const int lexer_goto_row189[] = {
        3,
 };
 static const int lexer_goto_row189[] = {
        3,
-       48, 104, -99,
-       105, 105, 223,
-       106, 122, 81
+       48, 114, -87,
+       115, 115, 223,
+       116, 122, 82
 };
 static const int lexer_goto_row190[] = {
 };
 static const int lexer_goto_row190[] = {
-       1,
-       48, 122, -36
+       3,
+       48, 104, -100,
+       105, 105, 224,
+       106, 122, 82
 };
 static const int lexer_goto_row191[] = {
        1,
 };
 static const int lexer_goto_row191[] = {
        1,
-       48, 122, -36
+       48, 122, -37
 };
 static const int lexer_goto_row192[] = {
 };
 static const int lexer_goto_row192[] = {
-       3,
-       48, 113, -31,
-       114, 114, 224,
-       115, 122, 81
+       1,
+       48, 122, -37
 };
 static const int lexer_goto_row193[] = {
        3,
 };
 static const int lexer_goto_row193[] = {
        3,
-       48, 100, -40,
-       101, 101, 225,
-       102, 122, 81
+       48, 113, -32,
+       114, 114, 225,
+       115, 122, 82
 };
 static const int lexer_goto_row194[] = {
        3,
 };
 static const int lexer_goto_row194[] = {
        3,
-       48, 113, -31,
-       114, 114, 226,
-       115, 122, 81
+       48, 100, -41,
+       101, 101, 226,
+       102, 122, 82
 };
 static const int lexer_goto_row195[] = {
 };
 static const int lexer_goto_row195[] = {
-       1,
-       48, 122, -36
-};
-static const int lexer_goto_row196[] = {
        3,
        3,
-       48, 113, -31,
+       48, 113, -32,
        114, 114, 227,
        114, 114, 227,
-       115, 122, 81
+       115, 122, 82
+};
+static const int lexer_goto_row196[] = {
+       1,
+       48, 122, -37
 };
 static const int lexer_goto_row197[] = {
        3,
 };
 static const int lexer_goto_row197[] = {
        3,
-       48, 116, -115,
-       117, 117, 228,
-       118, 122, 81
+       48, 113, -32,
+       114, 114, 228,
+       115, 122, 82
 };
 static const int lexer_goto_row198[] = {
        3,
 };
 static const int lexer_goto_row198[] = {
        3,
-       48, 115, -93,
-       116, 116, 229,
-       117, 122, 81
+       48, 116, -116,
+       117, 117, 229,
+       118, 122, 82
 };
 static const int lexer_goto_row199[] = {
        3,
 };
 static const int lexer_goto_row199[] = {
        3,
-       48, 107, -32,
-       108, 108, 230,
-       109, 122, 81
+       48, 115, -94,
+       116, 116, 230,
+       117, 122, 82
 };
 static const int lexer_goto_row200[] = {
 };
 static const int lexer_goto_row200[] = {
-       1,
-       48, 122, -36
-};
-static const int lexer_goto_row201[] = {
        3,
        3,
-       48, 107, -32,
+       48, 107, -33,
        108, 108, 231,
        108, 108, 231,
-       109, 122, 81
+       109, 122, 82
+};
+static const int lexer_goto_row201[] = {
+       1,
+       48, 122, -37
 };
 static const int lexer_goto_row202[] = {
        3,
 };
 static const int lexer_goto_row202[] = {
        3,
-       48, 95, -30,
-       97, 97, 232,
-       98, 122, 81
+       48, 107, -33,
+       108, 108, 232,
+       109, 122, 82
 };
 static const int lexer_goto_row203[] = {
 };
 static const int lexer_goto_row203[] = {
-       1,
-       48, 122, -36
-};
-static const int lexer_goto_row204[] = {
        3,
        3,
-       48, 95, -30,
+       48, 95, -31,
        97, 97, 233,
        97, 97, 233,
-       98, 122, 81
+       98, 122, 82
+};
+static const int lexer_goto_row204[] = {
+       1,
+       48, 122, -37
 };
 static const int lexer_goto_row205[] = {
        3,
 };
 static const int lexer_goto_row205[] = {
        3,
-       48, 95, -30,
+       48, 95, -31,
        97, 97, 234,
        97, 97, 234,
-       98, 122, 81
+       98, 122, 82
 };
 static const int lexer_goto_row206[] = {
        3,
 };
 static const int lexer_goto_row206[] = {
        3,
-       48, 100, -40,
-       101, 101, 235,
-       102, 122, 81
+       48, 95, -31,
+       97, 97, 235,
+       98, 122, 82
 };
 static const int lexer_goto_row207[] = {
        3,
 };
 static const int lexer_goto_row207[] = {
        3,
-       48, 95, -30,
-       97, 97, 236,
-       98, 122, 81
+       48, 100, -41,
+       101, 101, 236,
+       102, 122, 82
 };
 static const int lexer_goto_row208[] = {
        3,
 };
 static const int lexer_goto_row208[] = {
        3,
-       48, 101, -37,
-       102, 102, 237,
-       103, 122, 81
+       48, 95, -31,
+       97, 97, 237,
+       98, 122, 82
 };
 static const int lexer_goto_row209[] = {
        3,
 };
 static const int lexer_goto_row209[] = {
        3,
-       48, 113, -31,
-       114, 114, 238,
-       115, 122, 81
+       48, 101, -38,
+       102, 102, 238,
+       103, 122, 82
 };
 static const int lexer_goto_row210[] = {
 };
 static const int lexer_goto_row210[] = {
-       1,
-       48, 122, -36
-};
-static const int lexer_goto_row211[] = {
        3,
        3,
-       48, 113, -31,
+       48, 113, -32,
        114, 114, 239,
        114, 114, 239,
-       115, 122, 81
+       115, 122, 82
 };
 };
-static const int lexer_goto_row212[] = {
+static const int lexer_goto_row211[] = {
        1,
        1,
-       48, 122, -36
+       48, 122, -37
+};
+static const int lexer_goto_row212[] = {
+       3,
+       48, 113, -32,
+       114, 114, 240,
+       115, 122, 82
 };
 static const int lexer_goto_row213[] = {
        1,
 };
 static const int lexer_goto_row213[] = {
        1,
-       48, 122, -36
+       48, 122, -37
 };
 static const int lexer_goto_row214[] = {
        1,
 };
 static const int lexer_goto_row214[] = {
        1,
-       48, 122, -36
+       48, 122, -37
 };
 static const int lexer_goto_row215[] = {
 };
 static const int lexer_goto_row215[] = {
-       3,
-       48, 100, -40,
-       101, 101, 240,
-       102, 122, 81
+       1,
+       48, 122, -37
 };
 static const int lexer_goto_row216[] = {
        3,
 };
 static const int lexer_goto_row216[] = {
        3,
-       48, 100, -40,
+       48, 100, -41,
        101, 101, 241,
        101, 101, 241,
-       102, 122, 81
+       102, 122, 82
 };
 static const int lexer_goto_row217[] = {
        3,
 };
 static const int lexer_goto_row217[] = {
        3,
-       48, 95, -30,
-       97, 97, 242,
-       98, 122, 81
+       48, 100, -41,
+       101, 101, 242,
+       102, 122, 82
 };
 static const int lexer_goto_row218[] = {
 };
 static const int lexer_goto_row218[] = {
-       1,
-       117, 117, 243
+       3,
+       48, 95, -31,
+       97, 97, 243,
+       98, 122, 82
 };
 static const int lexer_goto_row219[] = {
        1,
 };
 static const int lexer_goto_row219[] = {
        1,
-       48, 122, -36
+       117, 117, 244
 };
 static const int lexer_goto_row220[] = {
 };
 static const int lexer_goto_row220[] = {
-       3,
-       48, 95, -30,
-       97, 97, 244,
-       98, 122, 81
+       1,
+       48, 122, -37
 };
 static const int lexer_goto_row221[] = {
        3,
 };
 static const int lexer_goto_row221[] = {
        3,
-       48, 115, -93,
-       116, 116, 245,
-       117, 122, 81
+       48, 95, -31,
+       97, 97, 245,
+       98, 122, 82
 };
 static const int lexer_goto_row222[] = {
 };
 static const int lexer_goto_row222[] = {
-       1,
-       48, 122, -36
+       3,
+       48, 115, -94,
+       116, 116, 246,
+       117, 122, 82
 };
 static const int lexer_goto_row223[] = {
        1,
 };
 static const int lexer_goto_row223[] = {
        1,
-       48, 122, -36
+       48, 122, -37
 };
 static const int lexer_goto_row224[] = {
 };
 static const int lexer_goto_row224[] = {
-       3,
-       48, 109, -41,
-       110, 110, 246,
-       111, 122, 81
+       1,
+       48, 122, -37
 };
 static const int lexer_goto_row225[] = {
        3,
 };
 static const int lexer_goto_row225[] = {
        3,
-       48, 109, -41,
+       48, 109, -42,
        110, 110, 247,
        110, 110, 247,
-       111, 122, 81
+       111, 122, 82
 };
 static const int lexer_goto_row226[] = {
 };
 static const int lexer_goto_row226[] = {
-       1,
-       48, 122, -36
+       3,
+       48, 109, -42,
+       110, 110, 248,
+       111, 122, 82
 };
 static const int lexer_goto_row227[] = {
 };
 static const int lexer_goto_row227[] = {
-       3,
-       48, 115, -93,
-       116, 116, 248,
-       117, 122, 81
+       1,
+       48, 122, -37
 };
 static const int lexer_goto_row228[] = {
 };
 static const int lexer_goto_row228[] = {
-       5,
-       48, 101, -37,
-       102, 102, 249,
-       103, 109, 81,
-       110, 110, 250,
-       111, 122, 81
+       3,
+       48, 115, -94,
+       116, 116, 249,
+       117, 122, 82
 };
 static const int lexer_goto_row229[] = {
 };
 static const int lexer_goto_row229[] = {
-       3,
-       48, 99, -85,
-       100, 100, 251,
-       101, 122, 81
+       5,
+       48, 101, -38,
+       102, 102, 250,
+       103, 109, 82,
+       110, 110, 251,
+       111, 122, 82
 };
 static const int lexer_goto_row230[] = {
 };
 static const int lexer_goto_row230[] = {
-       1,
-       48, 122, -36
+       3,
+       48, 99, -86,
+       100, 100, 252,
+       101, 122, 82
 };
 static const int lexer_goto_row231[] = {
        1,
 };
 static const int lexer_goto_row231[] = {
        1,
-       48, 122, -36
+       48, 122, -37
 };
 static const int lexer_goto_row232[] = {
 };
 static const int lexer_goto_row232[] = {
-       3,
-       48, 100, -40,
-       101, 101, 252,
-       102, 122, 81
+       1,
+       48, 122, -37
 };
 static const int lexer_goto_row233[] = {
        3,
 };
 static const int lexer_goto_row233[] = {
        3,
-       48, 97, -30,
-       98, 98, 253,
-       99, 122, 81
+       48, 100, -41,
+       101, 101, 253,
+       102, 122, 82
 };
 static const int lexer_goto_row234[] = {
 };
 static const int lexer_goto_row234[] = {
-       4,
-       48, 95, -30,
-       97, 102, 81,
-       103, 103, 254,
-       104, 122, 81
+       3,
+       48, 97, -31,
+       98, 98, 254,
+       99, 122, 82
 };
 static const int lexer_goto_row235[] = {
 };
 static const int lexer_goto_row235[] = {
-       3,
-       48, 115, -93,
-       116, 116, 255,
-       117, 122, 81
+       4,
+       48, 95, -31,
+       97, 102, 82,
+       103, 103, 255,
+       104, 122, 82
 };
 static const int lexer_goto_row236[] = {
        3,
 };
 static const int lexer_goto_row236[] = {
        3,
-       48, 98, -107,
-       99, 99, 256,
-       100, 122, 81
+       48, 115, -94,
+       116, 116, 256,
+       117, 122, 82
 };
 static const int lexer_goto_row237[] = {
        3,
 };
 static const int lexer_goto_row237[] = {
        3,
-       48, 97, -30,
-       98, 98, 257,
-       99, 122, 81
+       48, 98, -108,
+       99, 99, 257,
+       100, 122, 82
 };
 static const int lexer_goto_row238[] = {
 };
 static const int lexer_goto_row238[] = {
-       1,
-       48, 122, -36
+       3,
+       48, 97, -31,
+       98, 98, 258,
+       99, 122, 82
 };
 static const int lexer_goto_row239[] = {
 };
 static const int lexer_goto_row239[] = {
-       3,
-       48, 109, -41,
-       110, 110, 258,
-       111, 122, 81
+       1,
+       48, 122, -37
 };
 static const int lexer_goto_row240[] = {
 };
 static const int lexer_goto_row240[] = {
-       1,
-       48, 122, -36
+       3,
+       48, 109, -42,
+       110, 110, 259,
+       111, 122, 82
 };
 static const int lexer_goto_row241[] = {
 };
 static const int lexer_goto_row241[] = {
-       3,
-       48, 113, -31,
-       114, 114, 259,
-       115, 122, 81
+       1,
+       48, 122, -37
 };
 static const int lexer_goto_row242[] = {
 };
 static const int lexer_goto_row242[] = {
-       1,
-       48, 122, -36
+       3,
+       48, 113, -32,
+       114, 114, 260,
+       115, 122, 82
 };
 static const int lexer_goto_row243[] = {
 };
 static const int lexer_goto_row243[] = {
-       3,
-       48, 97, -30,
-       98, 98, 260,
-       99, 122, 81
+       1,
+       48, 122, -37
 };
 static const int lexer_goto_row244[] = {
 };
 static const int lexer_goto_row244[] = {
-       1,
-       103, 103, 261
+       3,
+       48, 97, -31,
+       98, 98, 261,
+       99, 122, 82
 };
 static const int lexer_goto_row245[] = {
 };
 static const int lexer_goto_row245[] = {
-       3,
-       48, 98, -107,
-       99, 99, 262,
-       100, 122, 81
+       1,
+       103, 103, 262
 };
 static const int lexer_goto_row246[] = {
 };
 static const int lexer_goto_row246[] = {
-       1,
-       48, 122, -36
+       3,
+       48, 98, -108,
+       99, 99, 263,
+       100, 122, 82
 };
 static const int lexer_goto_row247[] = {
 };
 static const int lexer_goto_row247[] = {
-       3,
-       48, 116, -115,
-       117, 117, 263,
-       118, 122, 81
+       1,
+       48, 122, -37
 };
 static const int lexer_goto_row248[] = {
 };
 static const int lexer_goto_row248[] = {
-       1,
-       48, 122, -36
+       3,
+       48, 116, -116,
+       117, 117, 264,
+       118, 122, 82
 };
 static const int lexer_goto_row249[] = {
        1,
 };
 static const int lexer_goto_row249[] = {
        1,
-       48, 122, -36
+       48, 122, -37
 };
 static const int lexer_goto_row250[] = {
 };
 static const int lexer_goto_row250[] = {
-       3,
-       48, 95, -30,
-       97, 97, 264,
-       98, 122, 81
+       1,
+       48, 122, -37
 };
 static const int lexer_goto_row251[] = {
 };
 static const int lexer_goto_row251[] = {
-       1,
-       48, 122, -36
+       3,
+       48, 95, -31,
+       97, 97, 265,
+       98, 122, 82
 };
 static const int lexer_goto_row252[] = {
 };
 static const int lexer_goto_row252[] = {
-       3,
-       48, 100, -40,
-       101, 101, 265,
-       102, 122, 81
+       1,
+       48, 122, -37
 };
 static const int lexer_goto_row253[] = {
 };
 static const int lexer_goto_row253[] = {
-       1,
-       48, 122, -36
+       3,
+       48, 100, -41,
+       101, 101, 266,
+       102, 122, 82
 };
 static const int lexer_goto_row254[] = {
 };
 static const int lexer_goto_row254[] = {
-       3,
-       48, 107, -32,
-       108, 108, 266,
-       109, 122, 81
+       1,
+       48, 122, -37
 };
 static const int lexer_goto_row255[] = {
        3,
 };
 static const int lexer_goto_row255[] = {
        3,
-       48, 100, -40,
-       101, 101, 267,
-       102, 122, 81
+       48, 107, -33,
+       108, 108, 267,
+       109, 122, 82
 };
 static const int lexer_goto_row256[] = {
        3,
 };
 static const int lexer_goto_row256[] = {
        3,
-       48, 100, -40,
+       48, 100, -41,
        101, 101, 268,
        101, 101, 268,
-       102, 122, 81
+       102, 122, 82
 };
 static const int lexer_goto_row257[] = {
        3,
 };
 static const int lexer_goto_row257[] = {
        3,
-       48, 115, -93,
-       116, 116, 269,
-       117, 122, 81
+       48, 100, -41,
+       101, 101, 269,
+       102, 122, 82
 };
 static const int lexer_goto_row258[] = {
        3,
 };
 static const int lexer_goto_row258[] = {
        3,
-       48, 107, -32,
-       108, 108, 270,
-       109, 122, 81
+       48, 115, -94,
+       116, 116, 270,
+       117, 122, 82
 };
 static const int lexer_goto_row259[] = {
 };
 static const int lexer_goto_row259[] = {
-       1,
-       48, 122, -36
+       3,
+       48, 107, -33,
+       108, 108, 271,
+       109, 122, 82
 };
 static const int lexer_goto_row260[] = {
 };
 static const int lexer_goto_row260[] = {
-       3,
-       48, 114, -86,
-       115, 115, 271,
-       116, 122, 81
+       1,
+       48, 122, -37
 };
 static const int lexer_goto_row261[] = {
        3,
 };
 static const int lexer_goto_row261[] = {
        3,
-       48, 107, -32,
-       108, 108, 272,
-       109, 122, 81
+       48, 114, -87,
+       115, 115, 272,
+       116, 122, 82
 };
 static const int lexer_goto_row262[] = {
 };
 static const int lexer_goto_row262[] = {
-       1,
-       95, 95, 273
+       3,
+       48, 107, -33,
+       108, 108, 273,
+       109, 122, 82
 };
 static const int lexer_goto_row263[] = {
 };
 static const int lexer_goto_row263[] = {
-       3,
-       48, 115, -93,
-       116, 116, 274,
-       117, 122, 81
+       1,
+       95, 95, 274
 };
 static const int lexer_goto_row264[] = {
        3,
 };
 static const int lexer_goto_row264[] = {
        3,
-       48, 100, -40,
-       101, 101, 275,
-       102, 122, 81
+       48, 115, -94,
+       116, 116, 275,
+       117, 122, 82
 };
 static const int lexer_goto_row265[] = {
        3,
 };
 static const int lexer_goto_row265[] = {
        3,
-       48, 98, -107,
-       99, 99, 276,
-       100, 122, 81
+       48, 100, -41,
+       101, 101, 276,
+       102, 122, 82
 };
 static const int lexer_goto_row266[] = {
 };
 static const int lexer_goto_row266[] = {
-       1,
-       48, 122, -36
+       3,
+       48, 98, -108,
+       99, 99, 277,
+       100, 122, 82
 };
 static const int lexer_goto_row267[] = {
 };
 static const int lexer_goto_row267[] = {
-       3,
-       48, 100, -40,
-       101, 101, 277,
-       102, 122, 81
+       1,
+       48, 122, -37
 };
 static const int lexer_goto_row268[] = {
 };
 static const int lexer_goto_row268[] = {
-       1,
-       48, 122, -36
+       3,
+       48, 100, -41,
+       101, 101, 278,
+       102, 122, 82
 };
 static const int lexer_goto_row269[] = {
        1,
 };
 static const int lexer_goto_row269[] = {
        1,
-       48, 122, -36
+       48, 122, -37
 };
 static const int lexer_goto_row270[] = {
 };
 static const int lexer_goto_row270[] = {
-       3,
-       48, 100, -40,
-       101, 101, 278,
-       102, 122, 81
+       1,
+       48, 122, -37
 };
 static const int lexer_goto_row271[] = {
        3,
 };
 static const int lexer_goto_row271[] = {
        3,
-       48, 100, -40,
+       48, 100, -41,
        101, 101, 279,
        101, 101, 279,
-       102, 122, 81
+       102, 122, 82
 };
 static const int lexer_goto_row272[] = {
        3,
 };
 static const int lexer_goto_row272[] = {
        3,
-       48, 95, -30,
-       97, 97, 280,
-       98, 122, 81
+       48, 100, -41,
+       101, 101, 280,
+       102, 122, 82
 };
 static const int lexer_goto_row273[] = {
        3,
 };
 static const int lexer_goto_row273[] = {
        3,
-       48, 100, -40,
-       101, 101, 281,
-       102, 122, 81
+       48, 95, -31,
+       97, 97, 281,
+       98, 122, 82
 };
 static const int lexer_goto_row274[] = {
 };
 static const int lexer_goto_row274[] = {
-       1,
-       95, 95, 282
+       3,
+       48, 100, -41,
+       101, 101, 282,
+       102, 122, 82
 };
 static const int lexer_goto_row275[] = {
        1,
 };
 static const int lexer_goto_row275[] = {
        1,
-       48, 122, -36
+       95, 95, 283
 };
 static const int lexer_goto_row276[] = {
        1,
 };
 static const int lexer_goto_row276[] = {
        1,
-       48, 122, -36
+       48, 122, -37
 };
 static const int lexer_goto_row277[] = {
 };
 static const int lexer_goto_row277[] = {
-       3,
-       48, 100, -40,
-       101, 101, 283,
-       102, 122, 81
-};
-static const int lexer_goto_row278[] = {
        1,
        1,
-       48, 122, -36
+       48, 122, -37
 };
 };
-static const int lexer_goto_row279[] = {
+static const int lexer_goto_row278[] = {
        3,
        3,
-       48, 99, -85,
-       100, 100, 284,
-       101, 122, 81
+       48, 100, -41,
+       101, 101, 284,
+       102, 122, 82
 };
 };
-static const int lexer_goto_row280[] = {
+static const int lexer_goto_row279[] = {
        1,
        1,
-       48, 122, -36
+       48, 122, -37
 };
 };
-static const int lexer_goto_row281[] = {
+static const int lexer_goto_row280[] = {
        3,
        3,
-       48, 107, -32,
-       108, 108, 285,
-       109, 122, 81
+       48, 99, -86,
+       100, 100, 285,
+       101, 122, 82
 };
 };
-static const int lexer_goto_row282[] = {
+static const int lexer_goto_row281[] = {
        1,
        1,
-       48, 122, -36
+       48, 122, -37
 };
 };
-static const int lexer_goto_row284[] = {
+static const int lexer_goto_row282[] = {
+       3,
+       48, 107, -33,
+       108, 108, 286,
+       109, 122, 82
+};
+static const int lexer_goto_row283[] = {
        1,
        1,
-       48, 122, -36
+       48, 122, -37
 };
 static const int lexer_goto_row285[] = {
        1,
 };
 static const int lexer_goto_row285[] = {
        1,
-       48, 122, -36
+       48, 122, -37
 };
 static const int lexer_goto_row286[] = {
        1,
 };
 static const int lexer_goto_row286[] = {
        1,
-       48, 122, -36
+       48, 122, -37
+};
+static const int lexer_goto_row287[] = {
+       1,
+       48, 122, -37
 };
 static const int lexer_goto_row_null[] = {0};
 const int* const lexer_goto_table[] = {
 };
 static const int lexer_goto_row_null[] = {0};
 const int* const lexer_goto_table[] = {
@@ -1518,10 +1519,10 @@ const int* const lexer_goto_table[] = {
        lexer_goto_row21,
        lexer_goto_row22,
        lexer_goto_row23,
        lexer_goto_row21,
        lexer_goto_row22,
        lexer_goto_row23,
-       lexer_goto_row24,
+       lexer_goto_row_null,
+       lexer_goto_row25,
        lexer_goto_row_null,
        lexer_goto_row_null,
        lexer_goto_row_null,
        lexer_goto_row_null,
-       lexer_goto_row27,
        lexer_goto_row28,
        lexer_goto_row29,
        lexer_goto_row30,
        lexer_goto_row28,
        lexer_goto_row29,
        lexer_goto_row30,
@@ -1543,30 +1544,30 @@ const int* const lexer_goto_table[] = {
        lexer_goto_row46,
        lexer_goto_row47,
        lexer_goto_row48,
        lexer_goto_row46,
        lexer_goto_row47,
        lexer_goto_row48,
+       lexer_goto_row49,
        lexer_goto_row_null,
        lexer_goto_row_null,
        lexer_goto_row_null,
        lexer_goto_row_null,
-       lexer_goto_row51,
+       lexer_goto_row52,
        lexer_goto_row_null,
        lexer_goto_row_null,
-       lexer_goto_row53,
+       lexer_goto_row54,
        lexer_goto_row_null,
        lexer_goto_row_null,
-       lexer_goto_row55,
+       lexer_goto_row56,
        lexer_goto_row_null,
        lexer_goto_row_null,
-       lexer_goto_row57,
        lexer_goto_row58,
        lexer_goto_row58,
+       lexer_goto_row59,
        lexer_goto_row_null,
        lexer_goto_row_null,
-       lexer_goto_row60,
+       lexer_goto_row61,
        lexer_goto_row_null,
        lexer_goto_row_null,
        lexer_goto_row_null,
        lexer_goto_row_null,
-       lexer_goto_row63,
        lexer_goto_row64,
        lexer_goto_row65,
        lexer_goto_row64,
        lexer_goto_row65,
+       lexer_goto_row66,
        lexer_goto_row_null,
        lexer_goto_row_null,
        lexer_goto_row_null,
        lexer_goto_row_null,
-       lexer_goto_row68,
+       lexer_goto_row69,
        lexer_goto_row_null,
        lexer_goto_row_null,
        lexer_goto_row_null,
        lexer_goto_row_null,
        lexer_goto_row_null,
        lexer_goto_row_null,
-       lexer_goto_row72,
        lexer_goto_row73,
        lexer_goto_row74,
        lexer_goto_row75,
        lexer_goto_row73,
        lexer_goto_row74,
        lexer_goto_row75,
@@ -1615,16 +1616,16 @@ const int* const lexer_goto_table[] = {
        lexer_goto_row118,
        lexer_goto_row119,
        lexer_goto_row120,
        lexer_goto_row118,
        lexer_goto_row119,
        lexer_goto_row120,
+       lexer_goto_row121,
        lexer_goto_row_null,
        lexer_goto_row_null,
-       lexer_goto_row122,
+       lexer_goto_row123,
        lexer_goto_row_null,
        lexer_goto_row_null,
-       lexer_goto_row124,
+       lexer_goto_row125,
        lexer_goto_row_null,
        lexer_goto_row_null,
        lexer_goto_row_null,
        lexer_goto_row_null,
-       lexer_goto_row127,
+       lexer_goto_row128,
        lexer_goto_row_null,
        lexer_goto_row_null,
        lexer_goto_row_null,
        lexer_goto_row_null,
-       lexer_goto_row130,
        lexer_goto_row131,
        lexer_goto_row132,
        lexer_goto_row133,
        lexer_goto_row131,
        lexer_goto_row132,
        lexer_goto_row133,
@@ -1674,11 +1675,11 @@ const int* const lexer_goto_table[] = {
        lexer_goto_row177,
        lexer_goto_row178,
        lexer_goto_row179,
        lexer_goto_row177,
        lexer_goto_row178,
        lexer_goto_row179,
+       lexer_goto_row180,
        lexer_goto_row_null,
        lexer_goto_row_null,
-       lexer_goto_row181,
        lexer_goto_row182,
        lexer_goto_row182,
+       lexer_goto_row183,
        lexer_goto_row_null,
        lexer_goto_row_null,
-       lexer_goto_row184,
        lexer_goto_row185,
        lexer_goto_row186,
        lexer_goto_row187,
        lexer_goto_row185,
        lexer_goto_row186,
        lexer_goto_row187,
@@ -1777,46 +1778,47 @@ const int* const lexer_goto_table[] = {
        lexer_goto_row280,
        lexer_goto_row281,
        lexer_goto_row282,
        lexer_goto_row280,
        lexer_goto_row281,
        lexer_goto_row282,
+       lexer_goto_row283,
        lexer_goto_row_null,
        lexer_goto_row_null,
-       lexer_goto_row284,
        lexer_goto_row285,
        lexer_goto_row285,
-       lexer_goto_row286
+       lexer_goto_row286,
+       lexer_goto_row287
 };
 
 const int lexer_accept_table[] = {
 };
 
 const int lexer_accept_table[] = {
-       -1,0,1,1,0,79,91,2,69,-1,52,53,67,65,56,66,64,68,83,57,72,59,75,80,54,55,-1,-1,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,81,91,1,71,91,86,-1,87,2,2,2,90,90,90,60,61,63,84,-1,58,74,73,70,76,77,80,80,80,80,-1,82,-1,81,81,81,81,81,81,47,81,81,81,15,81,81,81,81,81,81,24,81,30,14,81,81,81,81,81,81,81,32,81,81,81,81,81,81,81,81,81,81,81,81,91,89,-1,88,91,2,85,90,62,78,-1,82,82,82,82,-1,-1,-1,81,81,31,81,81,81,81,81,9,81,81,81,29,10,81,81,81,40,81,81,81,81,39,33,81,81,81,81,81,81,81,81,81,81,81,81,81,81,18,81,81,91,85,-1,-1,92,81,81,81,81,81,81,26,8,81,81,81,12,81,81,81,81,28,81,46,41,81,81,81,81,81,81,43,81,25,44,11,81,81,81,-1,37,81,81,36,5,81,81,45,81,81,81,49,50,81,81,81,81,81,81,13,81,42,81,27,81,-1,81,38,81,20,4,81,19,81,3,81,81,81,81,81,34,81,81,-1,81,81,81,23,81,3,22,81,81,81,81,-1,6,35,81,48,81,16,81,17,51,7,21,8
+       -1,0,1,1,0,79,92,2,69,-1,52,53,67,65,56,66,64,68,84,57,72,59,75,80,81,54,55,-1,-1,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,82,92,1,71,92,87,-1,88,2,2,2,91,91,91,60,61,63,85,-1,58,74,73,70,76,77,81,81,81,81,-1,83,-1,82,82,82,82,82,82,47,82,82,82,15,82,82,82,82,82,82,24,82,30,14,82,82,82,82,82,82,82,32,82,82,82,82,82,82,82,82,82,82,82,82,92,90,-1,89,92,2,86,91,62,78,-1,83,83,83,83,-1,-1,-1,82,82,31,82,82,82,82,82,9,82,82,82,29,10,82,82,82,40,82,82,82,82,39,33,82,82,82,82,82,82,82,82,82,82,82,82,82,82,18,82,82,92,86,-1,-1,93,82,82,82,82,82,82,26,8,82,82,82,12,82,82,82,82,28,82,46,41,82,82,82,82,82,82,43,82,25,44,11,82,82,82,-1,37,82,82,36,5,82,82,45,82,82,82,49,50,82,82,82,82,82,82,13,82,42,82,27,82,-1,82,38,82,20,4,82,19,82,3,82,82,82,82,82,34,82,82,-1,82,82,82,23,82,3,22,82,82,82,82,-1,6,35,82,48,82,16,82,17,51,7,21,8
 };
 
 static int parser_action_row1[] = {
        4,
 };
 
 static int parser_action_row1[] = {
        4,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       92, 1, 0
+       93, 1, 0
 };
 static int parser_action_row2[] = {
        1,
 };
 static int parser_action_row2[] = {
        1,
-       -1, 1, 864
+       -1, 1, 1288
 };
 static int parser_action_row3[] = {
        1,
 };
 static int parser_action_row3[] = {
        1,
-       -1, 1, 862
+       -1, 1, 1286
 };
 static int parser_action_row4[] = {
        2,
        -1, 3, 3,
 };
 static int parser_action_row4[] = {
        2,
        -1, 3, 3,
-       92, 2, -1
+       93, 2, -1
 };
 static int parser_action_row5[] = {
        4,
 };
 static int parser_action_row5[] = {
        4,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       92, 1, 1
+       93, 1, 1
 };
 static int parser_action_row6[] = {
        1,
 };
 static int parser_action_row6[] = {
        1,
-       -1, 1, 832
+       -1, 1, 1250
 };
 static int parser_action_row7[] = {
        1,
 };
 static int parser_action_row7[] = {
        1,
@@ -1824,24 +1826,24 @@ static int parser_action_row7[] = {
 };
 static int parser_action_row8[] = {
        1,
 };
 static int parser_action_row8[] = {
        1,
-       -1, 1, 67
+       -1, 1, 69
 };
 static int parser_action_row9[] = {
        1,
 };
 static int parser_action_row9[] = {
        1,
-       -1, 1, 836
+       -1, 1, 1254
 };
 static int parser_action_row10[] = {
        1,
 };
 static int parser_action_row10[] = {
        1,
-       -1, 1, 834
+       -1, 1, 1252
 };
 static int parser_action_row11[] = {
        2,
 };
 static int parser_action_row11[] = {
        2,
-       -1, 1, 532,
-       92, 1, 68
+       -1, 1, 657,
+       93, 1, 70
 };
 static int parser_action_row12[] = {
        37,
 };
 static int parser_action_row12[] = {
        37,
-       -1, 1, 258,
+       -1, 1, 331,
        2, 0, 27,
        11, 0, 28,
        12, 0, 29,
        2, 0, 27,
        11, 0, 28,
        12, 0, 29,
@@ -1869,24 +1871,24 @@ static int parser_action_row12[] = {
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
-       79, 0, 54,
-       80, 0, 55,
-       81, 0, 56,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61,
-       91, 0, 62
+       80, 0, 54,
+       81, 0, 55,
+       82, 0, 56,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61,
+       92, 0, 62
 };
 static int parser_action_row13[] = {
        2,
 };
 static int parser_action_row13[] = {
        2,
-       -1, 1, 530,
+       -1, 1, 655,
        1, 0, 2
 };
 static int parser_action_row14[] = {
        1,
        1, 0, 2
 };
 static int parser_action_row14[] = {
        1,
-       -1, 1, 838
+       -1, 1, 1256
 };
 static int parser_action_row15[] = {
        3,
 };
 static int parser_action_row15[] = {
        3,
@@ -1896,41 +1898,41 @@ static int parser_action_row15[] = {
 };
 static int parser_action_row16[] = {
        4,
 };
 static int parser_action_row16[] = {
        4,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       92, 1, 2
+       93, 1, 2
 };
 static int parser_action_row17[] = {
        4,
 };
 static int parser_action_row17[] = {
        4,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       92, 1, 4
+       93, 1, 4
 };
 static int parser_action_row18[] = {
        4,
 };
 static int parser_action_row18[] = {
        4,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       92, 1, 8
+       93, 1, 8
 };
 static int parser_action_row19[] = {
        4,
 };
 static int parser_action_row19[] = {
        4,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       92, 1, 16
+       93, 1, 16
 };
 static int parser_action_row20[] = {
        3,
 };
 static int parser_action_row20[] = {
        3,
-       -1, 1, 528,
+       -1, 1, 653,
        0, 0, 1,
        1, 0, 107
 };
 static int parser_action_row21[] = {
        2,
        0, 0, 1,
        1, 0, 107
 };
 static int parser_action_row21[] = {
        2,
-       -1, 1, 535,
+       -1, 1, 660,
        0, 0, 109
 };
 static int parser_action_row22[] = {
        0, 0, 109
 };
 static int parser_action_row22[] = {
@@ -1939,7 +1941,7 @@ static int parser_action_row22[] = {
 };
 static int parser_action_row23[] = {
        36,
 };
 static int parser_action_row23[] = {
        36,
-       -1, 1, 258,
+       -1, 1, 331,
        11, 0, 28,
        12, 0, 29,
        14, 0, 30,
        11, 0, 28,
        12, 0, 29,
        14, 0, 30,
@@ -1966,53 +1968,53 @@ static int parser_action_row23[] = {
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
-       79, 0, 54,
-       80, 0, 55,
-       81, 0, 56,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61,
-       91, 0, 62
+       80, 0, 54,
+       81, 0, 55,
+       82, 0, 56,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61,
+       92, 0, 62
 };
 static int parser_action_row24[] = {
        4,
 };
 static int parser_action_row24[] = {
        4,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       92, 1, 3
+       93, 1, 3
 };
 static int parser_action_row25[] = {
        4,
 };
 static int parser_action_row25[] = {
        4,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       92, 1, 5
+       93, 1, 5
 };
 static int parser_action_row26[] = {
        4,
 };
 static int parser_action_row26[] = {
        4,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       92, 1, 9
+       93, 1, 9
 };
 static int parser_action_row27[] = {
        4,
 };
 static int parser_action_row27[] = {
        4,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       92, 1, 17
+       93, 1, 17
 };
 static int parser_action_row28[] = {
        3,
 };
 static int parser_action_row28[] = {
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row29[] = {
        24,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row29[] = {
        24,
-       -1, 1, 510,
+       -1, 1, 635,
        11, 0, 122,
        23, 0, 123,
        32, 0, 124,
        11, 0, 122,
        23, 0, 123,
        32, 0, 124,
@@ -2025,21 +2027,21 @@ static int parser_action_row29[] = {
        45, 0, 131,
        48, 0, 132,
        51, 0, 133,
        45, 0, 131,
        48, 0, 132,
        51, 0, 133,
-       53, 1, 506,
-       63, 1, 506,
+       53, 1, 631,
+       63, 1, 631,
        65, 0, 134,
        65, 0, 134,
-       79, 0, 54,
-       80, 0, 135,
-       81, 0, 136,
-       82, 0, 137,
-       83, 0, 138,
-       84, 0, 139,
-       85, 0, 140,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 135,
+       82, 0, 136,
+       83, 0, 137,
+       84, 0, 138,
+       85, 0, 139,
+       86, 0, 140,
+       87, 0, 61
 };
 static int parser_action_row30[] = {
        4,
 };
 static int parser_action_row30[] = {
        4,
-       -1, 1, 258,
+       -1, 1, 331,
        20, 0, 32,
        21, 0, 33,
        22, 0, 34
        20, 0, 32,
        21, 0, 33,
        22, 0, 34
@@ -2071,47 +2073,47 @@ static int parser_action_row31[] = {
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
-       79, 0, 54,
-       80, 0, 55,
-       81, 0, 56,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 55,
+       82, 0, 56,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 static int parser_action_row32[] = {
        2,
        -1, 3, 31,
 };
 static int parser_action_row32[] = {
        2,
        -1, 3, 31,
-       80, 0, 160
+       81, 0, 160
 };
 static int parser_action_row33[] = {
        3,
 };
 static int parser_action_row33[] = {
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row34[] = {
        3,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row34[] = {
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row35[] = {
        3,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row35[] = {
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row36[] = {
        3,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row36[] = {
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row37[] = {
        3,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row37[] = {
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
@@ -2142,29 +2144,29 @@ static int parser_action_row38[] = {
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
-       79, 0, 54,
-       80, 0, 55,
-       81, 0, 56,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 55,
+       82, 0, 56,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 static int parser_action_row39[] = {
        3,
 };
 static int parser_action_row39[] = {
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row40[] = {
        2,
        -1, 3, 39,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row40[] = {
        2,
        -1, 3, 39,
-       85, 0, 169
+       86, 0, 169
 };
 static int parser_action_row41[] = {
        23,
 };
 static int parser_action_row41[] = {
        23,
-       -1, 1, 349,
+       -1, 1, 429,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -2179,18 +2181,18 @@ static int parser_action_row41[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 178,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 178,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 static int parser_action_row42[] = {
        24,
 };
 static int parser_action_row42[] = {
        24,
-       -1, 1, 356,
+       -1, 1, 436,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -2206,18 +2208,18 @@ static int parser_action_row42[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 178,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 178,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 static int parser_action_row43[] = {
        24,
 };
 static int parser_action_row43[] = {
        24,
-       -1, 1, 351,
+       -1, 1, 431,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -2233,18 +2235,18 @@ static int parser_action_row43[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 178,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 178,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 static int parser_action_row44[] = {
        1,
 };
 static int parser_action_row44[] = {
        1,
-       -1, 1, 355
+       -1, 1, 435
 };
 static int parser_action_row45[] = {
        23,
 };
 static int parser_action_row45[] = {
        23,
@@ -2263,24 +2265,24 @@ static int parser_action_row45[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 196,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 196,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 static int parser_action_row46[] = {
        3,
 };
 static int parser_action_row46[] = {
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row47[] = {
        24,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row47[] = {
        24,
-       -1, 1, 510,
+       -1, 1, 635,
        11, 0, 122,
        23, 0, 123,
        32, 0, 124,
        11, 0, 122,
        23, 0, 123,
        32, 0, 124,
@@ -2293,38 +2295,42 @@ static int parser_action_row47[] = {
        45, 0, 131,
        48, 0, 132,
        51, 0, 133,
        45, 0, 131,
        48, 0, 132,
        51, 0, 133,
-       53, 1, 506,
-       63, 1, 506,
+       53, 1, 631,
+       63, 1, 631,
        65, 0, 134,
        65, 0, 134,
-       79, 0, 54,
-       80, 0, 135,
-       81, 0, 136,
-       82, 0, 137,
-       83, 0, 138,
-       84, 0, 139,
-       85, 0, 140,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 135,
+       82, 0, 136,
+       83, 0, 137,
+       84, 0, 138,
+       85, 0, 139,
+       86, 0, 140,
+       87, 0, 61
 };
 static int parser_action_row48[] = {
 };
 static int parser_action_row48[] = {
-       1,
-       -1, 1, 485
+       2,
+       -1, 1, 572,
+       79, 0, 205
 };
 static int parser_action_row49[] = {
 };
 static int parser_action_row49[] = {
-       1,
-       -1, 1, 486
+       2,
+       -1, 1, 574,
+       79, 0, 205
 };
 static int parser_action_row50[] = {
 };
 static int parser_action_row50[] = {
-       1,
-       -1, 1, 487
+       2,
+       -1, 1, 576,
+       79, 0, 205
 };
 static int parser_action_row51[] = {
 };
 static int parser_action_row51[] = {
-       1,
-       -1, 1, 488
+       2,
+       -1, 1, 578,
+       79, 0, 205
 };
 static int parser_action_row52[] = {
        2,
        -1, 3, 51,
 };
 static int parser_action_row52[] = {
        2,
        -1, 3, 51,
-       10, 0, 205
+       10, 0, 210
 };
 static int parser_action_row53[] = {
        23,
 };
 static int parser_action_row53[] = {
        23,
@@ -2343,32 +2349,29 @@ static int parser_action_row53[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 206,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 static int parser_action_row54[] = {
        3,
 };
 static int parser_action_row54[] = {
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row55[] = {
        2,
        -1, 3, 54,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row55[] = {
        2,
        -1, 3, 54,
-       57, 0, 210
+       57, 0, 215
 };
 static int parser_action_row56[] = {
        28,
 };
 static int parser_action_row56[] = {
        28,
-       -1, 1, 506,
-       0, 1, 510,
-       1, 1, 510,
-       8, 1, 510,
+       -1, 1, 635,
        11, 0, 122,
        23, 0, 123,
        32, 0, 124,
        11, 0, 122,
        23, 0, 123,
        32, 0, 124,
@@ -2381,182 +2384,190 @@ static int parser_action_row56[] = {
        45, 0, 131,
        48, 0, 132,
        51, 0, 133,
        45, 0, 131,
        48, 0, 132,
        51, 0, 133,
-       57, 0, 211,
+       53, 1, 631,
+       57, 0, 216,
+       58, 1, 631,
+       59, 1, 631,
+       60, 1, 631,
+       63, 1, 631,
        65, 0, 134,
        65, 0, 134,
-       78, 1, 510,
-       79, 0, 54,
-       80, 0, 135,
-       81, 0, 136,
-       82, 0, 137,
-       83, 0, 138,
-       84, 0, 139,
-       85, 0, 140,
-       86, 0, 61,
-       92, 1, 510
+       80, 0, 54,
+       81, 0, 135,
+       82, 0, 136,
+       83, 0, 137,
+       84, 0, 138,
+       85, 0, 139,
+       86, 0, 140,
+       87, 0, 61
 };
 static int parser_action_row57[] = {
        4,
 };
 static int parser_action_row57[] = {
        4,
-       -1, 1, 473,
-       58, 0, 214,
-       59, 0, 215,
-       60, 0, 216
+       -1, 1, 557,
+       58, 0, 219,
+       59, 0, 220,
+       60, 0, 221
 };
 static int parser_action_row58[] = {
 };
 static int parser_action_row58[] = {
-       1,
-       -1, 1, 489
+       2,
+       -1, 1, 580,
+       79, 0, 205
 };
 static int parser_action_row59[] = {
 };
 static int parser_action_row59[] = {
-       1,
-       -1, 1, 490
+       2,
+       -1, 1, 582,
+       79, 0, 205
 };
 static int parser_action_row60[] = {
 };
 static int parser_action_row60[] = {
-       1,
-       -1, 1, 491
+       2,
+       -1, 1, 584,
+       79, 0, 205
 };
 static int parser_action_row61[] = {
 };
 static int parser_action_row61[] = {
-       1,
-       -1, 1, 492
+       2,
+       -1, 1, 586,
+       79, 0, 205
 };
 static int parser_action_row62[] = {
        1,
 };
 static int parser_action_row62[] = {
        1,
-       -1, 1, 500
+       -1, 1, 598
 };
 static int parser_action_row63[] = {
        1,
 };
 static int parser_action_row63[] = {
        1,
-       -1, 1, 325
+       -1, 1, 401
 };
 static int parser_action_row64[] = {
        8,
        -1, 3, 63,
 };
 static int parser_action_row64[] = {
        8,
        -1, 3, 63,
-       3, 0, 218,
-       4, 0, 219,
-       5, 0, 220,
-       6, 0, 221,
-       7, 0, 222,
-       9, 0, 223,
-       19, 0, 224
+       3, 0, 227,
+       4, 0, 228,
+       5, 0, 229,
+       6, 0, 230,
+       7, 0, 231,
+       9, 0, 232,
+       19, 0, 233
 };
 static int parser_action_row65[] = {
        2,
        -1, 3, 64,
 };
 static int parser_action_row65[] = {
        2,
        -1, 3, 64,
-       91, 0, 226
+       92, 0, 235
 };
 static int parser_action_row66[] = {
        1,
 };
 static int parser_action_row66[] = {
        1,
-       -1, 1, 327
+       -1, 1, 403
 };
 static int parser_action_row67[] = {
        1,
 };
 static int parser_action_row67[] = {
        1,
-       -1, 1, 69
+       -1, 1, 71
 };
 static int parser_action_row68[] = {
        1,
 };
 static int parser_action_row68[] = {
        1,
-       -1, 1, 70
+       -1, 1, 72
 };
 static int parser_action_row69[] = {
        3,
 };
 static int parser_action_row69[] = {
        3,
-       -1, 1, 340,
+       -1, 1, 420,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row70[] = {
        1,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row70[] = {
        1,
-       -1, 1, 347
+       -1, 1, 427
 };
 static int parser_action_row71[] = {
        1,
 };
 static int parser_action_row71[] = {
        1,
-       -1, 1, 348
+       -1, 1, 428
 };
 static int parser_action_row72[] = {
        1,
 };
 static int parser_action_row72[] = {
        1,
-       -1, 1, 360
+       -1, 1, 440
 };
 static int parser_action_row73[] = {
        1,
 };
 static int parser_action_row73[] = {
        1,
-       -1, 1, 361
+       -1, 1, 441
 };
 static int parser_action_row74[] = {
        1,
 };
 static int parser_action_row74[] = {
        1,
-       -1, 1, 363
+       -1, 1, 443
 };
 static int parser_action_row75[] = {
        1,
 };
 static int parser_action_row75[] = {
        1,
-       -1, 1, 362
+       -1, 1, 442
 };
 static int parser_action_row76[] = {
        1,
 };
 static int parser_action_row76[] = {
        1,
-       -1, 1, 364
+       -1, 1, 444
 };
 static int parser_action_row77[] = {
        1,
 };
 static int parser_action_row77[] = {
        1,
-       -1, 1, 365
+       -1, 1, 445
 };
 static int parser_action_row78[] = {
        3,
        -1, 3, 77,
 };
 static int parser_action_row78[] = {
        3,
        -1, 3, 77,
-       53, 0, 230,
-       63, 0, 231
+       53, 0, 239,
+       63, 0, 240
 };
 static int parser_action_row79[] = {
        1,
 };
 static int parser_action_row79[] = {
        1,
-       -1, 1, 493
+       -1, 1, 588
 };
 static int parser_action_row80[] = {
        3,
        -1, 3, 79,
 };
 static int parser_action_row80[] = {
        3,
        -1, 3, 79,
-       87, 0, 233,
-       88, 0, 234
+       88, 0, 242,
+       89, 0, 243
 };
 static int parser_action_row81[] = {
        3,
 };
 static int parser_action_row81[] = {
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row82[] = {
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row82[] = {
-       1,
-       -1, 1, 484
+       2,
+       -1, 1, 570,
+       79, 0, 205
 };
 static int parser_action_row83[] = {
        2,
        -1, 3, 82,
 };
 static int parser_action_row83[] = {
        2,
        -1, 3, 82,
-       41, 0, 240
+       41, 0, 250
 };
 static int parser_action_row84[] = {
        1,
 };
 static int parser_action_row84[] = {
        1,
-       -1, 1, 860
+       -1, 1, 1284
 };
 static int parser_action_row85[] = {
        1,
 };
 static int parser_action_row85[] = {
        1,
-       -1, 1, 521
+       -1, 1, 646
 };
 static int parser_action_row86[] = {
        3,
 };
 static int parser_action_row86[] = {
        3,
-       -1, 1, 523,
-       79, 0, 54,
-       80, 0, 241
+       -1, 1, 648,
+       80, 0, 54,
+       81, 0, 251
 };
 static int parser_action_row87[] = {
        3,
 };
 static int parser_action_row87[] = {
        3,
-       -1, 1, 529,
+       -1, 1, 654,
        0, 0, 1,
        1, 0, 107
 };
 static int parser_action_row88[] = {
        1,
        0, 0, 1,
        1, 0, 107
 };
 static int parser_action_row88[] = {
        1,
-       -1, 1, 527
+       -1, 1, 652
 };
 static int parser_action_row89[] = {
        1,
 };
 static int parser_action_row89[] = {
        1,
-       -1, 1, 526
+       -1, 1, 651
 };
 static int parser_action_row90[] = {
        1,
 };
 static int parser_action_row90[] = {
        1,
-       -1, 1, 536
+       -1, 1, 661
 };
 static int parser_action_row91[] = {
        1,
 };
 static int parser_action_row91[] = {
        1,
-       -1, 1, 833
+       -1, 1, 1251
 };
 static int parser_action_row92[] = {
        1,
 };
 static int parser_action_row92[] = {
        1,
@@ -2564,24 +2575,24 @@ static int parser_action_row92[] = {
 };
 static int parser_action_row93[] = {
        4,
 };
 static int parser_action_row93[] = {
        4,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       92, 1, 6
+       93, 1, 6
 };
 static int parser_action_row94[] = {
        4,
 };
 static int parser_action_row94[] = {
        4,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       92, 1, 10
+       93, 1, 10
 };
 static int parser_action_row95[] = {
        4,
 };
 static int parser_action_row95[] = {
        4,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       92, 1, 18
+       93, 1, 18
 };
 static int parser_action_row96[] = {
        1,
 };
 static int parser_action_row96[] = {
        1,
@@ -2589,11 +2600,11 @@ static int parser_action_row96[] = {
 };
 static int parser_action_row97[] = {
        1,
 };
 static int parser_action_row97[] = {
        1,
-       -1, 1, 835
+       -1, 1, 1253
 };
 static int parser_action_row98[] = {
        36,
 };
 static int parser_action_row98[] = {
        36,
-       -1, 1, 258,
+       -1, 1, 331,
        11, 0, 28,
        12, 0, 29,
        14, 0, 30,
        11, 0, 28,
        12, 0, 29,
        14, 0, 30,
@@ -2620,29 +2631,29 @@ static int parser_action_row98[] = {
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
-       79, 0, 54,
-       80, 0, 55,
-       81, 0, 56,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61,
-       91, 0, 62
+       80, 0, 54,
+       81, 0, 55,
+       82, 0, 56,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61,
+       92, 0, 62
 };
 static int parser_action_row99[] = {
        4,
 };
 static int parser_action_row99[] = {
        4,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       92, 1, 12
+       93, 1, 12
 };
 static int parser_action_row100[] = {
        4,
 };
 static int parser_action_row100[] = {
        4,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       92, 1, 20
+       93, 1, 20
 };
 static int parser_action_row101[] = {
        1,
 };
 static int parser_action_row101[] = {
        1,
@@ -2650,11 +2661,11 @@ static int parser_action_row101[] = {
 };
 static int parser_action_row102[] = {
        1,
 };
 static int parser_action_row102[] = {
        1,
-       -1, 1, 837
+       -1, 1, 1255
 };
 static int parser_action_row103[] = {
        34,
 };
 static int parser_action_row103[] = {
        34,
-       -1, 1, 258,
+       -1, 1, 331,
        11, 0, 28,
        12, 0, 29,
        14, 0, 30,
        11, 0, 28,
        12, 0, 29,
        14, 0, 30,
@@ -2680,21 +2691,21 @@ static int parser_action_row103[] = {
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
-       79, 0, 54,
-       80, 0, 55,
-       81, 0, 56,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 55,
+       82, 0, 56,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 static int parser_action_row104[] = {
        4,
 };
 static int parser_action_row104[] = {
        4,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       92, 1, 24
+       93, 1, 24
 };
 static int parser_action_row105[] = {
        1,
 };
 static int parser_action_row105[] = {
        1,
@@ -2702,9 +2713,9 @@ static int parser_action_row105[] = {
 };
 static int parser_action_row106[] = {
        34,
 };
 static int parser_action_row106[] = {
        34,
-       -1, 1, 258,
+       -1, 1, 331,
        11, 0, 28,
        11, 0, 28,
-       12, 0, 256,
+       12, 0, 266,
        14, 0, 30,
        17, 0, 31,
        20, 0, 32,
        14, 0, 30,
        17, 0, 31,
        20, 0, 32,
@@ -2728,31 +2739,31 @@ static int parser_action_row106[] = {
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
-       79, 0, 54,
-       80, 0, 55,
-       81, 0, 56,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 55,
+       82, 0, 56,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 static int parser_action_row107[] = {
        1,
 };
 static int parser_action_row107[] = {
        1,
-       -1, 1, 839
+       -1, 1, 1257
 };
 static int parser_action_row108[] = {
        1,
 };
 static int parser_action_row108[] = {
        1,
-       -1, 1, 863
+       -1, 1, 1287
 };
 static int parser_action_row109[] = {
        2,
 };
 static int parser_action_row109[] = {
        2,
-       -1, 1, 533,
+       -1, 1, 658,
        0, 0, 109
 };
 static int parser_action_row110[] = {
        1,
        0, 0, 109
 };
 static int parser_action_row110[] = {
        1,
-       -1, 1, 865
+       -1, 1, 1289
 };
 static int parser_action_row111[] = {
        1,
 };
 static int parser_action_row111[] = {
        1,
@@ -2760,24 +2771,24 @@ static int parser_action_row111[] = {
 };
 static int parser_action_row112[] = {
        4,
 };
 static int parser_action_row112[] = {
        4,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       92, 1, 7
+       93, 1, 7
 };
 static int parser_action_row113[] = {
        4,
 };
 static int parser_action_row113[] = {
        4,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       92, 1, 11
+       93, 1, 11
 };
 static int parser_action_row114[] = {
        4,
 };
 static int parser_action_row114[] = {
        4,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       92, 1, 19
+       93, 1, 19
 };
 static int parser_action_row115[] = {
        1,
 };
 static int parser_action_row115[] = {
        1,
@@ -2785,17 +2796,17 @@ static int parser_action_row115[] = {
 };
 static int parser_action_row116[] = {
        4,
 };
 static int parser_action_row116[] = {
        4,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       92, 1, 13
+       93, 1, 13
 };
 static int parser_action_row117[] = {
        4,
 };
 static int parser_action_row117[] = {
        4,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       92, 1, 21
+       93, 1, 21
 };
 static int parser_action_row118[] = {
        1,
 };
 static int parser_action_row118[] = {
        1,
@@ -2803,10 +2814,10 @@ static int parser_action_row118[] = {
 };
 static int parser_action_row119[] = {
        4,
 };
 static int parser_action_row119[] = {
        4,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       92, 1, 25
+       93, 1, 25
 };
 static int parser_action_row120[] = {
        1,
 };
 static int parser_action_row120[] = {
        1,
@@ -2814,221 +2825,229 @@ static int parser_action_row120[] = {
 };
 static int parser_action_row121[] = {
        1,
 };
 static int parser_action_row121[] = {
        1,
-       -1, 1, 532
+       -1, 1, 657
 };
 static int parser_action_row122[] = {
        3,
        -1, 3, 121,
 };
 static int parser_action_row122[] = {
        3,
        -1, 3, 121,
-       57, 0, 268,
-       80, 0, 269
+       57, 0, 278,
+       81, 0, 279
 };
 static int parser_action_row123[] = {
        2,
 };
 static int parser_action_row123[] = {
        2,
-       -1, 1, 506,
-       51, 0, 272
+       -1, 1, 631,
+       51, 0, 282
 };
 static int parser_action_row124[] = {
        3,
 };
 static int parser_action_row124[] = {
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row125[] = {
        3,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row125[] = {
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row126[] = {
        3,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row126[] = {
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row127[] = {
        3,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row127[] = {
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row128[] = {
        2,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row128[] = {
        2,
-       -1, 1, 506,
-       51, 0, 272
+       -1, 1, 631,
+       51, 0, 282
 };
 static int parser_action_row129[] = {
 };
 static int parser_action_row129[] = {
-       1,
-       -1, 1, 760
+       2,
+       -1, 1, 864,
+       79, 0, 205
 };
 static int parser_action_row130[] = {
 };
 static int parser_action_row130[] = {
-       1,
-       -1, 1, 761
+       2,
+       -1, 1, 866,
+       79, 0, 205
 };
 static int parser_action_row131[] = {
 };
 static int parser_action_row131[] = {
-       1,
-       -1, 1, 762
+       2,
+       -1, 1, 868,
+       79, 0, 205
 };
 static int parser_action_row132[] = {
 };
 static int parser_action_row132[] = {
-       1,
-       -1, 1, 763
+       2,
+       -1, 1, 870,
+       79, 0, 205
 };
 static int parser_action_row133[] = {
        16,
        -1, 3, 132,
        11, 0, 122,
 };
 static int parser_action_row133[] = {
        16,
        -1, 3, 132,
        11, 0, 122,
-       38, 0, 279,
+       38, 0, 293,
        41, 0, 127,
        42, 0, 128,
        43, 0, 129,
        44, 0, 130,
        45, 0, 131,
        41, 0, 127,
        42, 0, 128,
        43, 0, 129,
        44, 0, 130,
        45, 0, 131,
-       79, 0, 54,
-       80, 0, 135,
-       81, 0, 280,
-       82, 0, 137,
-       83, 0, 138,
-       84, 0, 139,
-       85, 0, 140,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 135,
+       82, 0, 294,
+       83, 0, 137,
+       84, 0, 138,
+       85, 0, 139,
+       86, 0, 140,
+       87, 0, 61
 };
 static int parser_action_row134[] = {
        3,
 };
 static int parser_action_row134[] = {
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row135[] = {
        3,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row135[] = {
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row136[] = {
        3,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row136[] = {
        3,
-       -1, 1, 506,
-       51, 0, 272,
-       57, 0, 211
+       -1, 1, 631,
+       51, 0, 282,
+       57, 0, 216
 };
 static int parser_action_row137[] = {
        1,
 };
 static int parser_action_row137[] = {
        1,
-       -1, 1, 751
+       -1, 1, 855
 };
 static int parser_action_row138[] = {
 };
 static int parser_action_row138[] = {
-       1,
-       -1, 1, 764
+       2,
+       -1, 1, 872,
+       79, 0, 205
 };
 static int parser_action_row139[] = {
 };
 static int parser_action_row139[] = {
-       1,
-       -1, 1, 765
+       2,
+       -1, 1, 874,
+       79, 0, 205
 };
 static int parser_action_row140[] = {
 };
 static int parser_action_row140[] = {
-       1,
-       -1, 1, 766
+       2,
+       -1, 1, 876,
+       79, 0, 205
 };
 static int parser_action_row141[] = {
 };
 static int parser_action_row141[] = {
-       1,
-       -1, 1, 767
+       2,
+       -1, 1, 878,
+       79, 0, 205
 };
 static int parser_action_row142[] = {
        1,
 };
 static int parser_action_row142[] = {
        1,
-       -1, 1, 768
+       -1, 1, 880
 };
 static int parser_action_row143[] = {
        1,
 };
 static int parser_action_row143[] = {
        1,
-       -1, 1, 479
+       -1, 1, 563
 };
 static int parser_action_row144[] = {
        1,
 };
 static int parser_action_row144[] = {
        1,
-       -1, 1, 373
+       -1, 1, 453
 };
 static int parser_action_row145[] = {
        2,
        -1, 3, 144,
 };
 static int parser_action_row145[] = {
        2,
        -1, 3, 144,
-       41, 0, 285
+       41, 0, 303
 };
 static int parser_action_row146[] = {
        1,
 };
 static int parser_action_row146[] = {
        1,
-       -1, 1, 508
+       -1, 1, 633
 };
 static int parser_action_row147[] = {
        3,
 };
 static int parser_action_row147[] = {
        3,
-       -1, 1, 716,
-       30, 0, 286,
-       31, 0, 287
+       -1, 1, 820,
+       30, 0, 304,
+       31, 0, 305
 };
 static int parser_action_row148[] = {
        1,
 };
 static int parser_action_row148[] = {
        1,
-       -1, 1, 718
+       -1, 1, 822
 };
 static int parser_action_row149[] = {
        3,
 };
 static int parser_action_row149[] = {
        3,
-       -1, 1, 722,
-       73, 0, 288,
-       76, 0, 289
+       -1, 1, 826,
+       73, 0, 306,
+       76, 0, 307
 };
 static int parser_action_row150[] = {
        12,
 };
 static int parser_action_row150[] = {
        12,
-       -1, 1, 724,
-       13, 0, 290,
-       39, 0, 291,
-       64, 0, 292,
-       65, 0, 293,
-       69, 0, 294,
-       70, 0, 295,
-       71, 0, 296,
-       72, 0, 297,
-       74, 0, 298,
-       75, 0, 299,
-       77, 0, 300
+       -1, 1, 828,
+       13, 0, 308,
+       39, 0, 309,
+       64, 0, 310,
+       65, 0, 311,
+       69, 0, 312,
+       70, 0, 313,
+       71, 0, 314,
+       72, 0, 315,
+       74, 0, 316,
+       75, 0, 317,
+       77, 0, 318
 };
 static int parser_action_row151[] = {
        4,
 };
 static int parser_action_row151[] = {
        4,
-       -1, 1, 736,
-       66, 0, 301,
-       67, 0, 302,
-       68, 0, 303
+       -1, 1, 840,
+       66, 0, 319,
+       67, 0, 320,
+       68, 0, 321
 };
 static int parser_action_row152[] = {
        1,
 };
 static int parser_action_row152[] = {
        1,
-       -1, 1, 739
+       -1, 1, 843
 };
 static int parser_action_row153[] = {
        1,
 };
 static int parser_action_row153[] = {
        1,
-       -1, 1, 743
+       -1, 1, 847
 };
 static int parser_action_row154[] = {
        3,
 };
 static int parser_action_row154[] = {
        3,
-       -1, 1, 746,
-       53, 0, 230,
-       63, 0, 304
+       -1, 1, 850,
+       53, 0, 239,
+       63, 0, 322
 };
 static int parser_action_row155[] = {
        7,
        -1, 3, 154,
 };
 static int parser_action_row155[] = {
        7,
        -1, 3, 154,
-       4, 0, 219,
-       5, 0, 220,
-       6, 0, 221,
-       7, 0, 222,
-       9, 0, 306,
-       19, 0, 224
+       4, 0, 228,
+       5, 0, 229,
+       6, 0, 230,
+       7, 0, 231,
+       9, 0, 324,
+       19, 0, 233
 };
 static int parser_action_row156[] = {
        2,
 };
 static int parser_action_row156[] = {
        2,
-       -1, 1, 338,
-       49, 1, 709
+       -1, 1, 418,
+       49, 1, 1087
 };
 static int parser_action_row157[] = {
        1,
 };
 static int parser_action_row157[] = {
        1,
-       -1, 1, 413
+       -1, 1, 497
 };
 static int parser_action_row158[] = {
        1,
 };
 static int parser_action_row158[] = {
        1,
-       -1, 1, 339
+       -1, 1, 419
 };
 static int parser_action_row159[] = {
        31,
        -1, 3, 158,
 };
 static int parser_action_row159[] = {
        31,
        -1, 3, 158,
-       8, 0, 308,
+       8, 0, 326,
        11, 0, 28,
        14, 0, 30,
        17, 0, 31,
        11, 0, 28,
        14, 0, 30,
        17, 0, 31,
@@ -3050,14 +3069,14 @@ static int parser_action_row159[] = {
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
-       79, 0, 54,
-       80, 0, 55,
-       81, 0, 56,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 55,
+       82, 0, 56,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 static int parser_action_row160[] = {
        2,
 };
 static int parser_action_row160[] = {
        2,
@@ -3065,22 +3084,23 @@ static int parser_action_row160[] = {
        49, 0, 191
 };
 static int parser_action_row161[] = {
        49, 0, 191
 };
 static int parser_action_row161[] = {
-       3,
-       -1, 1, 396,
-       56, 0, 312,
-       58, 0, 313
+       4,
+       -1, 1, 476,
+       56, 0, 330,
+       58, 0, 331,
+       79, 0, 205
 };
 static int parser_action_row162[] = {
        1,
 };
 static int parser_action_row162[] = {
        1,
-       -1, 1, 260
+       -1, 1, 333
 };
 static int parser_action_row163[] = {
        1,
 };
 static int parser_action_row163[] = {
        1,
-       -1, 1, 259
+       -1, 1, 332
 };
 static int parser_action_row164[] = {
        1,
 };
 static int parser_action_row164[] = {
        1,
-       -1, 1, 261
+       -1, 1, 334
 };
 static int parser_action_row165[] = {
        23,
 };
 static int parser_action_row165[] = {
        23,
@@ -3099,14 +3119,14 @@ static int parser_action_row165[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 206,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 static int parser_action_row166[] = {
        23,
 };
 static int parser_action_row166[] = {
        23,
@@ -3125,18 +3145,18 @@ static int parser_action_row166[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 206,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 static int parser_action_row167[] = {
        1,
 };
 static int parser_action_row167[] = {
        1,
-       -1, 1, 422
+       -1, 1, 506
 };
 static int parser_action_row168[] = {
        2,
 };
 static int parser_action_row168[] = {
        2,
@@ -3146,46 +3166,46 @@ static int parser_action_row168[] = {
 static int parser_action_row169[] = {
        3,
        -1, 3, 168,
 static int parser_action_row169[] = {
        3,
        -1, 3, 168,
-       51, 0, 318,
-       80, 0, 319
+       51, 0, 337,
+       81, 0, 338
 };
 static int parser_action_row170[] = {
        1,
 };
 static int parser_action_row170[] = {
        1,
-       -1, 1, 324
+       -1, 1, 400
 };
 static int parser_action_row171[] = {
        2,
 };
 static int parser_action_row171[] = {
        2,
-       -1, 1, 506,
-       51, 0, 272
+       -1, 1, 631,
+       51, 0, 282
 };
 static int parser_action_row172[] = {
        3,
 };
 static int parser_action_row172[] = {
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row173[] = {
        3,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row173[] = {
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row174[] = {
        3,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row174[] = {
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row175[] = {
        3,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row175[] = {
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row176[] = {
        2,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row176[] = {
        2,
-       -1, 1, 506,
-       51, 0, 272
+       -1, 1, 631,
+       51, 0, 282
 };
 static int parser_action_row177[] = {
        18,
 };
 static int parser_action_row177[] = {
        18,
@@ -3199,104 +3219,104 @@ static int parser_action_row177[] = {
        45, 0, 50,
        51, 0, 52,
        53, 0, 53,
        45, 0, 50,
        51, 0, 52,
        53, 0, 53,
-       79, 0, 54,
-       80, 0, 206,
-       81, 0, 325,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 344,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 static int parser_action_row178[] = {
        3,
 };
 static int parser_action_row178[] = {
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row179[] = {
        3,
        0, 0, 1,
        1, 0, 2
 };
 static int parser_action_row179[] = {
        3,
-       -1, 1, 506,
-       51, 0, 272,
-       57, 0, 211
+       -1, 1, 631,
+       51, 0, 282,
+       57, 0, 216
 };
 static int parser_action_row180[] = {
        1,
 };
 static int parser_action_row180[] = {
        1,
-       -1, 1, 473
+       -1, 1, 557
 };
 static int parser_action_row181[] = {
        1,
 };
 static int parser_action_row181[] = {
        1,
-       -1, 1, 350
+       -1, 1, 430
 };
 static int parser_action_row182[] = {
        1,
 };
 static int parser_action_row182[] = {
        1,
-       -1, 1, 434
+       -1, 1, 518
 };
 static int parser_action_row183[] = {
        3,
 };
 static int parser_action_row183[] = {
        3,
-       -1, 1, 438,
-       30, 0, 329,
-       31, 0, 330
+       -1, 1, 522,
+       30, 0, 348,
+       31, 0, 349
 };
 static int parser_action_row184[] = {
        1,
 };
 static int parser_action_row184[] = {
        1,
-       -1, 1, 440
+       -1, 1, 524
 };
 static int parser_action_row185[] = {
        3,
 };
 static int parser_action_row185[] = {
        3,
-       -1, 1, 444,
-       73, 0, 331,
-       76, 0, 332
+       -1, 1, 528,
+       73, 0, 350,
+       76, 0, 351
 };
 static int parser_action_row186[] = {
        12,
 };
 static int parser_action_row186[] = {
        12,
-       -1, 1, 446,
-       13, 0, 333,
-       39, 0, 334,
-       64, 0, 335,
-       65, 0, 336,
-       69, 0, 337,
-       70, 0, 338,
-       71, 0, 339,
-       72, 0, 340,
-       74, 0, 341,
-       75, 0, 342,
-       77, 0, 343
+       -1, 1, 530,
+       13, 0, 352,
+       39, 0, 353,
+       64, 0, 354,
+       65, 0, 355,
+       69, 0, 356,
+       70, 0, 357,
+       71, 0, 358,
+       72, 0, 359,
+       74, 0, 360,
+       75, 0, 361,
+       77, 0, 362
 };
 static int parser_action_row187[] = {
        4,
 };
 static int parser_action_row187[] = {
        4,
-       -1, 1, 458,
-       66, 0, 344,
-       67, 0, 345,
-       68, 0, 346
+       -1, 1, 542,
+       66, 0, 363,
+       67, 0, 364,
+       68, 0, 365
 };
 static int parser_action_row188[] = {
        1,
 };
 static int parser_action_row188[] = {
        1,
-       -1, 1, 461
+       -1, 1, 545
 };
 static int parser_action_row189[] = {
        1,
 };
 static int parser_action_row189[] = {
        1,
-       -1, 1, 465
+       -1, 1, 549
 };
 static int parser_action_row190[] = {
        3,
 };
 static int parser_action_row190[] = {
        3,
-       -1, 1, 468,
-       53, 0, 230,
-       63, 0, 347
+       -1, 1, 552,
+       53, 0, 239,
+       63, 0, 366
 };
 static int parser_action_row191[] = {
        2,
        -1, 3, 190,
 };
 static int parser_action_row191[] = {
        2,
        -1, 3, 190,
-       41, 0, 349
+       41, 0, 368
 };
 static int parser_action_row192[] = {
        2,
        -1, 3, 191,
 };
 static int parser_action_row192[] = {
        2,
        -1, 3, 191,
-       80, 0, 350
+       81, 0, 369
 };
 static int parser_action_row193[] = {
        23,
 };
 static int parser_action_row193[] = {
        23,
-       -1, 1, 357,
+       -1, 1, 437,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -3311,22 +3331,22 @@ static int parser_action_row193[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 178,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 178,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 static int parser_action_row194[] = {
        1,
 };
 static int parser_action_row194[] = {
        1,
-       -1, 1, 358
+       -1, 1, 438
 };
 static int parser_action_row195[] = {
        23,
 };
 static int parser_action_row195[] = {
        23,
-       -1, 1, 352,
+       -1, 1, 432,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -3341,25 +3361,25 @@ static int parser_action_row195[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 178,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 178,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 static int parser_action_row196[] = {
        1,
 };
 static int parser_action_row196[] = {
        1,
-       -1, 1, 353
+       -1, 1, 433
 };
 static int parser_action_row197[] = {
        4,
 };
 static int parser_action_row197[] = {
        4,
-       -1, 1, 506,
-       51, 0, 272,
-       56, 0, 353,
-       57, 0, 211
+       -1, 1, 631,
+       51, 0, 282,
+       56, 0, 372,
+       57, 0, 216
 };
 static int parser_action_row198[] = {
        23,
 };
 static int parser_action_row198[] = {
        23,
@@ -3378,75 +3398,100 @@ static int parser_action_row198[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 355,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 374,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 static int parser_action_row199[] = {
        1,
 };
 static int parser_action_row199[] = {
        1,
-       -1, 1, 431
+       -1, 1, 515
 };
 static int parser_action_row200[] = {
        2,
 };
 static int parser_action_row200[] = {
        2,
-       -1, 1, 434,
-       25, 1, 700
+       -1, 1, 518,
+       25, 1, 1034
 };
 static int parser_action_row201[] = {
        3,
 };
 static int parser_action_row201[] = {
        3,
-       -1, 1, 468,
-       53, 0, 230,
-       63, 0, 358
+       -1, 1, 552,
+       53, 0, 239,
+       63, 0, 377
 };
 static int parser_action_row202[] = {
        2,
        -1, 3, 201,
 };
 static int parser_action_row202[] = {
        2,
        -1, 3, 201,
-       25, 0, 360
+       25, 0, 379
 };
 static int parser_action_row203[] = {
        3,
        -1, 3, 202,
 };
 static int parser_action_row203[] = {
        3,
        -1, 3, 202,
-       47, 0, 361,
-       79, 0, 362
+       47, 0, 380,
+       80, 0, 381
 };
 static int parser_action_row204[] = {
        1,
 };
 static int parser_action_row204[] = {
        1,
-       -1, 1, 476
+       -1, 1, 560
 };
 static int parser_action_row205[] = {
        1,
 };
 static int parser_action_row205[] = {
        1,
-       -1, 1, 370
+       -1, 1, 450
 };
 static int parser_action_row206[] = {
 };
 static int parser_action_row206[] = {
-       3,
+       6,
        -1, 3, 205,
        -1, 3, 205,
-       47, 0, 361,
-       79, 0, 362
+       3, 0, 383,
+       15, 0, 384,
+       16, 0, 385,
+       51, 0, 386,
+       81, 0, 387
 };
 static int parser_action_row207[] = {
 };
 static int parser_action_row207[] = {
-       3,
-       -1, 1, 506,
-       51, 0, 272,
-       57, 0, 211
+       1,
+       -1, 1, 573
 };
 static int parser_action_row208[] = {
 };
 static int parser_action_row208[] = {
-       2,
-       -1, 3, 207,
-       52, 0, 366
+       1,
+       -1, 1, 575
 };
 static int parser_action_row209[] = {
 };
 static int parser_action_row209[] = {
-       3,
-       -1, 1, 468,
-       53, 0, 230,
-       63, 0, 367
+       1,
+       -1, 1, 577
 };
 static int parser_action_row210[] = {
 };
 static int parser_action_row210[] = {
+       1,
+       -1, 1, 579
+};
+static int parser_action_row211[] = {
+       3,
+       -1, 3, 210,
+       47, 0, 390,
+       80, 0, 391
+};
+static int parser_action_row212[] = {
+       3,
+       -1, 1, 631,
+       51, 0, 282,
+       57, 0, 216
+};
+static int parser_action_row213[] = {
+       2,
+       -1, 3, 212,
+       52, 0, 394
+};
+static int parser_action_row214[] = {
+       3,
+       -1, 1, 552,
+       53, 0, 239,
+       63, 0, 395
+};
+static int parser_action_row215[] = {
        23,
        23,
-       -1, 3, 209,
+       -1, 3, 214,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -3461,42 +3506,42 @@ static int parser_action_row210[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 206,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row211[] = {
+static int parser_action_row216[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row212[] = {
+static int parser_action_row217[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row213[] = {
+static int parser_action_row218[] = {
        4,
        4,
-       -1, 1, 475,
-       58, 0, 373,
-       59, 0, 215,
-       60, 0, 216
+       -1, 1, 559,
+       58, 0, 401,
+       59, 0, 220,
+       60, 0, 221
 };
 };
-static int parser_action_row214[] = {
+static int parser_action_row219[] = {
        2,
        2,
-       -1, 1, 367,
-       78, 0, 375
+       -1, 1, 447,
+       78, 0, 403
 };
 };
-static int parser_action_row215[] = {
+static int parser_action_row220[] = {
        23,
        23,
-       -1, 3, 214,
+       -1, 3, 219,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -3511,26 +3556,26 @@ static int parser_action_row215[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 178,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 178,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row216[] = {
+static int parser_action_row221[] = {
        1,
        1,
-       -1, 1, 410
+       -1, 1, 494
 };
 };
-static int parser_action_row217[] = {
+static int parser_action_row222[] = {
        1,
        1,
-       -1, 1, 411
+       -1, 1, 495
 };
 };
-static int parser_action_row218[] = {
+static int parser_action_row223[] = {
        23,
        23,
-       -1, 3, 217,
+       -1, 3, 222,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -3545,80 +3590,96 @@ static int parser_action_row218[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 178,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 178,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row219[] = {
-       3,
-       -1, 1, 531,
+static int parser_action_row224[] = {
+       1,
+       -1, 1, 581
+};
+static int parser_action_row225[] = {
+       1,
+       -1, 1, 583
+};
+static int parser_action_row226[] = {
+       1,
+       -1, 1, 585
+};
+static int parser_action_row227[] = {
+       1,
+       -1, 1, 587
+};
+static int parser_action_row228[] = {
+       3,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row220[] = {
+static int parser_action_row229[] = {
        1,
        1,
-       -1, 1, 103
+       -1, 1, 137
 };
 };
-static int parser_action_row221[] = {
+static int parser_action_row230[] = {
        2,
        2,
-       -1, 3, 220,
-       4, 0, 382
+       -1, 3, 229,
+       4, 0, 410
 };
 };
-static int parser_action_row222[] = {
+static int parser_action_row231[] = {
        1,
        1,
-       -1, 1, 105
+       -1, 1, 139
 };
 };
-static int parser_action_row223[] = {
+static int parser_action_row232[] = {
        1,
        1,
-       -1, 1, 106
+       -1, 1, 140
 };
 };
-static int parser_action_row224[] = {
+static int parser_action_row233[] = {
        17,
        17,
-       -1, 3, 223,
-       53, 0, 383,
-       64, 0, 384,
-       65, 0, 385,
-       66, 0, 386,
-       67, 0, 387,
-       68, 0, 388,
-       69, 0, 389,
-       70, 0, 390,
-       71, 0, 391,
-       72, 0, 392,
-       73, 0, 393,
-       74, 0, 394,
-       75, 0, 395,
-       76, 0, 396,
-       77, 0, 397,
-       80, 0, 398
+       -1, 3, 232,
+       53, 0, 411,
+       64, 0, 412,
+       65, 0, 413,
+       66, 0, 414,
+       67, 0, 415,
+       68, 0, 416,
+       69, 0, 417,
+       70, 0, 418,
+       71, 0, 419,
+       72, 0, 420,
+       73, 0, 421,
+       74, 0, 422,
+       75, 0, 423,
+       76, 0, 424,
+       77, 0, 425,
+       81, 0, 426
 };
 };
-static int parser_action_row225[] = {
+static int parser_action_row234[] = {
        2,
        2,
-       -1, 1, 107,
-       4, 0, 400
+       -1, 1, 141,
+       4, 0, 428
 };
 };
-static int parser_action_row226[] = {
+static int parser_action_row235[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row227[] = {
+static int parser_action_row236[] = {
        1,
        1,
-       -1, 1, 326
+       -1, 1, 402
 };
 };
-static int parser_action_row228[] = {
+static int parser_action_row237[] = {
        1,
        1,
-       -1, 1, 854
+       -1, 1, 1272
 };
 };
-static int parser_action_row229[] = {
+static int parser_action_row238[] = {
        30,
        30,
-       -1, 1, 342,
+       -1, 1, 422,
        11, 0, 28,
        14, 0, 30,
        17, 0, 31,
        11, 0, 28,
        14, 0, 30,
        17, 0, 31,
@@ -3640,71 +3701,72 @@ static int parser_action_row229[] = {
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
-       79, 0, 54,
-       80, 0, 55,
-       81, 0, 56,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 55,
+       82, 0, 56,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row230[] = {
+static int parser_action_row239[] = {
        3,
        3,
-       -1, 1, 341,
+       -1, 1, 421,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row231[] = {
+static int parser_action_row240[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row232[] = {
+static int parser_action_row241[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row233[] = {
+static int parser_action_row242[] = {
        4,
        4,
-       -1, 1, 480,
-       58, 0, 407,
-       59, 0, 215,
-       60, 0, 216
+       -1, 1, 564,
+       58, 0, 435,
+       59, 0, 220,
+       60, 0, 221
 };
 };
-static int parser_action_row234[] = {
+static int parser_action_row243[] = {
        1,
        1,
-       -1, 1, 502
+       -1, 1, 600
 };
 };
-static int parser_action_row235[] = {
+static int parser_action_row244[] = {
        1,
        1,
-       -1, 1, 503
+       -1, 1, 601
 };
 };
-static int parser_action_row236[] = {
+static int parser_action_row245[] = {
        1,
        1,
-       -1, 1, 856
+       -1, 1, 1274
 };
 };
-static int parser_action_row237[] = {
+static int parser_action_row246[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row238[] = {
-       1,
-       -1, 1, 497
+static int parser_action_row247[] = {
+       2,
+       -1, 1, 593,
+       79, 0, 205
 };
 };
-static int parser_action_row239[] = {
+static int parser_action_row248[] = {
        3,
        3,
-       -1, 3, 238,
-       87, 0, 233,
-       88, 0, 234
+       -1, 3, 247,
+       88, 0, 242,
+       89, 0, 243
 };
 };
-static int parser_action_row240[] = {
+static int parser_action_row249[] = {
        23,
        23,
-       -1, 3, 239,
+       -1, 3, 248,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -3719,18 +3781,22 @@ static int parser_action_row240[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 206,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row241[] = {
+static int parser_action_row250[] = {
+       1,
+       -1, 1, 571
+};
+static int parser_action_row251[] = {
        24,
        24,
-       -1, 1, 510,
+       -1, 1, 635,
        11, 0, 122,
        23, 0, 123,
        32, 0, 124,
        11, 0, 122,
        23, 0, 123,
        32, 0, 124,
@@ -3743,197 +3809,198 @@ static int parser_action_row241[] = {
        45, 0, 131,
        48, 0, 132,
        51, 0, 133,
        45, 0, 131,
        48, 0, 132,
        51, 0, 133,
-       53, 1, 506,
-       63, 1, 506,
+       53, 1, 631,
+       63, 1, 631,
        65, 0, 134,
        65, 0, 134,
-       79, 0, 54,
-       80, 0, 135,
-       81, 0, 136,
-       82, 0, 137,
-       83, 0, 138,
-       84, 0, 139,
-       85, 0, 140,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 135,
+       82, 0, 136,
+       83, 0, 137,
+       84, 0, 138,
+       85, 0, 139,
+       86, 0, 140,
+       87, 0, 61
 };
 };
-static int parser_action_row242[] = {
+static int parser_action_row252[] = {
        2,
        2,
-       -1, 3, 241,
-       57, 0, 211
+       -1, 3, 251,
+       57, 0, 216
 };
 };
-static int parser_action_row243[] = {
+static int parser_action_row253[] = {
        1,
        1,
-       -1, 1, 861
+       -1, 1, 1285
 };
 };
-static int parser_action_row244[] = {
+static int parser_action_row254[] = {
        1,
        1,
-       -1, 1, 522
+       -1, 1, 647
 };
 };
-static int parser_action_row245[] = {
+static int parser_action_row255[] = {
        2,
        2,
-       -1, 1, 534,
+       -1, 1, 659,
        0, 0, 109
 };
        0, 0, 109
 };
-static int parser_action_row246[] = {
+static int parser_action_row256[] = {
        1,
        -1, 1, 38
 };
        1,
        -1, 1, 38
 };
-static int parser_action_row247[] = {
+static int parser_action_row257[] = {
        4,
        4,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       92, 1, 14
+       93, 1, 14
 };
 };
-static int parser_action_row248[] = {
+static int parser_action_row258[] = {
        4,
        4,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       92, 1, 22
+       93, 1, 22
 };
 };
-static int parser_action_row249[] = {
+static int parser_action_row259[] = {
        1,
        -1, 1, 42
 };
        1,
        -1, 1, 42
 };
-static int parser_action_row250[] = {
+static int parser_action_row260[] = {
        4,
        4,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       92, 1, 26
+       93, 1, 26
 };
 };
-static int parser_action_row251[] = {
+static int parser_action_row261[] = {
        1,
        -1, 1, 50
 };
        1,
        -1, 1, 50
 };
-static int parser_action_row252[] = {
+static int parser_action_row262[] = {
        7,
        7,
-       -1, 3, 251,
-       4, 0, 219,
-       5, 0, 220,
-       6, 0, 221,
-       7, 0, 222,
-       9, 0, 223,
-       19, 0, 224
+       -1, 3, 261,
+       4, 0, 228,
+       5, 0, 229,
+       6, 0, 230,
+       7, 0, 231,
+       9, 0, 232,
+       19, 0, 233
 };
 };
-static int parser_action_row253[] = {
+static int parser_action_row263[] = {
        1,
        -1, 1, 44
 };
        1,
        -1, 1, 44
 };
-static int parser_action_row254[] = {
+static int parser_action_row264[] = {
        4,
        4,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       92, 1, 28
+       93, 1, 28
 };
 };
-static int parser_action_row255[] = {
+static int parser_action_row265[] = {
        1,
        -1, 1, 52
 };
        1,
        -1, 1, 52
 };
-static int parser_action_row256[] = {
+static int parser_action_row266[] = {
        1,
        -1, 1, 56
 };
        1,
        -1, 1, 56
 };
-static int parser_action_row257[] = {
+static int parser_action_row267[] = {
        4,
        4,
-       -1, 1, 258,
+       -1, 1, 331,
        20, 0, 32,
        21, 0, 33,
        22, 0, 34
 };
        20, 0, 32,
        21, 0, 33,
        22, 0, 34
 };
-static int parser_action_row258[] = {
+static int parser_action_row268[] = {
        2,
        2,
-       -1, 3, 257,
-       9, 0, 223
+       -1, 3, 267,
+       9, 0, 232
 };
 };
-static int parser_action_row259[] = {
+static int parser_action_row269[] = {
        1,
        -1, 1, 39
 };
        1,
        -1, 1, 39
 };
-static int parser_action_row260[] = {
+static int parser_action_row270[] = {
        4,
        4,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       92, 1, 15
+       93, 1, 15
 };
 };
-static int parser_action_row261[] = {
+static int parser_action_row271[] = {
        4,
        4,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       92, 1, 23
+       93, 1, 23
 };
 };
-static int parser_action_row262[] = {
+static int parser_action_row272[] = {
        1,
        -1, 1, 43
 };
        1,
        -1, 1, 43
 };
-static int parser_action_row263[] = {
+static int parser_action_row273[] = {
        4,
        4,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       92, 1, 27
+       93, 1, 27
 };
 };
-static int parser_action_row264[] = {
+static int parser_action_row274[] = {
        1,
        -1, 1, 51
 };
        1,
        -1, 1, 51
 };
-static int parser_action_row265[] = {
+static int parser_action_row275[] = {
        1,
        -1, 1, 45
 };
        1,
        -1, 1, 45
 };
-static int parser_action_row266[] = {
+static int parser_action_row276[] = {
        4,
        4,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       92, 1, 29
+       93, 1, 29
 };
 };
-static int parser_action_row267[] = {
+static int parser_action_row277[] = {
        1,
        -1, 1, 53
 };
        1,
        -1, 1, 53
 };
-static int parser_action_row268[] = {
+static int parser_action_row278[] = {
        1,
        -1, 1, 57
 };
        1,
        -1, 1, 57
 };
-static int parser_action_row269[] = {
+static int parser_action_row279[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row270[] = {
+static int parser_action_row280[] = {
        2,
        2,
-       -1, 1, 517,
-       57, 0, 211
+       -1, 1, 642,
+       57, 0, 216
 };
 };
-static int parser_action_row271[] = {
-       3,
-       -1, 3, 270,
+static int parser_action_row281[] = {
+       4,
+       -1, 3, 280,
        0, 0, 87,
        0, 0, 87,
-       1, 0, 88
+       1, 0, 88,
+       13, 0, 456
 };
 };
-static int parser_action_row272[] = {
+static int parser_action_row282[] = {
        2,
        2,
-       -1, 3, 271,
-       80, 0, 428
+       -1, 3, 281,
+       81, 0, 459
 };
 };
-static int parser_action_row273[] = {
+static int parser_action_row283[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row274[] = {
+static int parser_action_row284[] = {
        1,
        1,
-       -1, 1, 757
+       -1, 1, 861
 };
 };
-static int parser_action_row275[] = {
+static int parser_action_row285[] = {
        23,
        23,
-       -1, 3, 274,
+       -1, 3, 284,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -3948,18 +4015,18 @@ static int parser_action_row275[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 206,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row276[] = {
+static int parser_action_row286[] = {
        20,
        20,
-       -1, 3, 275,
+       -1, 3, 285,
        11, 0, 122,
        32, 0, 124,
        38, 0, 125,
        11, 0, 122,
        32, 0, 124,
        38, 0, 125,
@@ -3971,24 +4038,24 @@ static int parser_action_row276[] = {
        45, 0, 131,
        48, 0, 132,
        65, 0, 134,
        45, 0, 131,
        48, 0, 132,
        65, 0, 134,
-       79, 0, 54,
-       80, 0, 135,
-       81, 0, 136,
-       82, 0, 137,
-       83, 0, 138,
-       84, 0, 139,
-       85, 0, 140,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 135,
+       82, 0, 136,
+       83, 0, 137,
+       84, 0, 138,
+       85, 0, 139,
+       86, 0, 140,
+       87, 0, 61
 };
 };
-static int parser_action_row277[] = {
+static int parser_action_row287[] = {
        3,
        3,
-       -1, 3, 276,
-       47, 0, 361,
-       79, 0, 362
+       -1, 3, 286,
+       47, 0, 380,
+       80, 0, 381
 };
 };
-static int parser_action_row278[] = {
+static int parser_action_row288[] = {
        19,
        19,
-       -1, 3, 277,
+       -1, 3, 287,
        11, 0, 122,
        38, 0, 125,
        40, 0, 126,
        11, 0, 122,
        38, 0, 125,
        40, 0, 126,
@@ -3999,40 +4066,56 @@ static int parser_action_row278[] = {
        45, 0, 131,
        48, 0, 132,
        65, 0, 134,
        45, 0, 131,
        48, 0, 132,
        65, 0, 134,
-       79, 0, 54,
-       80, 0, 135,
-       81, 0, 136,
-       82, 0, 137,
-       83, 0, 138,
-       84, 0, 139,
-       85, 0, 140,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 135,
+       82, 0, 136,
+       83, 0, 137,
+       84, 0, 138,
+       85, 0, 139,
+       86, 0, 140,
+       87, 0, 61
 };
 };
-static int parser_action_row279[] = {
+static int parser_action_row289[] = {
+       1,
+       -1, 1, 858
+};
+static int parser_action_row290[] = {
+       1,
+       -1, 1, 865
+};
+static int parser_action_row291[] = {
        1,
        1,
-       -1, 1, 754
+       -1, 1, 867
 };
 };
-static int parser_action_row280[] = {
+static int parser_action_row292[] = {
+       1,
+       -1, 1, 869
+};
+static int parser_action_row293[] = {
+       1,
+       -1, 1, 871
+};
+static int parser_action_row294[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row281[] = {
+static int parser_action_row295[] = {
        3,
        3,
-       -1, 1, 749,
-       53, 1, 751,
-       63, 1, 751
+       -1, 1, 853,
+       53, 1, 855,
+       63, 1, 855
 };
 };
-static int parser_action_row282[] = {
+static int parser_action_row296[] = {
        3,
        3,
-       -1, 3, 281,
-       53, 0, 230,
-       63, 0, 435
+       -1, 3, 295,
+       53, 0, 239,
+       63, 0, 466
 };
 };
-static int parser_action_row283[] = {
+static int parser_action_row297[] = {
        24,
        24,
-       -1, 3, 282,
+       -1, 3, 296,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -4045,21 +4128,21 @@ static int parser_action_row283[] = {
        45, 0, 50,
        48, 0, 176,
        51, 0, 52,
        45, 0, 50,
        48, 0, 176,
        51, 0, 52,
-       52, 0, 436,
+       52, 0, 467,
        53, 0, 53,
        65, 0, 177,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 206,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row284[] = {
+static int parser_action_row298[] = {
        19,
        19,
-       -1, 3, 283,
+       -1, 3, 297,
        11, 0, 122,
        38, 0, 125,
        40, 0, 126,
        11, 0, 122,
        38, 0, 125,
        40, 0, 126,
@@ -4070,240 +4153,262 @@ static int parser_action_row284[] = {
        45, 0, 131,
        48, 0, 132,
        65, 0, 134,
        45, 0, 131,
        48, 0, 132,
        65, 0, 134,
-       79, 0, 54,
-       80, 0, 135,
-       81, 0, 136,
-       82, 0, 137,
-       83, 0, 138,
-       84, 0, 139,
-       85, 0, 140,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 135,
+       82, 0, 136,
+       83, 0, 137,
+       84, 0, 138,
+       85, 0, 139,
+       86, 0, 140,
+       87, 0, 61
 };
 };
-static int parser_action_row285[] = {
+static int parser_action_row299[] = {
        1,
        1,
-       -1, 1, 753
+       -1, 1, 857
 };
 };
-static int parser_action_row286[] = {
+static int parser_action_row300[] = {
+       1,
+       -1, 1, 873
+};
+static int parser_action_row301[] = {
+       1,
+       -1, 1, 875
+};
+static int parser_action_row302[] = {
+       1,
+       -1, 1, 877
+};
+static int parser_action_row303[] = {
+       1,
+       -1, 1, 879
+};
+static int parser_action_row304[] = {
        2,
        2,
-       -1, 1, 506,
-       51, 0, 272
+       -1, 1, 631,
+       51, 0, 282
 };
 };
-static int parser_action_row287[] = {
+static int parser_action_row305[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row288[] = {
+static int parser_action_row306[] = {
        4,
        4,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       25, 0, 442
+       25, 0, 473
 };
 };
-static int parser_action_row289[] = {
+static int parser_action_row307[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row290[] = {
+static int parser_action_row308[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row291[] = {
+static int parser_action_row309[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row292[] = {
+static int parser_action_row310[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row293[] = {
+static int parser_action_row311[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row294[] = {
+static int parser_action_row312[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row295[] = {
+static int parser_action_row313[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row296[] = {
+static int parser_action_row314[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row297[] = {
+static int parser_action_row315[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row298[] = {
+static int parser_action_row316[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row299[] = {
+static int parser_action_row317[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row300[] = {
+static int parser_action_row318[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row301[] = {
+static int parser_action_row319[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row302[] = {
+static int parser_action_row320[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row303[] = {
+static int parser_action_row321[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row304[] = {
+static int parser_action_row322[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row305[] = {
+static int parser_action_row323[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row306[] = {
+static int parser_action_row324[] = {
        1,
        1,
-       -1, 1, 758
+       -1, 1, 862
 };
 };
-static int parser_action_row307[] = {
+static int parser_action_row325[] = {
        17,
        17,
-       -1, 3, 306,
-       53, 0, 383,
-       64, 0, 384,
-       65, 0, 385,
-       66, 0, 386,
-       67, 0, 387,
-       68, 0, 388,
-       69, 0, 389,
-       70, 0, 390,
-       71, 0, 391,
-       72, 0, 392,
-       73, 0, 393,
-       74, 0, 394,
-       75, 0, 395,
-       76, 0, 396,
-       77, 0, 397,
-       80, 0, 398
+       -1, 3, 324,
+       53, 0, 411,
+       64, 0, 412,
+       65, 0, 413,
+       66, 0, 414,
+       67, 0, 415,
+       68, 0, 416,
+       69, 0, 417,
+       70, 0, 418,
+       71, 0, 419,
+       72, 0, 420,
+       73, 0, 421,
+       74, 0, 422,
+       75, 0, 423,
+       76, 0, 424,
+       77, 0, 425,
+       81, 0, 426
 };
 };
-static int parser_action_row308[] = {
+static int parser_action_row326[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row309[] = {
+static int parser_action_row327[] = {
        2,
        2,
-       -1, 1, 337,
-       49, 1, 708
+       -1, 1, 417,
+       49, 1, 1086
 };
 };
-static int parser_action_row310[] = {
+static int parser_action_row328[] = {
        2,
        2,
-       -1, 1, 336,
-       49, 1, 707
+       -1, 1, 416,
+       49, 1, 1085
 };
 };
-static int parser_action_row311[] = {
+static int parser_action_row329[] = {
        3,
        3,
-       -1, 3, 310,
+       -1, 3, 328,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row312[] = {
+static int parser_action_row330[] = {
        1,
        1,
-       -1, 1, 412
+       -1, 1, 496
 };
 };
-static int parser_action_row313[] = {
+static int parser_action_row331[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row314[] = {
+static int parser_action_row332[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row315[] = {
+static int parser_action_row333[] = {
        2,
        2,
-       -1, 1, 397,
-       58, 0, 467
+       -1, 1, 478,
+       58, 0, 498
 };
 };
-static int parser_action_row316[] = {
+static int parser_action_row334[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 477,
+       56, 0, 330,
+       58, 0, 499
+};
+static int parser_action_row335[] = {
+       3,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row317[] = {
+static int parser_action_row336[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row318[] = {
+static int parser_action_row337[] = {
        1,
        1,
-       -1, 1, 421
+       -1, 1, 505
 };
 };
-static int parser_action_row319[] = {
+static int parser_action_row338[] = {
        2,
        2,
-       -1, 3, 318,
-       80, 0, 319
+       -1, 3, 337,
+       81, 0, 338
 };
 };
-static int parser_action_row320[] = {
+static int parser_action_row339[] = {
        1,
        1,
-       -1, 1, 515
+       -1, 1, 640
 };
 };
-static int parser_action_row321[] = {
+static int parser_action_row340[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row322[] = {
+static int parser_action_row341[] = {
        23,
        23,
-       -1, 3, 321,
+       -1, 3, 340,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -4318,18 +4423,18 @@ static int parser_action_row322[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 206,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row323[] = {
+static int parser_action_row342[] = {
        22,
        22,
-       -1, 3, 322,
+       -1, 3, 341,
        11, 0, 170,
        32, 0, 172,
        38, 0, 173,
        11, 0, 170,
        32, 0, 172,
        38, 0, 173,
@@ -4343,24 +4448,24 @@ static int parser_action_row323[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 206,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row324[] = {
+static int parser_action_row343[] = {
        3,
        3,
-       -1, 3, 323,
-       47, 0, 361,
-       79, 0, 362
+       -1, 3, 342,
+       47, 0, 380,
+       80, 0, 381
 };
 };
-static int parser_action_row325[] = {
+static int parser_action_row344[] = {
        21,
        21,
-       -1, 3, 324,
+       -1, 3, 343,
        11, 0, 170,
        38, 0, 173,
        40, 0, 174,
        11, 0, 170,
        38, 0, 173,
        40, 0, 174,
@@ -4373,30 +4478,30 @@ static int parser_action_row325[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 206,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row326[] = {
+static int parser_action_row345[] = {
        3,
        3,
-       -1, 1, 471,
-       53, 1, 473,
-       63, 1, 473
+       -1, 1, 555,
+       53, 1, 557,
+       63, 1, 557
 };
 };
-static int parser_action_row327[] = {
+static int parser_action_row346[] = {
        3,
        3,
-       -1, 3, 326,
-       53, 0, 230,
-       63, 0, 476
+       -1, 3, 345,
+       53, 0, 239,
+       63, 0, 509
 };
 };
-static int parser_action_row328[] = {
+static int parser_action_row347[] = {
        21,
        21,
-       -1, 3, 327,
+       -1, 3, 346,
        11, 0, 170,
        38, 0, 173,
        40, 0, 174,
        11, 0, 170,
        38, 0, 173,
        40, 0, 174,
@@ -4409,198 +4514,198 @@ static int parser_action_row328[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 206,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row329[] = {
+static int parser_action_row348[] = {
        2,
        2,
-       -1, 1, 475,
-       78, 0, 375
+       -1, 1, 559,
+       78, 0, 403
 };
 };
-static int parser_action_row330[] = {
+static int parser_action_row349[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row331[] = {
+static int parser_action_row350[] = {
        4,
        4,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       25, 0, 480
+       25, 0, 513
 };
 };
-static int parser_action_row332[] = {
+static int parser_action_row351[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row333[] = {
+static int parser_action_row352[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row334[] = {
+static int parser_action_row353[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row335[] = {
+static int parser_action_row354[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row336[] = {
+static int parser_action_row355[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row337[] = {
+static int parser_action_row356[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row338[] = {
+static int parser_action_row357[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row339[] = {
+static int parser_action_row358[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row340[] = {
+static int parser_action_row359[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row341[] = {
+static int parser_action_row360[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row342[] = {
+static int parser_action_row361[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row343[] = {
+static int parser_action_row362[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row344[] = {
+static int parser_action_row363[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row345[] = {
+static int parser_action_row364[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row346[] = {
+static int parser_action_row365[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row347[] = {
+static int parser_action_row366[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row348[] = {
+static int parser_action_row367[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row349[] = {
+static int parser_action_row368[] = {
        2,
        2,
-       -1, 1, 480,
-       78, 0, 375
+       -1, 1, 564,
+       78, 0, 403
 };
 };
-static int parser_action_row350[] = {
+static int parser_action_row369[] = {
        2,
        2,
-       -1, 1, 506,
-       51, 0, 272
+       -1, 1, 631,
+       51, 0, 282
 };
 };
-static int parser_action_row351[] = {
+static int parser_action_row370[] = {
        1,
        1,
-       -1, 1, 375
+       -1, 1, 455
 };
 };
-static int parser_action_row352[] = {
+static int parser_action_row371[] = {
        1,
        1,
-       -1, 1, 359
+       -1, 1, 439
 };
 };
-static int parser_action_row353[] = {
+static int parser_action_row372[] = {
        1,
        1,
-       -1, 1, 354
+       -1, 1, 434
 };
 };
-static int parser_action_row354[] = {
+static int parser_action_row373[] = {
        1,
        1,
-       -1, 1, 433
+       -1, 1, 517
 };
 };
-static int parser_action_row355[] = {
+static int parser_action_row374[] = {
        2,
        2,
-       -1, 1, 475,
-       78, 0, 500
+       -1, 1, 559,
+       78, 0, 533
 };
 };
-static int parser_action_row356[] = {
+static int parser_action_row375[] = {
        3,
        3,
-       -1, 1, 506,
-       51, 0, 272,
-       57, 0, 211
+       -1, 1, 631,
+       51, 0, 282,
+       57, 0, 216
 };
 };
-static int parser_action_row357[] = {
+static int parser_action_row376[] = {
        1,
        1,
-       -1, 1, 432
+       -1, 1, 516
 };
 };
-static int parser_action_row358[] = {
+static int parser_action_row377[] = {
        2,
        2,
-       -1, 3, 357,
-       25, 0, 504
+       -1, 3, 376,
+       25, 0, 537
 };
 };
-static int parser_action_row359[] = {
+static int parser_action_row378[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row360[] = {
+static int parser_action_row379[] = {
        2,
        2,
-       -1, 1, 480,
-       78, 0, 500
+       -1, 1, 564,
+       78, 0, 533
 };
 };
-static int parser_action_row361[] = {
+static int parser_action_row380[] = {
        33,
        33,
-       -1, 3, 360,
+       -1, 3, 379,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       8, 0, 507,
+       8, 0, 540,
        11, 0, 28,
        14, 0, 30,
        17, 0, 31,
        11, 0, 28,
        14, 0, 30,
        17, 0, 31,
@@ -4622,75 +4727,122 @@ static int parser_action_row361[] = {
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
-       79, 0, 54,
-       80, 0, 55,
-       81, 0, 56,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 55,
+       82, 0, 56,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row362[] = {
+static int parser_action_row381[] = {
        2,
        2,
-       -1, 3, 361,
-       79, 0, 510
+       -1, 3, 380,
+       80, 0, 543
 };
 };
-static int parser_action_row363[] = {
+static int parser_action_row382[] = {
+       3,
+       -1, 1, 771,
+       53, 0, 544,
+       79, 0, 545
+};
+static int parser_action_row383[] = {
        2,
        2,
-       -1, 1, 328,
-       53, 0, 511
+       -1, 3, 382,
+       63, 0, 547
 };
 };
-static int parser_action_row364[] = {
+static int parser_action_row384[] = {
+       1,
+       -1, 1, 628
+};
+static int parser_action_row385[] = {
+       1,
+       -1, 1, 626
+};
+static int parser_action_row386[] = {
+       1,
+       -1, 1, 627
+};
+static int parser_action_row387[] = {
+       5,
+       -1, 3, 386,
+       3, 0, 383,
+       15, 0, 384,
+       16, 0, 385,
+       81, 0, 387
+};
+static int parser_action_row388[] = {
+       1,
+       -1, 1, 625
+};
+static int parser_action_row389[] = {
+       1,
+       -1, 1, 602
+};
+static int parser_action_row390[] = {
+       3,
+       -1, 1, 604,
+       51, 0, 550,
+       79, 0, 205
+};
+static int parser_action_row391[] = {
        2,
        2,
-       -1, 3, 363,
-       63, 0, 512
+       -1, 3, 390,
+       80, 0, 552
 };
 };
-static int parser_action_row365[] = {
+static int parser_action_row392[] = {
+       3,
+       -1, 1, 404,
+       53, 0, 553,
+       79, 0, 205
+};
+static int parser_action_row393[] = {
        2,
        2,
-       -1, 3, 364,
-       56, 0, 513
+       -1, 3, 392,
+       56, 0, 555
 };
 };
-static int parser_action_row366[] = {
+static int parser_action_row394[] = {
        1,
        1,
-       -1, 1, 475
+       -1, 1, 559
 };
 };
-static int parser_action_row367[] = {
-       1,
-       -1, 1, 494
+static int parser_action_row395[] = {
+       2,
+       -1, 1, 589,
+       79, 0, 205
 };
 };
-static int parser_action_row368[] = {
+static int parser_action_row396[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row369[] = {
+static int parser_action_row397[] = {
        1,
        1,
-       -1, 1, 480
+       -1, 1, 564
 };
 };
-static int parser_action_row370[] = {
+static int parser_action_row398[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row371[] = {
+static int parser_action_row399[] = {
        2,
        2,
-       -1, 3, 370,
-       54, 0, 516
+       -1, 3, 398,
+       54, 0, 559
 };
 };
-static int parser_action_row372[] = {
+static int parser_action_row400[] = {
        1,
        1,
-       -1, 1, 525
+       -1, 1, 650
 };
 };
-static int parser_action_row373[] = {
+static int parser_action_row401[] = {
        1,
        1,
-       -1, 1, 524
+       -1, 1, 649
 };
 };
-static int parser_action_row374[] = {
+static int parser_action_row402[] = {
        23,
        23,
-       -1, 3, 373,
+       -1, 3, 401,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -4705,18 +4857,18 @@ static int parser_action_row374[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 178,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 178,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row375[] = {
+static int parser_action_row403[] = {
        23,
        23,
-       -1, 3, 374,
+       -1, 3, 402,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -4731,147 +4883,147 @@ static int parser_action_row375[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 178,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 178,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row376[] = {
+static int parser_action_row404[] = {
        3,
        3,
-       -1, 3, 375,
-       35, 0, 519,
-       80, 0, 520
+       -1, 3, 403,
+       35, 0, 562,
+       81, 0, 563
 };
 };
-static int parser_action_row377[] = {
+static int parser_action_row405[] = {
        1,
        1,
-       -1, 1, 369
+       -1, 1, 449
 };
 };
-static int parser_action_row378[] = {
+static int parser_action_row406[] = {
        1,
        1,
-       -1, 1, 376
+       -1, 1, 456
 };
 };
-static int parser_action_row379[] = {
+static int parser_action_row407[] = {
        2,
        2,
-       -1, 3, 378,
-       78, 0, 375
+       -1, 3, 406,
+       78, 0, 403
 };
 };
-static int parser_action_row380[] = {
+static int parser_action_row408[] = {
        1,
        1,
-       -1, 1, 401
+       -1, 1, 485
 };
 };
-static int parser_action_row381[] = {
+static int parser_action_row409[] = {
        1,
        1,
-       -1, 1, 406
+       -1, 1, 490
 };
 };
-static int parser_action_row382[] = {
+static int parser_action_row410[] = {
        4,
        4,
-       -1, 3, 381,
-       8, 0, 523,
-       57, 0, 268,
-       80, 0, 269
+       -1, 3, 409,
+       8, 0, 566,
+       57, 0, 278,
+       81, 0, 279
 };
 };
-static int parser_action_row383[] = {
+static int parser_action_row411[] = {
        1,
        1,
-       -1, 1, 104
+       -1, 1, 138
 };
 };
-static int parser_action_row384[] = {
+static int parser_action_row412[] = {
        2,
        2,
-       -1, 3, 383,
-       54, 0, 525
+       -1, 3, 411,
+       54, 0, 568
 };
 };
-static int parser_action_row385[] = {
+static int parser_action_row413[] = {
        1,
        1,
-       -1, 1, 263
+       -1, 1, 336
 };
 };
-static int parser_action_row386[] = {
+static int parser_action_row414[] = {
        1,
        1,
-       -1, 1, 264
+       -1, 1, 337
 };
 };
-static int parser_action_row387[] = {
+static int parser_action_row415[] = {
        1,
        1,
-       -1, 1, 265
+       -1, 1, 338
 };
 };
-static int parser_action_row388[] = {
+static int parser_action_row416[] = {
        1,
        1,
-       -1, 1, 266
+       -1, 1, 339
 };
 };
-static int parser_action_row389[] = {
+static int parser_action_row417[] = {
        1,
        1,
-       -1, 1, 267
+       -1, 1, 340
 };
 };
-static int parser_action_row390[] = {
+static int parser_action_row418[] = {
        1,
        1,
-       -1, 1, 268
+       -1, 1, 341
 };
 };
-static int parser_action_row391[] = {
+static int parser_action_row419[] = {
        1,
        1,
-       -1, 1, 269
+       -1, 1, 342
 };
 };
-static int parser_action_row392[] = {
+static int parser_action_row420[] = {
        1,
        1,
-       -1, 1, 272
+       -1, 1, 345
 };
 };
-static int parser_action_row393[] = {
+static int parser_action_row421[] = {
        1,
        1,
-       -1, 1, 270
+       -1, 1, 343
 };
 };
-static int parser_action_row394[] = {
+static int parser_action_row422[] = {
        1,
        1,
-       -1, 1, 274
+       -1, 1, 347
 };
 };
-static int parser_action_row395[] = {
+static int parser_action_row423[] = {
        1,
        1,
-       -1, 1, 273
+       -1, 1, 346
 };
 };
-static int parser_action_row396[] = {
+static int parser_action_row424[] = {
        1,
        1,
-       -1, 1, 271
+       -1, 1, 344
 };
 };
-static int parser_action_row397[] = {
+static int parser_action_row425[] = {
        1,
        1,
-       -1, 1, 275
+       -1, 1, 348
 };
 };
-static int parser_action_row398[] = {
+static int parser_action_row426[] = {
        1,
        1,
-       -1, 1, 277
+       -1, 1, 350
 };
 };
-static int parser_action_row399[] = {
+static int parser_action_row427[] = {
        2,
        2,
-       -1, 1, 262,
-       58, 0, 526
+       -1, 1, 335,
+       58, 0, 569
 };
 };
-static int parser_action_row400[] = {
+static int parser_action_row428[] = {
        5,
        5,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       51, 0, 527,
-       56, 0, 312
+       51, 0, 570,
+       56, 0, 330
 };
 };
-static int parser_action_row401[] = {
+static int parser_action_row429[] = {
        1,
        1,
-       -1, 1, 108
+       -1, 1, 142
 };
 };
-static int parser_action_row402[] = {
+static int parser_action_row430[] = {
        2,
        2,
-       -1, 3, 401,
-       79, 0, 532
+       -1, 3, 429,
+       80, 0, 575
 };
 };
-static int parser_action_row403[] = {
+static int parser_action_row431[] = {
        1,
        1,
-       -1, 1, 346
+       -1, 1, 426
 };
 };
-static int parser_action_row404[] = {
+static int parser_action_row432[] = {
        1,
        1,
-       -1, 1, 855
+       -1, 1, 1273
 };
 };
-static int parser_action_row405[] = {
+static int parser_action_row433[] = {
        30,
        30,
-       -1, 1, 343,
+       -1, 1, 423,
        11, 0, 28,
        14, 0, 30,
        17, 0, 31,
        11, 0, 28,
        14, 0, 30,
        17, 0, 31,
@@ -4893,18 +5045,18 @@ static int parser_action_row405[] = {
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
-       79, 0, 54,
-       80, 0, 55,
-       81, 0, 56,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 55,
+       82, 0, 56,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row406[] = {
+static int parser_action_row434[] = {
        23,
        23,
-       -1, 3, 405,
+       -1, 3, 433,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -4919,26 +5071,26 @@ static int parser_action_row406[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 206,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row407[] = {
+static int parser_action_row435[] = {
        5,
        5,
-       -1, 3, 406,
-       11, 0, 533,
-       46, 0, 534,
-       80, 0, 535,
-       81, 0, 536
+       -1, 3, 434,
+       11, 0, 576,
+       46, 0, 577,
+       81, 0, 578,
+       82, 0, 579
 };
 };
-static int parser_action_row408[] = {
+static int parser_action_row436[] = {
        23,
        23,
-       -1, 3, 407,
+       -1, 3, 435,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -4953,18 +5105,18 @@ static int parser_action_row408[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 178,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 178,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row409[] = {
+static int parser_action_row437[] = {
        23,
        23,
-       -1, 3, 408,
+       -1, 3, 436,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -4979,18 +5131,18 @@ static int parser_action_row409[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 178,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 178,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row410[] = {
+static int parser_action_row438[] = {
        23,
        23,
-       -1, 3, 409,
+       -1, 3, 437,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -5005,105 +5157,126 @@ static int parser_action_row410[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 206,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row411[] = {
+static int parser_action_row439[] = {
        1,
        1,
-       -1, 1, 857
+       -1, 1, 595
 };
 };
-static int parser_action_row412[] = {
+static int parser_action_row440[] = {
        1,
        1,
-       -1, 1, 498
+       -1, 1, 1275
 };
 };
-static int parser_action_row413[] = {
+static int parser_action_row441[] = {
+       2,
+       -1, 1, 594,
+       79, 0, 205
+};
+static int parser_action_row442[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row414[] = {
+static int parser_action_row443[] = {
        1,
        1,
-       -1, 1, 477
+       -1, 1, 561
 };
 };
-static int parser_action_row415[] = {
+static int parser_action_row444[] = {
        1,
        1,
-       -1, 1, 371
+       -1, 1, 451
 };
 };
-static int parser_action_row416[] = {
+static int parser_action_row445[] = {
        1,
        -1, 1, 46
 };
        1,
        -1, 1, 46
 };
-static int parser_action_row417[] = {
+static int parser_action_row446[] = {
        4,
        4,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       92, 1, 30
+       93, 1, 30
 };
 };
-static int parser_action_row418[] = {
+static int parser_action_row447[] = {
        1,
        -1, 1, 54
 };
        1,
        -1, 1, 54
 };
-static int parser_action_row419[] = {
+static int parser_action_row448[] = {
        1,
        -1, 1, 58
 };
        1,
        -1, 1, 58
 };
-static int parser_action_row420[] = {
+static int parser_action_row449[] = {
        1,
        -1, 1, 60
 };
        1,
        -1, 1, 60
 };
-static int parser_action_row421[] = {
+static int parser_action_row450[] = {
        2,
        2,
-       -1, 3, 420,
-       9, 0, 306
+       -1, 3, 449,
+       9, 0, 324
 };
 };
-static int parser_action_row422[] = {
+static int parser_action_row451[] = {
        1,
        -1, 1, 47
 };
        1,
        -1, 1, 47
 };
-static int parser_action_row423[] = {
+static int parser_action_row452[] = {
        4,
        4,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       92, 1, 31
+       93, 1, 31
 };
 };
-static int parser_action_row424[] = {
+static int parser_action_row453[] = {
        1,
        -1, 1, 55
 };
        1,
        -1, 1, 55
 };
-static int parser_action_row425[] = {
+static int parser_action_row454[] = {
        1,
        -1, 1, 59
 };
        1,
        -1, 1, 59
 };
-static int parser_action_row426[] = {
+static int parser_action_row455[] = {
        1,
        -1, 1, 61
 };
        1,
        -1, 1, 61
 };
-static int parser_action_row427[] = {
+static int parser_action_row456[] = {
        2,
        2,
-       -1, 3, 426,
-       80, 0, 543
+       -1, 3, 455,
+       81, 0, 587
 };
 };
-static int parser_action_row428[] = {
+static int parser_action_row457[] = {
+       7,
+       -1, 3, 456,
+       0, 0, 87,
+       1, 0, 88,
+       3, 0, 383,
+       15, 0, 384,
+       16, 0, 385,
+       81, 0, 387
+};
+static int parser_action_row458[] = {
+       3,
+       -1, 3, 457,
+       0, 0, 87,
+       1, 0, 88
+};
+static int parser_action_row459[] = {
        1,
        -1, 1, 64
 };
        1,
        -1, 1, 64
 };
-static int parser_action_row429[] = {
+static int parser_action_row460[] = {
        2,
        2,
-       -1, 1, 518,
-       57, 0, 211
+       -1, 1, 643,
+       57, 0, 216
 };
 };
-static int parser_action_row430[] = {
+static int parser_action_row461[] = {
        24,
        24,
-       -1, 3, 429,
+       -1, 3, 460,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -5116,81 +5289,81 @@ static int parser_action_row430[] = {
        45, 0, 50,
        48, 0, 176,
        51, 0, 52,
        45, 0, 50,
        48, 0, 176,
        51, 0, 52,
-       52, 0, 545,
+       52, 0, 593,
        53, 0, 53,
        65, 0, 177,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 206,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row431[] = {
+static int parser_action_row462[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row432[] = {
+static int parser_action_row463[] = {
        1,
        1,
-       -1, 1, 723
+       -1, 1, 827
 };
 };
-static int parser_action_row433[] = {
+static int parser_action_row464[] = {
        3,
        3,
-       -1, 1, 506,
-       51, 0, 272,
-       63, 0, 548
+       -1, 1, 631,
+       51, 0, 282,
+       63, 0, 596
 };
 };
-static int parser_action_row434[] = {
+static int parser_action_row465[] = {
        1,
        1,
-       -1, 1, 745
+       -1, 1, 849
 };
 };
-static int parser_action_row435[] = {
+static int parser_action_row466[] = {
        3,
        3,
-       -1, 3, 434,
-       47, 0, 361,
-       79, 0, 362
+       -1, 3, 465,
+       47, 0, 380,
+       80, 0, 381
 };
 };
-static int parser_action_row436[] = {
+static int parser_action_row467[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row437[] = {
+static int parser_action_row468[] = {
        6,
        6,
-       -1, 1, 509,
-       53, 1, 505,
-       58, 1, 505,
-       59, 1, 505,
-       60, 1, 505,
-       63, 1, 505
+       -1, 1, 634,
+       53, 1, 630,
+       58, 1, 630,
+       59, 1, 630,
+       60, 1, 630,
+       63, 1, 630
 };
 };
-static int parser_action_row438[] = {
+static int parser_action_row469[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row439[] = {
+static int parser_action_row470[] = {
        2,
        2,
-       -1, 3, 438,
-       52, 0, 553
+       -1, 3, 469,
+       52, 0, 601
 };
 };
-static int parser_action_row440[] = {
+static int parser_action_row471[] = {
        1,
        1,
-       -1, 1, 744
+       -1, 1, 848
 };
 };
-static int parser_action_row441[] = {
+static int parser_action_row472[] = {
        1,
        1,
-       -1, 1, 755
+       -1, 1, 859
 };
 };
-static int parser_action_row442[] = {
+static int parser_action_row473[] = {
        20,
        20,
-       -1, 3, 441,
+       -1, 3, 472,
        11, 0, 122,
        32, 0, 124,
        38, 0, 125,
        11, 0, 122,
        32, 0, 124,
        38, 0, 125,
@@ -5202,24 +5375,24 @@ static int parser_action_row442[] = {
        45, 0, 131,
        48, 0, 132,
        65, 0, 134,
        45, 0, 131,
        48, 0, 132,
        65, 0, 134,
-       79, 0, 54,
-       80, 0, 135,
-       81, 0, 136,
-       82, 0, 137,
-       83, 0, 138,
-       84, 0, 139,
-       85, 0, 140,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 135,
+       82, 0, 136,
+       83, 0, 137,
+       84, 0, 138,
+       85, 0, 139,
+       86, 0, 140,
+       87, 0, 61
 };
 };
-static int parser_action_row443[] = {
+static int parser_action_row474[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row444[] = {
+static int parser_action_row475[] = {
        20,
        20,
-       -1, 3, 443,
+       -1, 3, 474,
        11, 0, 122,
        32, 0, 124,
        38, 0, 125,
        11, 0, 122,
        32, 0, 124,
        38, 0, 125,
@@ -5231,18 +5404,18 @@ static int parser_action_row444[] = {
        45, 0, 131,
        48, 0, 132,
        65, 0, 134,
        45, 0, 131,
        48, 0, 132,
        65, 0, 134,
-       79, 0, 54,
-       80, 0, 135,
-       81, 0, 136,
-       82, 0, 137,
-       83, 0, 138,
-       84, 0, 139,
-       85, 0, 140,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 135,
+       82, 0, 136,
+       83, 0, 137,
+       84, 0, 138,
+       85, 0, 139,
+       86, 0, 140,
+       87, 0, 61
 };
 };
-static int parser_action_row445[] = {
+static int parser_action_row476[] = {
        19,
        19,
-       -1, 3, 444,
+       -1, 3, 475,
        11, 0, 122,
        38, 0, 125,
        40, 0, 126,
        11, 0, 122,
        38, 0, 125,
        40, 0, 126,
@@ -5253,18 +5426,18 @@ static int parser_action_row445[] = {
        45, 0, 131,
        48, 0, 132,
        65, 0, 134,
        45, 0, 131,
        48, 0, 132,
        65, 0, 134,
-       79, 0, 54,
-       80, 0, 135,
-       81, 0, 136,
-       82, 0, 137,
-       83, 0, 138,
-       84, 0, 139,
-       85, 0, 140,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 135,
+       82, 0, 136,
+       83, 0, 137,
+       84, 0, 138,
+       85, 0, 139,
+       86, 0, 140,
+       87, 0, 61
 };
 };
-static int parser_action_row446[] = {
+static int parser_action_row477[] = {
        19,
        19,
-       -1, 3, 445,
+       -1, 3, 476,
        11, 0, 122,
        38, 0, 125,
        40, 0, 126,
        11, 0, 122,
        38, 0, 125,
        40, 0, 126,
@@ -5275,18 +5448,18 @@ static int parser_action_row446[] = {
        45, 0, 131,
        48, 0, 132,
        65, 0, 134,
        45, 0, 131,
        48, 0, 132,
        65, 0, 134,
-       79, 0, 54,
-       80, 0, 135,
-       81, 0, 136,
-       82, 0, 137,
-       83, 0, 138,
-       84, 0, 139,
-       85, 0, 140,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 135,
+       82, 0, 136,
+       83, 0, 137,
+       84, 0, 138,
+       85, 0, 139,
+       86, 0, 140,
+       87, 0, 61
 };
 };
-static int parser_action_row447[] = {
+static int parser_action_row478[] = {
        19,
        19,
-       -1, 3, 446,
+       -1, 3, 477,
        11, 0, 122,
        38, 0, 125,
        40, 0, 126,
        11, 0, 122,
        38, 0, 125,
        40, 0, 126,
@@ -5297,24 +5470,24 @@ static int parser_action_row447[] = {
        45, 0, 131,
        48, 0, 132,
        65, 0, 134,
        45, 0, 131,
        48, 0, 132,
        65, 0, 134,
-       79, 0, 54,
-       80, 0, 135,
-       81, 0, 136,
-       82, 0, 137,
-       83, 0, 138,
-       84, 0, 139,
-       85, 0, 140,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 135,
+       82, 0, 136,
+       83, 0, 137,
+       84, 0, 138,
+       85, 0, 139,
+       86, 0, 140,
+       87, 0, 61
 };
 };
-static int parser_action_row448[] = {
+static int parser_action_row479[] = {
        3,
        3,
-       -1, 3, 447,
-       47, 0, 361,
-       79, 0, 362
+       -1, 3, 478,
+       47, 0, 390,
+       80, 0, 391
 };
 };
-static int parser_action_row449[] = {
+static int parser_action_row480[] = {
        19,
        19,
-       -1, 3, 448,
+       -1, 3, 479,
        11, 0, 122,
        38, 0, 125,
        40, 0, 126,
        11, 0, 122,
        38, 0, 125,
        40, 0, 126,
@@ -5325,18 +5498,18 @@ static int parser_action_row449[] = {
        45, 0, 131,
        48, 0, 132,
        65, 0, 134,
        45, 0, 131,
        48, 0, 132,
        65, 0, 134,
-       79, 0, 54,
-       80, 0, 135,
-       81, 0, 136,
-       82, 0, 137,
-       83, 0, 138,
-       84, 0, 139,
-       85, 0, 140,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 135,
+       82, 0, 136,
+       83, 0, 137,
+       84, 0, 138,
+       85, 0, 139,
+       86, 0, 140,
+       87, 0, 61
 };
 };
-static int parser_action_row450[] = {
+static int parser_action_row481[] = {
        19,
        19,
-       -1, 3, 449,
+       -1, 3, 480,
        11, 0, 122,
        38, 0, 125,
        40, 0, 126,
        11, 0, 122,
        38, 0, 125,
        40, 0, 126,
@@ -5347,18 +5520,18 @@ static int parser_action_row450[] = {
        45, 0, 131,
        48, 0, 132,
        65, 0, 134,
        45, 0, 131,
        48, 0, 132,
        65, 0, 134,
-       79, 0, 54,
-       80, 0, 135,
-       81, 0, 136,
-       82, 0, 137,
-       83, 0, 138,
-       84, 0, 139,
-       85, 0, 140,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 135,
+       82, 0, 136,
+       83, 0, 137,
+       84, 0, 138,
+       85, 0, 139,
+       86, 0, 140,
+       87, 0, 61
 };
 };
-static int parser_action_row451[] = {
+static int parser_action_row482[] = {
        19,
        19,
-       -1, 3, 450,
+       -1, 3, 481,
        11, 0, 122,
        38, 0, 125,
        40, 0, 126,
        11, 0, 122,
        38, 0, 125,
        40, 0, 126,
@@ -5369,18 +5542,18 @@ static int parser_action_row451[] = {
        45, 0, 131,
        48, 0, 132,
        65, 0, 134,
        45, 0, 131,
        48, 0, 132,
        65, 0, 134,
-       79, 0, 54,
-       80, 0, 135,
-       81, 0, 136,
-       82, 0, 137,
-       83, 0, 138,
-       84, 0, 139,
-       85, 0, 140,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 135,
+       82, 0, 136,
+       83, 0, 137,
+       84, 0, 138,
+       85, 0, 139,
+       86, 0, 140,
+       87, 0, 61
 };
 };
-static int parser_action_row452[] = {
+static int parser_action_row483[] = {
        19,
        19,
-       -1, 3, 451,
+       -1, 3, 482,
        11, 0, 122,
        38, 0, 125,
        40, 0, 126,
        11, 0, 122,
        38, 0, 125,
        40, 0, 126,
@@ -5391,18 +5564,18 @@ static int parser_action_row452[] = {
        45, 0, 131,
        48, 0, 132,
        65, 0, 134,
        45, 0, 131,
        48, 0, 132,
        65, 0, 134,
-       79, 0, 54,
-       80, 0, 135,
-       81, 0, 136,
-       82, 0, 137,
-       83, 0, 138,
-       84, 0, 139,
-       85, 0, 140,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 135,
+       82, 0, 136,
+       83, 0, 137,
+       84, 0, 138,
+       85, 0, 139,
+       86, 0, 140,
+       87, 0, 61
 };
 };
-static int parser_action_row453[] = {
+static int parser_action_row484[] = {
        19,
        19,
-       -1, 3, 452,
+       -1, 3, 483,
        11, 0, 122,
        38, 0, 125,
        40, 0, 126,
        11, 0, 122,
        38, 0, 125,
        40, 0, 126,
@@ -5413,18 +5586,18 @@ static int parser_action_row453[] = {
        45, 0, 131,
        48, 0, 132,
        65, 0, 134,
        45, 0, 131,
        48, 0, 132,
        65, 0, 134,
-       79, 0, 54,
-       80, 0, 135,
-       81, 0, 136,
-       82, 0, 137,
-       83, 0, 138,
-       84, 0, 139,
-       85, 0, 140,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 135,
+       82, 0, 136,
+       83, 0, 137,
+       84, 0, 138,
+       85, 0, 139,
+       86, 0, 140,
+       87, 0, 61
 };
 };
-static int parser_action_row454[] = {
+static int parser_action_row485[] = {
        19,
        19,
-       -1, 3, 453,
+       -1, 3, 484,
        11, 0, 122,
        38, 0, 125,
        40, 0, 126,
        11, 0, 122,
        38, 0, 125,
        40, 0, 126,
@@ -5435,18 +5608,18 @@ static int parser_action_row454[] = {
        45, 0, 131,
        48, 0, 132,
        65, 0, 134,
        45, 0, 131,
        48, 0, 132,
        65, 0, 134,
-       79, 0, 54,
-       80, 0, 135,
-       81, 0, 136,
-       82, 0, 137,
-       83, 0, 138,
-       84, 0, 139,
-       85, 0, 140,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 135,
+       82, 0, 136,
+       83, 0, 137,
+       84, 0, 138,
+       85, 0, 139,
+       86, 0, 140,
+       87, 0, 61
 };
 };
-static int parser_action_row455[] = {
+static int parser_action_row486[] = {
        19,
        19,
-       -1, 3, 454,
+       -1, 3, 485,
        11, 0, 122,
        38, 0, 125,
        40, 0, 126,
        11, 0, 122,
        38, 0, 125,
        40, 0, 126,
@@ -5457,18 +5630,18 @@ static int parser_action_row455[] = {
        45, 0, 131,
        48, 0, 132,
        65, 0, 134,
        45, 0, 131,
        48, 0, 132,
        65, 0, 134,
-       79, 0, 54,
-       80, 0, 135,
-       81, 0, 136,
-       82, 0, 137,
-       83, 0, 138,
-       84, 0, 139,
-       85, 0, 140,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 135,
+       82, 0, 136,
+       83, 0, 137,
+       84, 0, 138,
+       85, 0, 139,
+       86, 0, 140,
+       87, 0, 61
 };
 };
-static int parser_action_row456[] = {
+static int parser_action_row487[] = {
        19,
        19,
-       -1, 3, 455,
+       -1, 3, 486,
        11, 0, 122,
        38, 0, 125,
        40, 0, 126,
        11, 0, 122,
        38, 0, 125,
        40, 0, 126,
@@ -5479,18 +5652,18 @@ static int parser_action_row456[] = {
        45, 0, 131,
        48, 0, 132,
        65, 0, 134,
        45, 0, 131,
        48, 0, 132,
        65, 0, 134,
-       79, 0, 54,
-       80, 0, 135,
-       81, 0, 136,
-       82, 0, 137,
-       83, 0, 138,
-       84, 0, 139,
-       85, 0, 140,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 135,
+       82, 0, 136,
+       83, 0, 137,
+       84, 0, 138,
+       85, 0, 139,
+       86, 0, 140,
+       87, 0, 61
 };
 };
-static int parser_action_row457[] = {
+static int parser_action_row488[] = {
        19,
        19,
-       -1, 3, 456,
+       -1, 3, 487,
        11, 0, 122,
        38, 0, 125,
        40, 0, 126,
        11, 0, 122,
        38, 0, 125,
        40, 0, 126,
@@ -5501,18 +5674,18 @@ static int parser_action_row457[] = {
        45, 0, 131,
        48, 0, 132,
        65, 0, 134,
        45, 0, 131,
        48, 0, 132,
        65, 0, 134,
-       79, 0, 54,
-       80, 0, 135,
-       81, 0, 136,
-       82, 0, 137,
-       83, 0, 138,
-       84, 0, 139,
-       85, 0, 140,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 135,
+       82, 0, 136,
+       83, 0, 137,
+       84, 0, 138,
+       85, 0, 139,
+       86, 0, 140,
+       87, 0, 61
 };
 };
-static int parser_action_row458[] = {
+static int parser_action_row489[] = {
        19,
        19,
-       -1, 3, 457,
+       -1, 3, 488,
        11, 0, 122,
        38, 0, 125,
        40, 0, 126,
        11, 0, 122,
        38, 0, 125,
        40, 0, 126,
@@ -5523,18 +5696,18 @@ static int parser_action_row458[] = {
        45, 0, 131,
        48, 0, 132,
        65, 0, 134,
        45, 0, 131,
        48, 0, 132,
        65, 0, 134,
-       79, 0, 54,
-       80, 0, 135,
-       81, 0, 136,
-       82, 0, 137,
-       83, 0, 138,
-       84, 0, 139,
-       85, 0, 140,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 135,
+       82, 0, 136,
+       83, 0, 137,
+       84, 0, 138,
+       85, 0, 139,
+       86, 0, 140,
+       87, 0, 61
 };
 };
-static int parser_action_row459[] = {
+static int parser_action_row490[] = {
        19,
        19,
-       -1, 3, 458,
+       -1, 3, 489,
        11, 0, 122,
        38, 0, 125,
        40, 0, 126,
        11, 0, 122,
        38, 0, 125,
        40, 0, 126,
@@ -5545,18 +5718,18 @@ static int parser_action_row459[] = {
        45, 0, 131,
        48, 0, 132,
        65, 0, 134,
        45, 0, 131,
        48, 0, 132,
        65, 0, 134,
-       79, 0, 54,
-       80, 0, 135,
-       81, 0, 136,
-       82, 0, 137,
-       83, 0, 138,
-       84, 0, 139,
-       85, 0, 140,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 135,
+       82, 0, 136,
+       83, 0, 137,
+       84, 0, 138,
+       85, 0, 139,
+       86, 0, 140,
+       87, 0, 61
 };
 };
-static int parser_action_row460[] = {
+static int parser_action_row491[] = {
        19,
        19,
-       -1, 3, 459,
+       -1, 3, 490,
        11, 0, 122,
        38, 0, 125,
        40, 0, 126,
        11, 0, 122,
        38, 0, 125,
        40, 0, 126,
@@ -5567,40 +5740,40 @@ static int parser_action_row460[] = {
        45, 0, 131,
        48, 0, 132,
        65, 0, 134,
        45, 0, 131,
        48, 0, 132,
        65, 0, 134,
-       79, 0, 54,
-       80, 0, 135,
-       81, 0, 136,
-       82, 0, 137,
-       83, 0, 138,
-       84, 0, 139,
-       85, 0, 140,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 135,
+       82, 0, 136,
+       83, 0, 137,
+       84, 0, 138,
+       85, 0, 139,
+       86, 0, 140,
+       87, 0, 61
 };
 };
-static int parser_action_row461[] = {
+static int parser_action_row492[] = {
        5,
        5,
-       -1, 3, 460,
-       11, 0, 573,
-       46, 0, 574,
-       80, 0, 575,
-       81, 0, 576
+       -1, 3, 491,
+       11, 0, 621,
+       46, 0, 622,
+       81, 0, 623,
+       82, 0, 624
 };
 };
-static int parser_action_row462[] = {
+static int parser_action_row493[] = {
        5,
        5,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       51, 0, 527,
-       56, 0, 312
+       51, 0, 570,
+       56, 0, 330
 };
 };
-static int parser_action_row463[] = {
+static int parser_action_row494[] = {
        2,
        2,
-       -1, 3, 462,
-       79, 0, 579
+       -1, 3, 493,
+       80, 0, 627
 };
 };
-static int parser_action_row464[] = {
+static int parser_action_row495[] = {
        31,
        31,
-       -1, 3, 463,
-       8, 0, 580,
+       -1, 3, 494,
+       8, 0, 628,
        11, 0, 28,
        14, 0, 30,
        17, 0, 31,
        11, 0, 28,
        14, 0, 30,
        17, 0, 31,
@@ -5622,30 +5795,30 @@ static int parser_action_row464[] = {
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
-       79, 0, 54,
-       80, 0, 55,
-       81, 0, 56,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 55,
+       82, 0, 56,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row465[] = {
+static int parser_action_row496[] = {
        3,
        3,
-       -1, 3, 464,
+       -1, 3, 495,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row466[] = {
+static int parser_action_row497[] = {
        3,
        3,
-       -1, 3, 465,
-       47, 0, 361,
-       79, 0, 362
+       -1, 3, 496,
+       47, 0, 390,
+       80, 0, 391
 };
 };
-static int parser_action_row467[] = {
+static int parser_action_row498[] = {
        23,
        23,
-       -1, 3, 466,
+       -1, 3, 497,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -5660,81 +5833,92 @@ static int parser_action_row467[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 178,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 178,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row468[] = {
+static int parser_action_row499[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row469[] = {
+static int parser_action_row500[] = {
+       3,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row501[] = {
        2,
        2,
-       -1, 3, 468,
-       24, 0, 585
+       -1, 1, 479,
+       58, 0, 634
 };
 };
-static int parser_action_row470[] = {
+static int parser_action_row502[] = {
        2,
        2,
-       -1, 3, 469,
-       14, 0, 586
+       -1, 3, 501,
+       24, 0, 635
 };
 };
-static int parser_action_row471[] = {
+static int parser_action_row503[] = {
+       2,
+       -1, 3, 502,
+       14, 0, 636
+};
+static int parser_action_row504[] = {
        4,
        4,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       52, 0, 587
+       52, 0, 637
 };
 };
-static int parser_action_row472[] = {
+static int parser_action_row505[] = {
        3,
        3,
-       -1, 3, 471,
-       29, 0, 589,
-       55, 0, 590
+       -1, 3, 504,
+       29, 0, 639,
+       55, 0, 640
 };
 };
-static int parser_action_row473[] = {
+static int parser_action_row506[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row474[] = {
+static int parser_action_row507[] = {
        1,
        1,
-       -1, 1, 445
+       -1, 1, 529
 };
 };
-static int parser_action_row475[] = {
+static int parser_action_row508[] = {
        3,
        3,
-       -1, 1, 506,
-       51, 0, 272,
-       63, 0, 512
+       -1, 1, 631,
+       51, 0, 282,
+       63, 0, 547
 };
 };
-static int parser_action_row476[] = {
+static int parser_action_row509[] = {
        1,
        1,
-       -1, 1, 467
+       -1, 1, 551
 };
 };
-static int parser_action_row477[] = {
+static int parser_action_row510[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row478[] = {
+static int parser_action_row511[] = {
        1,
        1,
-       -1, 1, 466
+       -1, 1, 550
 };
 };
-static int parser_action_row479[] = {
+static int parser_action_row512[] = {
        1,
        1,
-       -1, 1, 436
+       -1, 1, 520
 };
 };
-static int parser_action_row480[] = {
+static int parser_action_row513[] = {
        22,
        22,
-       -1, 3, 479,
+       -1, 3, 512,
        11, 0, 170,
        32, 0, 172,
        38, 0, 173,
        11, 0, 170,
        32, 0, 172,
        38, 0, 173,
@@ -5748,24 +5932,24 @@ static int parser_action_row480[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 206,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row481[] = {
+static int parser_action_row514[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row482[] = {
+static int parser_action_row515[] = {
        22,
        22,
-       -1, 3, 481,
+       -1, 3, 514,
        11, 0, 170,
        32, 0, 172,
        38, 0, 173,
        11, 0, 170,
        32, 0, 172,
        38, 0, 173,
@@ -5779,18 +5963,18 @@ static int parser_action_row482[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 206,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row483[] = {
+static int parser_action_row516[] = {
        21,
        21,
-       -1, 3, 482,
+       -1, 3, 515,
        11, 0, 170,
        38, 0, 173,
        40, 0, 174,
        11, 0, 170,
        38, 0, 173,
        40, 0, 174,
@@ -5803,18 +5987,18 @@ static int parser_action_row483[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 206,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row484[] = {
+static int parser_action_row517[] = {
        21,
        21,
-       -1, 3, 483,
+       -1, 3, 516,
        11, 0, 170,
        38, 0, 173,
        40, 0, 174,
        11, 0, 170,
        38, 0, 173,
        40, 0, 174,
@@ -5827,18 +6011,18 @@ static int parser_action_row484[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 206,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row485[] = {
+static int parser_action_row518[] = {
        21,
        21,
-       -1, 3, 484,
+       -1, 3, 517,
        11, 0, 170,
        38, 0, 173,
        40, 0, 174,
        11, 0, 170,
        38, 0, 173,
        40, 0, 174,
@@ -5851,24 +6035,24 @@ static int parser_action_row485[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 206,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row486[] = {
+static int parser_action_row519[] = {
        3,
        3,
-       -1, 3, 485,
-       47, 0, 361,
-       79, 0, 362
+       -1, 3, 518,
+       47, 0, 390,
+       80, 0, 391
 };
 };
-static int parser_action_row487[] = {
+static int parser_action_row520[] = {
        21,
        21,
-       -1, 3, 486,
+       -1, 3, 519,
        11, 0, 170,
        38, 0, 173,
        40, 0, 174,
        11, 0, 170,
        38, 0, 173,
        40, 0, 174,
@@ -5881,18 +6065,18 @@ static int parser_action_row487[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 206,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row488[] = {
+static int parser_action_row521[] = {
        21,
        21,
-       -1, 3, 487,
+       -1, 3, 520,
        11, 0, 170,
        38, 0, 173,
        40, 0, 174,
        11, 0, 170,
        38, 0, 173,
        40, 0, 174,
@@ -5905,18 +6089,18 @@ static int parser_action_row488[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 206,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row489[] = {
+static int parser_action_row522[] = {
        21,
        21,
-       -1, 3, 488,
+       -1, 3, 521,
        11, 0, 170,
        38, 0, 173,
        40, 0, 174,
        11, 0, 170,
        38, 0, 173,
        40, 0, 174,
@@ -5929,18 +6113,18 @@ static int parser_action_row489[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 206,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row490[] = {
+static int parser_action_row523[] = {
        21,
        21,
-       -1, 3, 489,
+       -1, 3, 522,
        11, 0, 170,
        38, 0, 173,
        40, 0, 174,
        11, 0, 170,
        38, 0, 173,
        40, 0, 174,
@@ -5953,18 +6137,18 @@ static int parser_action_row490[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 206,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row491[] = {
+static int parser_action_row524[] = {
        21,
        21,
-       -1, 3, 490,
+       -1, 3, 523,
        11, 0, 170,
        38, 0, 173,
        40, 0, 174,
        11, 0, 170,
        38, 0, 173,
        40, 0, 174,
@@ -5977,18 +6161,18 @@ static int parser_action_row491[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 206,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row492[] = {
+static int parser_action_row525[] = {
        21,
        21,
-       -1, 3, 491,
+       -1, 3, 524,
        11, 0, 170,
        38, 0, 173,
        40, 0, 174,
        11, 0, 170,
        38, 0, 173,
        40, 0, 174,
@@ -6001,18 +6185,18 @@ static int parser_action_row492[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 206,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row493[] = {
+static int parser_action_row526[] = {
        21,
        21,
-       -1, 3, 492,
+       -1, 3, 525,
        11, 0, 170,
        38, 0, 173,
        40, 0, 174,
        11, 0, 170,
        38, 0, 173,
        40, 0, 174,
@@ -6025,18 +6209,18 @@ static int parser_action_row493[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 206,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row494[] = {
+static int parser_action_row527[] = {
        21,
        21,
-       -1, 3, 493,
+       -1, 3, 526,
        11, 0, 170,
        38, 0, 173,
        40, 0, 174,
        11, 0, 170,
        38, 0, 173,
        40, 0, 174,
@@ -6049,18 +6233,18 @@ static int parser_action_row494[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 206,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row495[] = {
+static int parser_action_row528[] = {
        21,
        21,
-       -1, 3, 494,
+       -1, 3, 527,
        11, 0, 170,
        38, 0, 173,
        40, 0, 174,
        11, 0, 170,
        38, 0, 173,
        40, 0, 174,
@@ -6073,18 +6257,18 @@ static int parser_action_row495[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 206,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row496[] = {
+static int parser_action_row529[] = {
        21,
        21,
-       -1, 3, 495,
+       -1, 3, 528,
        11, 0, 170,
        38, 0, 173,
        40, 0, 174,
        11, 0, 170,
        38, 0, 173,
        40, 0, 174,
@@ -6097,18 +6281,18 @@ static int parser_action_row496[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 206,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row497[] = {
+static int parser_action_row530[] = {
        21,
        21,
-       -1, 3, 496,
+       -1, 3, 529,
        11, 0, 170,
        38, 0, 173,
        40, 0, 174,
        11, 0, 170,
        38, 0, 173,
        40, 0, 174,
@@ -6121,18 +6305,18 @@ static int parser_action_row497[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 206,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row498[] = {
+static int parser_action_row531[] = {
        21,
        21,
-       -1, 3, 497,
+       -1, 3, 530,
        11, 0, 170,
        38, 0, 173,
        40, 0, 174,
        11, 0, 170,
        38, 0, 173,
        40, 0, 174,
@@ -6145,52 +6329,52 @@ static int parser_action_row498[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 206,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row499[] = {
+static int parser_action_row532[] = {
        5,
        5,
-       -1, 3, 498,
-       11, 0, 613,
-       46, 0, 534,
-       80, 0, 614,
-       81, 0, 615
+       -1, 3, 531,
+       11, 0, 663,
+       46, 0, 577,
+       81, 0, 664,
+       82, 0, 665
 };
 };
-static int parser_action_row500[] = {
+static int parser_action_row533[] = {
        1,
        1,
-       -1, 1, 437
+       -1, 1, 521
 };
 };
-static int parser_action_row501[] = {
+static int parser_action_row534[] = {
        3,
        3,
-       -1, 3, 500,
-       35, 0, 519,
-       80, 0, 520
+       -1, 3, 533,
+       35, 0, 562,
+       81, 0, 563
 };
 };
-static int parser_action_row502[] = {
+static int parser_action_row535[] = {
        2,
        2,
-       -1, 3, 501,
-       78, 0, 500
+       -1, 3, 534,
+       78, 0, 533
 };
 };
-static int parser_action_row503[] = {
+static int parser_action_row536[] = {
        1,
        1,
-       -1, 1, 702
+       -1, 1, 1036
 };
 };
-static int parser_action_row504[] = {
+static int parser_action_row537[] = {
        1,
        1,
-       -1, 1, 661
+       -1, 1, 991
 };
 };
-static int parser_action_row505[] = {
+static int parser_action_row538[] = {
        33,
        33,
-       -1, 3, 504,
+       -1, 3, 537,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       8, 0, 507,
+       8, 0, 540,
        11, 0, 28,
        14, 0, 30,
        17, 0, 31,
        11, 0, 28,
        14, 0, 30,
        17, 0, 31,
@@ -6212,39 +6396,39 @@ static int parser_action_row505[] = {
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
-       79, 0, 54,
-       80, 0, 55,
-       81, 0, 56,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 55,
+       82, 0, 56,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row506[] = {
+static int parser_action_row539[] = {
        5,
        5,
-       -1, 3, 505,
-       11, 0, 613,
-       46, 0, 534,
-       80, 0, 619,
-       81, 0, 615
+       -1, 3, 538,
+       11, 0, 663,
+       46, 0, 577,
+       81, 0, 669,
+       82, 0, 665
 };
 };
-static int parser_action_row507[] = {
+static int parser_action_row540[] = {
        1,
        1,
-       -1, 1, 703
+       -1, 1, 1037
 };
 };
-static int parser_action_row508[] = {
+static int parser_action_row541[] = {
        1,
        1,
-       -1, 1, 338
+       -1, 1, 418
 };
 };
-static int parser_action_row509[] = {
+static int parser_action_row542[] = {
        1,
        1,
-       -1, 1, 429
+       -1, 1, 513
 };
 };
-static int parser_action_row510[] = {
+static int parser_action_row543[] = {
        31,
        31,
-       -1, 3, 509,
-       8, 0, 620,
+       -1, 3, 542,
+       8, 0, 670,
        11, 0, 28,
        14, 0, 30,
        17, 0, 31,
        11, 0, 28,
        14, 0, 30,
        17, 0, 31,
@@ -6266,38 +6450,72 @@ static int parser_action_row510[] = {
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
-       79, 0, 54,
-       80, 0, 55,
-       81, 0, 56,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 55,
+       82, 0, 56,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row511[] = {
-       2,
-       -1, 1, 329,
-       53, 0, 622
+static int parser_action_row544[] = {
+       3,
+       -1, 1, 772,
+       53, 0, 672,
+       79, 0, 545
 };
 };
-static int parser_action_row512[] = {
+static int parser_action_row545[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row513[] = {
+static int parser_action_row546[] = {
+       6,
+       -1, 3, 545,
+       3, 0, 383,
+       15, 0, 384,
+       16, 0, 385,
+       51, 0, 675,
+       81, 0, 387
+};
+static int parser_action_row547[] = {
+       1,
+       -1, 1, 773
+};
+static int parser_action_row548[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row514[] = {
-       23,
-       -1, 3, 513,
+static int parser_action_row549[] = {
+       2,
+       -1, 1, 609,
+       55, 0, 679
+};
+static int parser_action_row550[] = {
+       2,
+       -1, 3, 549,
+       52, 0, 682
+};
+static int parser_action_row551[] = {
+       36,
+       -1, 3, 550,
        11, 0, 170,
        11, 0, 170,
+       14, 0, 30,
+       17, 0, 31,
        23, 0, 171,
        23, 0, 171,
+       26, 0, 36,
+       27, 0, 37,
+       28, 0, 38,
        32, 0, 172,
        32, 0, 172,
+       33, 0, 683,
+       34, 0, 684,
+       35, 0, 685,
+       36, 0, 686,
+       37, 0, 44,
        38, 0, 173,
        40, 0, 174,
        41, 0, 175,
        38, 0, 173,
        40, 0, 174,
        41, 0, 175,
@@ -6305,130 +6523,184 @@ static int parser_action_row514[] = {
        43, 0, 48,
        44, 0, 49,
        45, 0, 50,
        43, 0, 48,
        44, 0, 49,
        45, 0, 50,
+       47, 0, 390,
        48, 0, 176,
        48, 0, 176,
+       50, 0, 687,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 178,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       79, 0, 205,
+       80, 0, 688,
+       81, 0, 689,
+       82, 0, 56,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row515[] = {
-       5,
-       -1, 3, 514,
-       11, 0, 613,
-       46, 0, 534,
-       80, 0, 626,
-       81, 0, 615
+static int parser_action_row552[] = {
+       1,
+       -1, 1, 605
 };
 };
-static int parser_action_row516[] = {
+static int parser_action_row553[] = {
        3,
        3,
-       -1, 1, 512,
-       55, 0, 627,
-       62, 0, 628
-};
-static int parser_action_row517[] = {
-       1,
-       -1, 1, 511
+       -1, 1, 405,
+       53, 0, 704,
+       79, 0, 205
 };
 };
-static int parser_action_row518[] = {
-       1,
-       -1, 1, 403
+static int parser_action_row554[] = {
+       3,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2
 };
 };
-static int parser_action_row519[] = {
+static int parser_action_row555[] = {
        1,
        1,
-       -1, 1, 408
+       -1, 1, 406
 };
 };
-static int parser_action_row520[] = {
-       1,
-       -1, 1, 394
+static int parser_action_row556[] = {
+       23,
+       -1, 3, 555,
+       11, 0, 170,
+       23, 0, 171,
+       32, 0, 172,
+       38, 0, 173,
+       40, 0, 174,
+       41, 0, 175,
+       42, 0, 47,
+       43, 0, 48,
+       44, 0, 49,
+       45, 0, 50,
+       48, 0, 176,
+       51, 0, 52,
+       53, 0, 53,
+       65, 0, 177,
+       80, 0, 54,
+       81, 0, 178,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row521[] = {
+static int parser_action_row557[] = {
        1,
        1,
-       -1, 1, 393
+       -1, 1, 590
 };
 };
-static int parser_action_row522[] = {
+static int parser_action_row558[] = {
        5,
        5,
-       -1, 3, 521,
-       14, 0, 631,
-       51, 0, 632,
-       58, 0, 633,
-       80, 0, 319
+       -1, 3, 557,
+       11, 0, 663,
+       46, 0, 577,
+       81, 0, 708,
+       82, 0, 665
 };
 };
-static int parser_action_row523[] = {
-       1,
-       -1, 1, 377
+static int parser_action_row559[] = {
+       3,
+       -1, 1, 637,
+       55, 0, 709,
+       62, 0, 710
 };
 };
-static int parser_action_row524[] = {
+static int parser_action_row560[] = {
+       1,
+       -1, 1, 636
+};
+static int parser_action_row561[] = {
+       1,
+       -1, 1, 487
+};
+static int parser_action_row562[] = {
+       1,
+       -1, 1, 492
+};
+static int parser_action_row563[] = {
+       1,
+       -1, 1, 474
+};
+static int parser_action_row564[] = {
+       1,
+       -1, 1, 473
+};
+static int parser_action_row565[] = {
+       5,
+       -1, 3, 564,
+       14, 0, 713,
+       51, 0, 714,
+       58, 0, 715,
+       81, 0, 338
+};
+static int parser_action_row566[] = {
+       1,
+       -1, 1, 457
+};
+static int parser_action_row567[] = {
        3,
        3,
-       -1, 3, 523,
+       -1, 3, 566,
        0, 0, 87,
        1, 0, 88
 };
        0, 0, 87,
        1, 0, 88
 };
-static int parser_action_row525[] = {
-       3,
-       -1, 3, 524,
+static int parser_action_row568[] = {
+       4,
+       -1, 3, 567,
        0, 0, 87,
        0, 0, 87,
-       1, 0, 88
+       1, 0, 88,
+       13, 0, 456
 };
 };
-static int parser_action_row526[] = {
+static int parser_action_row569[] = {
        2,
        2,
-       -1, 1, 276,
-       58, 0, 637
+       -1, 1, 349,
+       58, 0, 720
 };
 };
-static int parser_action_row527[] = {
+static int parser_action_row570[] = {
        1,
        1,
-       -1, 1, 278
+       -1, 1, 351
 };
 };
-static int parser_action_row528[] = {
+static int parser_action_row571[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row529[] = {
+static int parser_action_row572[] = {
        6,
        6,
-       -1, 3, 528,
-       3, 0, 639,
-       13, 0, 640,
-       14, 0, 641,
+       -1, 3, 571,
+       3, 0, 722,
+       13, 0, 723,
+       14, 0, 724,
        29, 0, 39,
        29, 0, 39,
-       91, 0, 62
+       92, 0, 62
 };
 };
-static int parser_action_row530[] = {
+static int parser_action_row573[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row531[] = {
+static int parser_action_row574[] = {
        3,
        3,
-       -1, 1, 290,
-       35, 0, 645,
-       78, 0, 646
+       -1, 1, 363,
+       35, 0, 730,
+       78, 0, 731
 };
 };
-static int parser_action_row532[] = {
+static int parser_action_row575[] = {
        2,
        2,
-       -1, 3, 531,
-       58, 0, 650
+       -1, 3, 574,
+       58, 0, 735
 };
 };
-static int parser_action_row533[] = {
+static int parser_action_row576[] = {
        6,
        6,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2,
        29, 0, 39,
        0, 0, 1,
        1, 0, 2,
        29, 0, 39,
-       53, 0, 651,
-       91, 0, 62
+       53, 0, 736,
+       92, 0, 62
 };
 };
-static int parser_action_row534[] = {
+static int parser_action_row577[] = {
        24,
        24,
-       -1, 1, 510,
+       -1, 1, 635,
        11, 0, 122,
        23, 0, 123,
        32, 0, 124,
        11, 0, 122,
        23, 0, 123,
        32, 0, 124,
@@ -6441,30 +6713,27 @@ static int parser_action_row534[] = {
        45, 0, 131,
        48, 0, 132,
        51, 0, 133,
        45, 0, 131,
        48, 0, 132,
        51, 0, 133,
-       53, 1, 506,
-       63, 1, 506,
+       53, 1, 631,
+       63, 1, 631,
        65, 0, 134,
        65, 0, 134,
-       79, 0, 54,
-       80, 0, 135,
-       81, 0, 136,
-       82, 0, 137,
-       83, 0, 138,
-       84, 0, 139,
-       85, 0, 140,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 135,
+       82, 0, 136,
+       83, 0, 137,
+       84, 0, 138,
+       85, 0, 139,
+       86, 0, 140,
+       87, 0, 61
 };
 };
-static int parser_action_row535[] = {
+static int parser_action_row578[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row536[] = {
+static int parser_action_row579[] = {
        27,
        27,
-       -1, 1, 506,
-       0, 1, 510,
-       1, 1, 510,
-       8, 1, 510,
+       -1, 1, 635,
        11, 0, 122,
        23, 0, 123,
        32, 0, 124,
        11, 0, 122,
        23, 0, 123,
        32, 0, 124,
@@ -6477,119 +6746,144 @@ static int parser_action_row536[] = {
        45, 0, 131,
        48, 0, 132,
        51, 0, 133,
        45, 0, 131,
        48, 0, 132,
        51, 0, 133,
+       53, 1, 631,
+       58, 1, 631,
+       59, 1, 631,
+       60, 1, 631,
+       63, 1, 631,
        65, 0, 134,
        65, 0, 134,
-       78, 1, 510,
-       79, 0, 54,
-       80, 0, 135,
-       81, 0, 136,
-       82, 0, 137,
-       83, 0, 138,
-       84, 0, 139,
-       85, 0, 140,
-       86, 0, 61,
-       92, 1, 510
+       80, 0, 54,
+       81, 0, 135,
+       82, 0, 136,
+       83, 0, 137,
+       84, 0, 138,
+       85, 0, 139,
+       86, 0, 140,
+       87, 0, 61
 };
 };
-static int parser_action_row537[] = {
+static int parser_action_row580[] = {
        4,
        4,
-       -1, 1, 472,
-       58, 0, 665,
-       59, 0, 215,
-       60, 0, 216
+       -1, 1, 556,
+       58, 0, 752,
+       59, 0, 220,
+       60, 0, 221
 };
 };
-static int parser_action_row538[] = {
+static int parser_action_row581[] = {
        1,
        1,
-       -1, 1, 404
+       -1, 1, 488
 };
 };
-static int parser_action_row539[] = {
+static int parser_action_row582[] = {
        1,
        1,
-       -1, 1, 409
+       -1, 1, 493
 };
 };
-static int parser_action_row540[] = {
+static int parser_action_row583[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row541[] = {
+static int parser_action_row584[] = {
        1,
        1,
-       -1, 1, 499
+       -1, 1, 596
 };
 };
-static int parser_action_row542[] = {
+static int parser_action_row585[] = {
+       1,
+       -1, 1, 597
+};
+static int parser_action_row586[] = {
        1,
        -1, 1, 62
 };
        1,
        -1, 1, 62
 };
-static int parser_action_row543[] = {
+static int parser_action_row587[] = {
        1,
        -1, 1, 63
 };
        1,
        -1, 1, 63
 };
-static int parser_action_row544[] = {
+static int parser_action_row588[] = {
        2,
        2,
-       -1, 1, 519,
-       57, 0, 211
+       -1, 1, 644,
+       57, 0, 216
 };
 };
-static int parser_action_row545[] = {
+static int parser_action_row589[] = {
        2,
        2,
-       -1, 3, 544,
-       80, 0, 668
+       -1, 3, 588,
+       81, 0, 755
 };
 };
-static int parser_action_row546[] = {
+static int parser_action_row590[] = {
        1,
        1,
-       -1, 1, 505
+       -1, 1, 321
 };
 };
-static int parser_action_row547[] = {
+static int parser_action_row591[] = {
+       1,
+       -1, 1, 608
+};
+static int parser_action_row592[] = {
+       3,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row593[] = {
+       1,
+       -1, 1, 65
+};
+static int parser_action_row594[] = {
+       1,
+       -1, 1, 630
+};
+static int parser_action_row595[] = {
        2,
        2,
-       -1, 3, 546,
-       52, 0, 669
+       -1, 3, 594,
+       52, 0, 760
 };
 };
-static int parser_action_row548[] = {
+static int parser_action_row596[] = {
        2,
        2,
-       -1, 3, 547,
-       24, 0, 670
+       -1, 3, 595,
+       24, 0, 761
 };
 };
-static int parser_action_row549[] = {
+static int parser_action_row597[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row550[] = {
+static int parser_action_row598[] = {
        1,
        1,
-       -1, 1, 747
+       -1, 1, 851
 };
 };
-static int parser_action_row551[] = {
+static int parser_action_row599[] = {
        2,
        2,
-       -1, 3, 550,
-       63, 0, 548
+       -1, 3, 598,
+       63, 0, 596
 };
 };
-static int parser_action_row552[] = {
+static int parser_action_row600[] = {
        5,
        5,
-       -1, 3, 551,
-       11, 0, 573,
-       46, 0, 574,
-       80, 0, 575,
-       81, 0, 672
+       -1, 3, 599,
+       11, 0, 621,
+       46, 0, 622,
+       81, 0, 623,
+       82, 0, 763
 };
 };
-static int parser_action_row553[] = {
+static int parser_action_row601[] = {
        2,
        2,
-       -1, 1, 512,
-       55, 0, 627
+       -1, 1, 637,
+       55, 0, 709
 };
 };
-static int parser_action_row554[] = {
+static int parser_action_row602[] = {
        6,
        6,
-       -1, 1, 507,
-       53, 1, 504,
-       58, 1, 504,
-       59, 1, 504,
-       60, 1, 504,
-       63, 1, 504
+       -1, 1, 632,
+       53, 1, 629,
+       58, 1, 629,
+       59, 1, 629,
+       60, 1, 629,
+       63, 1, 629
 };
 };
-static int parser_action_row555[] = {
+static int parser_action_row603[] = {
        1,
        1,
-       -1, 1, 720
+       -1, 1, 824
 };
 };
-static int parser_action_row556[] = {
+static int parser_action_row604[] = {
        20,
        20,
-       -1, 3, 555,
+       -1, 3, 603,
        11, 0, 122,
        32, 0, 124,
        38, 0, 125,
        11, 0, 122,
        32, 0, 124,
        38, 0, 125,
@@ -6601,160 +6895,160 @@ static int parser_action_row556[] = {
        45, 0, 131,
        48, 0, 132,
        65, 0, 134,
        45, 0, 131,
        48, 0, 132,
        65, 0, 134,
-       79, 0, 54,
-       80, 0, 135,
-       81, 0, 136,
-       82, 0, 137,
-       83, 0, 138,
-       84, 0, 139,
-       85, 0, 140,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 135,
+       82, 0, 136,
+       83, 0, 137,
+       84, 0, 138,
+       85, 0, 139,
+       86, 0, 140,
+       87, 0, 61
 };
 };
-static int parser_action_row557[] = {
+static int parser_action_row605[] = {
        1,
        1,
-       -1, 1, 719
+       -1, 1, 823
 };
 };
-static int parser_action_row558[] = {
+static int parser_action_row606[] = {
        3,
        3,
-       -1, 1, 730,
-       64, 0, 292,
-       65, 0, 293
+       -1, 1, 834,
+       64, 0, 310,
+       65, 0, 311
 };
 };
-static int parser_action_row559[] = {
+static int parser_action_row607[] = {
        3,
        3,
-       -1, 1, 733,
-       64, 0, 292,
-       65, 0, 293
+       -1, 1, 837,
+       64, 0, 310,
+       65, 0, 311
 };
 };
-static int parser_action_row560[] = {
+static int parser_action_row608[] = {
        3,
        3,
-       -1, 1, 726,
-       64, 0, 292,
-       65, 0, 293
+       -1, 1, 830,
+       64, 0, 310,
+       65, 0, 311
 };
 };
-static int parser_action_row561[] = {
+static int parser_action_row609[] = {
        1,
        1,
-       -1, 1, 735
+       -1, 1, 839
 };
 };
-static int parser_action_row562[] = {
+static int parser_action_row610[] = {
        4,
        4,
-       -1, 1, 737,
-       66, 0, 301,
-       67, 0, 302,
-       68, 0, 303
+       -1, 1, 841,
+       66, 0, 319,
+       67, 0, 320,
+       68, 0, 321
 };
 };
-static int parser_action_row563[] = {
+static int parser_action_row611[] = {
        4,
        4,
-       -1, 1, 738,
-       66, 0, 301,
-       67, 0, 302,
-       68, 0, 303
+       -1, 1, 842,
+       66, 0, 319,
+       67, 0, 320,
+       68, 0, 321
 };
 };
-static int parser_action_row564[] = {
+static int parser_action_row612[] = {
        3,
        3,
-       -1, 1, 725,
-       64, 0, 292,
-       65, 0, 293
+       -1, 1, 829,
+       64, 0, 310,
+       65, 0, 311
 };
 };
-static int parser_action_row565[] = {
+static int parser_action_row613[] = {
        3,
        3,
-       -1, 1, 727,
-       64, 0, 292,
-       65, 0, 293
+       -1, 1, 831,
+       64, 0, 310,
+       65, 0, 311
 };
 };
-static int parser_action_row566[] = {
+static int parser_action_row614[] = {
        3,
        3,
-       -1, 1, 728,
-       64, 0, 292,
-       65, 0, 293
+       -1, 1, 832,
+       64, 0, 310,
+       65, 0, 311
 };
 };
-static int parser_action_row567[] = {
+static int parser_action_row615[] = {
        3,
        3,
-       -1, 1, 729,
-       64, 0, 292,
-       65, 0, 293
+       -1, 1, 833,
+       64, 0, 310,
+       65, 0, 311
 };
 };
-static int parser_action_row568[] = {
+static int parser_action_row616[] = {
        3,
        3,
-       -1, 1, 731,
-       64, 0, 292,
-       65, 0, 293
+       -1, 1, 835,
+       64, 0, 310,
+       65, 0, 311
 };
 };
-static int parser_action_row569[] = {
+static int parser_action_row617[] = {
        3,
        3,
-       -1, 1, 732,
-       64, 0, 292,
-       65, 0, 293
+       -1, 1, 836,
+       64, 0, 310,
+       65, 0, 311
 };
 };
-static int parser_action_row570[] = {
+static int parser_action_row618[] = {
        3,
        3,
-       -1, 1, 734,
-       64, 0, 292,
-       65, 0, 293
+       -1, 1, 838,
+       64, 0, 310,
+       65, 0, 311
 };
 };
-static int parser_action_row571[] = {
+static int parser_action_row619[] = {
        1,
        1,
-       -1, 1, 740
+       -1, 1, 844
 };
 };
-static int parser_action_row572[] = {
+static int parser_action_row620[] = {
        1,
        1,
-       -1, 1, 741
+       -1, 1, 845
 };
 };
-static int parser_action_row573[] = {
+static int parser_action_row621[] = {
        1,
        1,
-       -1, 1, 742
+       -1, 1, 846
 };
 };
-static int parser_action_row574[] = {
+static int parser_action_row622[] = {
        2,
        2,
-       -1, 1, 506,
-       51, 0, 272
+       -1, 1, 631,
+       51, 0, 282
 };
 };
-static int parser_action_row575[] = {
+static int parser_action_row623[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row576[] = {
+static int parser_action_row624[] = {
        2,
        2,
-       -1, 1, 506,
-       51, 0, 272
+       -1, 1, 631,
+       51, 0, 282
 };
 };
-static int parser_action_row577[] = {
+static int parser_action_row625[] = {
        1,
        1,
-       -1, 1, 750
+       -1, 1, 854
 };
 };
-static int parser_action_row578[] = {
+static int parser_action_row626[] = {
        6,
        6,
-       -1, 3, 577,
-       3, 0, 639,
-       13, 0, 677,
-       14, 0, 678,
+       -1, 3, 625,
+       3, 0, 722,
+       13, 0, 768,
+       14, 0, 769,
        29, 0, 39,
        29, 0, 39,
-       91, 0, 62
+       92, 0, 62
 };
 };
-static int parser_action_row579[] = {
+static int parser_action_row627[] = {
        2,
        2,
-       -1, 3, 578,
-       58, 0, 681
+       -1, 3, 626,
+       58, 0, 774
 };
 };
-static int parser_action_row580[] = {
+static int parser_action_row628[] = {
        6,
        6,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2,
        29, 0, 39,
        0, 0, 1,
        1, 0, 2,
        29, 0, 39,
-       53, 0, 651,
-       91, 0, 62
+       53, 0, 736,
+       92, 0, 62
 };
 };
-static int parser_action_row581[] = {
+static int parser_action_row629[] = {
        1,
        1,
-       -1, 1, 344
+       -1, 1, 424
 };
 };
-static int parser_action_row582[] = {
+static int parser_action_row630[] = {
        31,
        31,
-       -1, 3, 581,
-       8, 0, 687,
+       -1, 3, 629,
+       8, 0, 781,
        11, 0, 28,
        14, 0, 30,
        17, 0, 31,
        11, 0, 28,
        14, 0, 30,
        17, 0, 31,
@@ -6776,26 +7070,26 @@ static int parser_action_row582[] = {
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
-       79, 0, 54,
-       80, 0, 55,
-       81, 0, 56,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 55,
+       82, 0, 56,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row583[] = {
+static int parser_action_row631[] = {
        1,
        1,
-       -1, 1, 335
+       -1, 1, 415
 };
 };
-static int parser_action_row584[] = {
+static int parser_action_row632[] = {
        1,
        1,
-       -1, 1, 398
+       -1, 1, 480
 };
 };
-static int parser_action_row585[] = {
+static int parser_action_row633[] = {
        23,
        23,
-       -1, 3, 584,
+       -1, 3, 632,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -6810,55 +7104,87 @@ static int parser_action_row585[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 178,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 178,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row586[] = {
+static int parser_action_row634[] = {
+       23,
+       -1, 3, 633,
+       11, 0, 170,
+       23, 0, 171,
+       32, 0, 172,
+       38, 0, 173,
+       40, 0, 174,
+       41, 0, 175,
+       42, 0, 47,
+       43, 0, 48,
+       44, 0, 49,
+       45, 0, 50,
+       48, 0, 176,
+       51, 0, 52,
+       53, 0, 53,
+       65, 0, 177,
+       80, 0, 54,
+       81, 0, 178,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
+};
+static int parser_action_row635[] = {
+       3,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row636[] = {
        34,
        34,
-       -1, 3, 585,
+       -1, 3, 635,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       8, 0, 689,
-       11, 0, 690,
-       14, 0, 691,
-       17, 0, 692,
-       23, 0, 693,
-       25, 0, 694,
-       26, 0, 695,
-       27, 0, 696,
-       28, 0, 697,
-       33, 0, 698,
-       34, 0, 699,
-       35, 0, 700,
-       36, 0, 701,
-       37, 0, 702,
+       8, 0, 785,
+       11, 0, 786,
+       14, 0, 787,
+       17, 0, 788,
+       23, 0, 789,
+       25, 0, 790,
+       26, 0, 791,
+       27, 0, 792,
+       28, 0, 793,
+       33, 0, 794,
+       34, 0, 795,
+       35, 0, 796,
+       36, 0, 797,
+       37, 0, 798,
        38, 0, 45,
        38, 0, 45,
-       41, 0, 703,
+       41, 0, 799,
        42, 0, 47,
        43, 0, 48,
        44, 0, 49,
        45, 0, 50,
        42, 0, 47,
        43, 0, 48,
        44, 0, 49,
        45, 0, 50,
-       50, 0, 704,
+       50, 0, 800,
        51, 0, 52,
        53, 0, 53,
        51, 0, 52,
        53, 0, 53,
-       79, 0, 54,
-       80, 0, 705,
-       81, 0, 706,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 801,
+       82, 0, 802,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row587[] = {
+static int parser_action_row637[] = {
        33,
        33,
-       -1, 3, 586,
+       -1, 3, 636,
        0, 0, 1,
        1, 0, 2,
        8, 0, 155,
        0, 0, 1,
        1, 0, 2,
        8, 0, 155,
@@ -6883,62 +7209,62 @@ static int parser_action_row587[] = {
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
-       79, 0, 54,
-       80, 0, 55,
-       81, 0, 56,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 55,
+       82, 0, 56,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row588[] = {
+static int parser_action_row638[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row589[] = {
+static int parser_action_row639[] = {
        2,
        2,
-       -1, 3, 588,
-       55, 0, 590
+       -1, 3, 638,
+       55, 0, 640
 };
 };
-static int parser_action_row590[] = {
+static int parser_action_row640[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row591[] = {
+static int parser_action_row641[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row592[] = {
+static int parser_action_row642[] = {
        2,
        2,
-       -1, 3, 591,
-       24, 0, 726
+       -1, 3, 641,
+       24, 0, 822
 };
 };
-static int parser_action_row593[] = {
+static int parser_action_row643[] = {
        1,
        1,
-       -1, 1, 469
+       -1, 1, 553
 };
 };
-static int parser_action_row594[] = {
+static int parser_action_row644[] = {
        5,
        5,
-       -1, 3, 593,
-       11, 0, 613,
-       46, 0, 534,
-       80, 0, 626,
-       81, 0, 727
+       -1, 3, 643,
+       11, 0, 663,
+       46, 0, 577,
+       81, 0, 708,
+       82, 0, 823
 };
 };
-static int parser_action_row595[] = {
+static int parser_action_row645[] = {
        1,
        1,
-       -1, 1, 442
+       -1, 1, 526
 };
 };
-static int parser_action_row596[] = {
+static int parser_action_row646[] = {
        22,
        22,
-       -1, 3, 595,
+       -1, 3, 645,
        11, 0, 170,
        32, 0, 172,
        38, 0, 173,
        11, 0, 170,
        32, 0, 172,
        38, 0, 173,
@@ -6952,289 +7278,423 @@ static int parser_action_row596[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 206,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row597[] = {
+static int parser_action_row647[] = {
        1,
        1,
-       -1, 1, 441
+       -1, 1, 525
 };
 };
-static int parser_action_row598[] = {
+static int parser_action_row648[] = {
        3,
        3,
-       -1, 1, 452,
-       64, 0, 335,
-       65, 0, 336
+       -1, 1, 536,
+       64, 0, 354,
+       65, 0, 355
 };
 };
-static int parser_action_row599[] = {
+static int parser_action_row649[] = {
        3,
        3,
-       -1, 1, 455,
-       64, 0, 335,
-       65, 0, 336
+       -1, 1, 539,
+       64, 0, 354,
+       65, 0, 355
 };
 };
-static int parser_action_row600[] = {
+static int parser_action_row650[] = {
        3,
        3,
-       -1, 1, 448,
-       64, 0, 335,
-       65, 0, 336
+       -1, 1, 532,
+       64, 0, 354,
+       65, 0, 355
 };
 };
-static int parser_action_row601[] = {
+static int parser_action_row651[] = {
        1,
        1,
-       -1, 1, 457
+       -1, 1, 541
 };
 };
-static int parser_action_row602[] = {
+static int parser_action_row652[] = {
        4,
        4,
-       -1, 1, 459,
-       66, 0, 344,
-       67, 0, 345,
-       68, 0, 346
+       -1, 1, 543,
+       66, 0, 363,
+       67, 0, 364,
+       68, 0, 365
 };
 };
-static int parser_action_row603[] = {
+static int parser_action_row653[] = {
        4,
        4,
-       -1, 1, 460,
-       66, 0, 344,
-       67, 0, 345,
-       68, 0, 346
+       -1, 1, 544,
+       66, 0, 363,
+       67, 0, 364,
+       68, 0, 365
 };
 };
-static int parser_action_row604[] = {
+static int parser_action_row654[] = {
        3,
        3,
-       -1, 1, 447,
-       64, 0, 335,
-       65, 0, 336
+       -1, 1, 531,
+       64, 0, 354,
+       65, 0, 355
 };
 };
-static int parser_action_row605[] = {
+static int parser_action_row655[] = {
        3,
        3,
-       -1, 1, 449,
-       64, 0, 335,
-       65, 0, 336
+       -1, 1, 533,
+       64, 0, 354,
+       65, 0, 355
 };
 };
-static int parser_action_row606[] = {
+static int parser_action_row656[] = {
        3,
        3,
-       -1, 1, 450,
-       64, 0, 335,
-       65, 0, 336
+       -1, 1, 534,
+       64, 0, 354,
+       65, 0, 355
 };
 };
-static int parser_action_row607[] = {
+static int parser_action_row657[] = {
        3,
        3,
-       -1, 1, 451,
-       64, 0, 335,
-       65, 0, 336
+       -1, 1, 535,
+       64, 0, 354,
+       65, 0, 355
 };
 };
-static int parser_action_row608[] = {
+static int parser_action_row658[] = {
        3,
        3,
-       -1, 1, 453,
-       64, 0, 335,
-       65, 0, 336
+       -1, 1, 537,
+       64, 0, 354,
+       65, 0, 355
 };
 };
-static int parser_action_row609[] = {
+static int parser_action_row659[] = {
        3,
        3,
-       -1, 1, 454,
-       64, 0, 335,
-       65, 0, 336
+       -1, 1, 538,
+       64, 0, 354,
+       65, 0, 355
 };
 };
-static int parser_action_row610[] = {
+static int parser_action_row660[] = {
        3,
        3,
-       -1, 1, 456,
-       64, 0, 335,
-       65, 0, 336
+       -1, 1, 540,
+       64, 0, 354,
+       65, 0, 355
 };
 };
-static int parser_action_row611[] = {
+static int parser_action_row661[] = {
        1,
        1,
-       -1, 1, 462
+       -1, 1, 546
 };
 };
-static int parser_action_row612[] = {
+static int parser_action_row662[] = {
        1,
        1,
-       -1, 1, 463
+       -1, 1, 547
 };
 };
-static int parser_action_row613[] = {
+static int parser_action_row663[] = {
        1,
        1,
-       -1, 1, 464
+       -1, 1, 548
 };
 };
-static int parser_action_row614[] = {
+static int parser_action_row664[] = {
        2,
        2,
-       -1, 1, 506,
-       51, 0, 272
+       -1, 1, 631,
+       51, 0, 282
 };
 };
-static int parser_action_row615[] = {
+static int parser_action_row665[] = {
        2,
        2,
-       -1, 1, 506,
-       51, 0, 272
+       -1, 1, 631,
+       51, 0, 282
 };
 };
-static int parser_action_row616[] = {
+static int parser_action_row666[] = {
        1,
        1,
-       -1, 1, 472
+       -1, 1, 556
 };
 };
-static int parser_action_row617[] = {
+static int parser_action_row667[] = {
        5,
        5,
-       -1, 3, 616,
-       14, 0, 730,
-       51, 0, 731,
-       58, 0, 732,
-       80, 0, 319
+       -1, 3, 666,
+       14, 0, 826,
+       51, 0, 827,
+       58, 0, 828,
+       81, 0, 338
 };
 };
-static int parser_action_row618[] = {
+static int parser_action_row668[] = {
        1,
        1,
-       -1, 1, 662
+       -1, 1, 992
 };
 };
-static int parser_action_row619[] = {
+static int parser_action_row669[] = {
        1,
        1,
-       -1, 1, 430
+       -1, 1, 514
 };
 };
-static int parser_action_row620[] = {
+static int parser_action_row670[] = {
        2,
        2,
-       -1, 1, 506,
-       51, 0, 272
+       -1, 1, 631,
+       51, 0, 282
 };
 };
-static int parser_action_row621[] = {
+static int parser_action_row671[] = {
        1,
        1,
-       -1, 1, 337
+       -1, 1, 417
 };
 };
-static int parser_action_row622[] = {
+static int parser_action_row672[] = {
        1,
        1,
-       -1, 1, 336
+       -1, 1, 416
 };
 };
-static int parser_action_row623[] = {
+static int parser_action_row673[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row624[] = {
+static int parser_action_row674[] = {
+       1,
+       -1, 1, 774
+};
+static int parser_action_row675[] = {
        3,
        3,
-       -1, 3, 623,
-       47, 0, 361,
-       79, 0, 362
+       -1, 3, 674,
+       47, 0, 390,
+       80, 0, 391
 };
 };
-static int parser_action_row625[] = {
+static int parser_action_row676[] = {
+       5,
+       -1, 3, 675,
+       3, 0, 383,
+       15, 0, 384,
+       16, 0, 385,
+       81, 0, 387
+};
+static int parser_action_row677[] = {
        2,
        2,
-       -1, 3, 624,
-       80, 0, 738
+       -1, 1, 885,
+       79, 0, 545
 };
 };
-static int parser_action_row626[] = {
+static int parser_action_row678[] = {
        1,
        1,
-       -1, 1, 374
+       -1, 1, 883
 };
 };
-static int parser_action_row627[] = {
+static int parser_action_row679[] = {
        2,
        2,
-       -1, 1, 506,
-       51, 0, 272
-};
-static int parser_action_row628[] = {
-       3,
-       -1, 1, 531,
-       0, 0, 1,
-       1, 0, 2
+       -1, 3, 678,
+       81, 0, 836
 };
 };
-static int parser_action_row629[] = {
+static int parser_action_row680[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row630[] = {
+static int parser_action_row681[] = {
        1,
        1,
-       -1, 1, 858
+       -1, 1, 1276
 };
 };
-static int parser_action_row631[] = {
+static int parser_action_row682[] = {
        2,
        2,
-       -1, 1, 513,
-       55, 0, 627
+       -1, 1, 610,
+       55, 0, 679
 };
 };
-static int parser_action_row632[] = {
-       33,
-       -1, 3, 631,
-       0, 0, 1,
-       1, 0, 2,
-       8, 0, 155,
-       11, 0, 28,
-       14, 0, 30,
-       17, 0, 31,
-       23, 0, 35,
-       26, 0, 36,
-       27, 0, 37,
-       28, 0, 38,
-       33, 0, 40,
-       34, 0, 41,
-       35, 0, 42,
-       36, 0, 43,
-       37, 0, 44,
-       38, 0, 45,
-       41, 0, 46,
+static int parser_action_row683[] = {
+       1,
+       -1, 1, 603
+};
+static int parser_action_row684[] = {
+       23,
+       -1, 1, 1093,
+       11, 0, 170,
+       23, 0, 171,
+       32, 0, 172,
+       38, 0, 173,
+       40, 0, 174,
+       41, 0, 175,
        42, 0, 47,
        43, 0, 48,
        44, 0, 49,
        45, 0, 50,
        42, 0, 47,
        43, 0, 48,
        44, 0, 49,
        45, 0, 50,
-       50, 0, 51,
+       48, 0, 176,
        51, 0, 52,
        53, 0, 53,
        51, 0, 52,
        53, 0, 53,
-       79, 0, 54,
-       80, 0, 55,
-       81, 0, 56,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       65, 0, 177,
+       80, 0, 54,
+       81, 0, 178,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row633[] = {
+static int parser_action_row685[] = {
+       24,
+       -1, 1, 1100,
+       11, 0, 170,
+       23, 0, 171,
+       32, 0, 172,
+       38, 0, 173,
+       40, 0, 174,
+       41, 0, 175,
+       42, 0, 47,
+       43, 0, 48,
+       44, 0, 49,
+       45, 0, 50,
+       48, 0, 176,
+       49, 0, 191,
+       51, 0, 52,
+       53, 0, 53,
+       65, 0, 177,
+       80, 0, 54,
+       81, 0, 178,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
+};
+static int parser_action_row686[] = {
+       24,
+       -1, 1, 1095,
+       11, 0, 170,
+       23, 0, 171,
+       32, 0, 172,
+       38, 0, 173,
+       40, 0, 174,
+       41, 0, 175,
+       42, 0, 47,
+       43, 0, 48,
+       44, 0, 49,
+       45, 0, 50,
+       48, 0, 176,
+       49, 0, 191,
+       51, 0, 52,
+       53, 0, 53,
+       65, 0, 177,
+       80, 0, 54,
+       81, 0, 178,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
+};
+static int parser_action_row687[] = {
+       1,
+       -1, 1, 1099
+};
+static int parser_action_row688[] = {
        2,
        2,
-       -1, 3, 632,
-       80, 0, 319
+       -1, 3, 687,
+       10, 0, 844
 };
 };
-static int parser_action_row634[] = {
+static int parser_action_row689[] = {
+       4,
+       -1, 1, 404,
+       53, 0, 553,
+       57, 0, 215,
+       79, 0, 205
+};
+static int parser_action_row690[] = {
        3,
        3,
-       -1, 1, 531,
-       0, 0, 1,
-       1, 0, 2
+       -1, 1, 631,
+       51, 0, 282,
+       57, 0, 216
 };
 };
-static int parser_action_row635[] = {
-       5,
-       -1, 1, 531,
-       0, 0, 1,
-       1, 0, 2,
-       14, 0, 748,
-       58, 0, 749
+static int parser_action_row691[] = {
+       1,
+       -1, 1, 621
 };
 };
-static int parser_action_row636[] = {
+static int parser_action_row692[] = {
        1,
        1,
-       -1, 1, 66
+       -1, 1, 1091
 };
 };
-static int parser_action_row637[] = {
+static int parser_action_row693[] = {
        1,
        1,
-       -1, 1, 65
+       -1, 1, 1092
 };
 };
-static int parser_action_row638[] = {
+static int parser_action_row694[] = {
        1,
        1,
-       -1, 1, 279
+       -1, 1, 1104
 };
 };
-static int parser_action_row639[] = {
-       3,
-       -1, 3, 638,
-       52, 0, 750,
-       80, 0, 751
+static int parser_action_row695[] = {
+       1,
+       -1, 1, 1106
 };
 };
-static int parser_action_row640[] = {
-       3,
-       -1, 1, 531,
-       0, 0, 1,
-       1, 0, 2
+static int parser_action_row696[] = {
+       1,
+       -1, 1, 1105
 };
 };
-static int parser_action_row641[] = {
-       2,
-       -1, 3, 640,
-       19, 0, 755
+static int parser_action_row697[] = {
+       1,
+       -1, 1, 1107
 };
 };
-static int parser_action_row642[] = {
-       33,
-       -1, 3, 641,
+static int parser_action_row698[] = {
+       1,
+       -1, 1, 1108
+};
+static int parser_action_row699[] = {
+       1,
+       -1, 1, 622
+};
+static int parser_action_row700[] = {
+       3,
+       -1, 1, 552,
+       53, 0, 239,
+       63, 0, 845
+};
+static int parser_action_row701[] = {
+       1,
+       -1, 1, 624
+};
+static int parser_action_row702[] = {
+       2,
+       -1, 3, 701,
+       52, 0, 846
+};
+static int parser_action_row703[] = {
+       2,
+       -1, 1, 618,
+       55, 0, 847
+};
+static int parser_action_row704[] = {
+       1,
+       -1, 1, 623
+};
+static int parser_action_row705[] = {
+       3,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row706[] = {
+       1,
+       -1, 1, 407
+};
+static int parser_action_row707[] = {
+       3,
+       -1, 3, 706,
+       47, 0, 390,
+       80, 0, 391
+};
+static int parser_action_row708[] = {
+       1,
+       -1, 1, 454
+};
+static int parser_action_row709[] = {
+       2,
+       -1, 1, 631,
+       51, 0, 282
+};
+static int parser_action_row710[] = {
+       3,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row711[] = {
+       3,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row712[] = {
+       1,
+       -1, 1, 1282
+};
+static int parser_action_row713[] = {
+       2,
+       -1, 1, 638,
+       55, 0, 709
+};
+static int parser_action_row714[] = {
+       33,
+       -1, 3, 713,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       8, 0, 507,
+       8, 0, 155,
        11, 0, 28,
        14, 0, 30,
        17, 0, 31,
        11, 0, 28,
        14, 0, 30,
        17, 0, 31,
@@ -7256,148 +7716,267 @@ static int parser_action_row642[] = {
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
-       79, 0, 54,
-       80, 0, 55,
-       81, 0, 56,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 55,
+       82, 0, 56,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row643[] = {
+static int parser_action_row715[] = {
+       2,
+       -1, 3, 714,
+       81, 0, 338
+};
+static int parser_action_row716[] = {
+       3,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row717[] = {
+       5,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2,
+       14, 0, 861,
+       58, 0, 862
+};
+static int parser_action_row718[] = {
+       1,
+       -1, 1, 68
+};
+static int parser_action_row719[] = {
+       3,
+       -1, 3, 718,
+       0, 0, 87,
+       1, 0, 88
+};
+static int parser_action_row720[] = {
+       1,
+       -1, 1, 66
+};
+static int parser_action_row721[] = {
+       1,
+       -1, 1, 352
+};
+static int parser_action_row722[] = {
+       3,
+       -1, 3, 721,
+       52, 0, 864,
+       81, 0, 865
+};
+static int parser_action_row723[] = {
+       3,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row724[] = {
+       8,
+       -1, 3, 723,
+       0, 0, 87,
+       1, 0, 88,
+       3, 0, 383,
+       15, 0, 384,
+       16, 0, 385,
+       19, 0, 869,
+       81, 0, 387
+};
+static int parser_action_row725[] = {
+       33,
+       -1, 3, 724,
+       0, 0, 1,
+       1, 0, 2,
+       8, 0, 540,
+       11, 0, 28,
+       14, 0, 30,
+       17, 0, 31,
+       23, 0, 35,
+       26, 0, 36,
+       27, 0, 37,
+       28, 0, 38,
+       33, 0, 40,
+       34, 0, 41,
+       35, 0, 42,
+       36, 0, 43,
+       37, 0, 44,
+       38, 0, 45,
+       41, 0, 46,
+       42, 0, 47,
+       43, 0, 48,
+       44, 0, 49,
+       45, 0, 50,
+       50, 0, 51,
+       51, 0, 52,
+       53, 0, 53,
+       80, 0, 54,
+       81, 0, 55,
+       82, 0, 56,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
+};
+static int parser_action_row726[] = {
+       1,
+       -1, 1, 672
+};
+static int parser_action_row727[] = {
+       2,
+       -1, 3, 726,
+       14, 0, 873
+};
+static int parser_action_row728[] = {
        3,
        3,
-       -1, 3, 642,
+       -1, 3, 727,
        29, 0, 39,
        29, 0, 39,
-       91, 0, 62
+       92, 0, 62
 };
 };
-static int parser_action_row644[] = {
+static int parser_action_row729[] = {
        1,
        1,
-       -1, 1, 559
+       -1, 1, 690
 };
 };
-static int parser_action_row645[] = {
+static int parser_action_row730[] = {
        4,
        4,
-       -1, 1, 288,
-       35, 0, 645,
-       58, 1, 567,
-       78, 0, 646
+       -1, 1, 361,
+       35, 0, 730,
+       58, 1, 698,
+       78, 0, 731
 };
 };
-static int parser_action_row646[] = {
+static int parser_action_row731[] = {
        2,
        2,
-       -1, 3, 645,
-       78, 0, 759
+       -1, 3, 730,
+       78, 0, 876
 };
 };
-static int parser_action_row647[] = {
+static int parser_action_row732[] = {
        2,
        2,
-       -1, 3, 646,
-       80, 0, 760
+       -1, 3, 731,
+       81, 0, 877
 };
 };
-static int parser_action_row648[] = {
+static int parser_action_row733[] = {
        1,
        1,
-       -1, 1, 291
+       -1, 1, 364
 };
 };
-static int parser_action_row649[] = {
+static int parser_action_row734[] = {
        1,
        1,
-       -1, 1, 848
+       -1, 1, 1266
 };
 };
-static int parser_action_row650[] = {
+static int parser_action_row735[] = {
        3,
        3,
-       -1, 1, 304,
-       35, 0, 645,
-       78, 0, 646
+       -1, 1, 380,
+       35, 0, 730,
+       78, 0, 731
 };
 };
-static int parser_action_row651[] = {
+static int parser_action_row736[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row652[] = {
+static int parser_action_row737[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row653[] = {
+static int parser_action_row738[] = {
        5,
        5,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2,
        29, 0, 39,
        0, 0, 1,
        1, 0, 2,
        29, 0, 39,
-       91, 0, 62
+       92, 0, 62
 };
 };
-static int parser_action_row654[] = {
+static int parser_action_row739[] = {
        1,
        1,
-       -1, 1, 840
+       -1, 1, 1258
 };
 };
-static int parser_action_row655[] = {
+static int parser_action_row740[] = {
        1,
        1,
-       -1, 1, 842
+       -1, 1, 1260
 };
 };
-static int parser_action_row656[] = {
+static int parser_action_row741[] = {
        3,
        3,
-       -1, 3, 655,
+       -1, 3, 740,
        0, 0, 87,
        1, 0, 88
 };
        0, 0, 87,
        1, 0, 88
 };
-static int parser_action_row657[] = {
+static int parser_action_row742[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row658[] = {
-       9,
-       -1, 1, 258,
-       8, 0, 772,
-       12, 0, 773,
-       15, 0, 774,
-       16, 0, 775,
+static int parser_action_row743[] = {
+       11,
+       -1, 1, 331,
+       3, 0, 890,
+       8, 0, 891,
+       12, 0, 892,
+       15, 0, 893,
+       16, 0, 894,
        20, 0, 32,
        21, 0, 33,
        22, 0, 34,
        20, 0, 32,
        21, 0, 33,
        22, 0, 34,
-       41, 0, 776
+       41, 0, 895,
+       81, 0, 896
 };
 };
-static int parser_action_row659[] = {
+static int parser_action_row744[] = {
+       1,
+       -1, 1, 1290
+};
+static int parser_action_row745[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row660[] = {
+static int parser_action_row746[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row661[] = {
+static int parser_action_row747[] = {
+       5,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2,
+       29, 0, 39,
+       92, 0, 62
+};
+static int parser_action_row748[] = {
        1,
        1,
-       -1, 1, 478
+       -1, 1, 562
 };
 };
-static int parser_action_row662[] = {
+static int parser_action_row749[] = {
        1,
        1,
-       -1, 1, 372
+       -1, 1, 452
 };
 };
-static int parser_action_row663[] = {
+static int parser_action_row750[] = {
        2,
        2,
-       -1, 3, 662,
-       51, 0, 785
+       -1, 3, 749,
+       51, 0, 911
 };
 };
-static int parser_action_row664[] = {
+static int parser_action_row751[] = {
        4,
        4,
-       -1, 1, 474,
-       58, 0, 786,
-       59, 0, 215,
-       60, 0, 216
+       -1, 1, 558,
+       58, 0, 912,
+       59, 0, 220,
+       60, 0, 221
 };
 };
-static int parser_action_row665[] = {
+static int parser_action_row752[] = {
        2,
        2,
-       -1, 1, 366,
-       78, 0, 375
+       -1, 1, 446,
+       78, 0, 403
 };
 };
-static int parser_action_row666[] = {
+static int parser_action_row753[] = {
        23,
        23,
-       -1, 3, 665,
+       -1, 3, 752,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -7412,18 +7991,18 @@ static int parser_action_row666[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 178,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 178,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row667[] = {
+static int parser_action_row754[] = {
        23,
        23,
-       -1, 3, 666,
+       -1, 3, 753,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -7438,73 +8017,104 @@ static int parser_action_row667[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 178,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 178,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row668[] = {
+static int parser_action_row755[] = {
        1,
        1,
-       -1, 1, 501
+       -1, 1, 599
 };
 };
-static int parser_action_row669[] = {
+static int parser_action_row756[] = {
        2,
        2,
-       -1, 1, 520,
-       57, 0, 211
+       -1, 1, 645,
+       57, 0, 216
 };
 };
-static int parser_action_row670[] = {
+static int parser_action_row757[] = {
+       2,
+       -1, 3, 756,
+       8, 0, 917
+};
+static int parser_action_row758[] = {
        1,
        1,
-       -1, 1, 504
+       -1, 1, 1278
 };
 };
-static int parser_action_row671[] = {
+static int parser_action_row759[] = {
+       5,
+       -1, 3, 758,
+       3, 0, 383,
+       15, 0, 384,
+       16, 0, 385,
+       81, 0, 387
+};
+static int parser_action_row760[] = {
+       5,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2,
+       8, 1, 611,
+       14, 1, 611
+};
+static int parser_action_row761[] = {
+       1,
+       -1, 1, 629
+};
+static int parser_action_row762[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row672[] = {
+static int parser_action_row763[] = {
        2,
        2,
-       -1, 3, 671,
-       80, 0, 792
+       -1, 3, 762,
+       81, 0, 921
 };
 };
-static int parser_action_row673[] = {
+static int parser_action_row764[] = {
        3,
        3,
-       -1, 1, 748,
-       53, 1, 750,
-       63, 1, 750
+       -1, 1, 852,
+       53, 1, 854,
+       63, 1, 854
 };
 };
-static int parser_action_row674[] = {
+static int parser_action_row765[] = {
        1,
        1,
-       -1, 1, 721
+       -1, 1, 825
 };
 };
-static int parser_action_row675[] = {
+static int parser_action_row766[] = {
        1,
        1,
-       -1, 1, 756
+       -1, 1, 860
 };
 };
-static int parser_action_row676[] = {
+static int parser_action_row767[] = {
        2,
        2,
-       -1, 3, 675,
-       51, 0, 793
+       -1, 3, 766,
+       51, 0, 922
 };
 };
-static int parser_action_row677[] = {
+static int parser_action_row768[] = {
        1,
        1,
-       -1, 1, 752
+       -1, 1, 856
 };
 };
-static int parser_action_row678[] = {
-       2,
-       -1, 3, 677,
-       19, 0, 794
+static int parser_action_row769[] = {
+       8,
+       -1, 3, 768,
+       0, 0, 87,
+       1, 0, 88,
+       3, 0, 383,
+       15, 0, 384,
+       16, 0, 385,
+       19, 0, 923,
+       81, 0, 387
 };
 };
-static int parser_action_row679[] = {
+static int parser_action_row770[] = {
        33,
        33,
-       -1, 3, 678,
+       -1, 3, 769,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       8, 0, 507,
+       8, 0, 540,
        11, 0, 28,
        14, 0, 30,
        17, 0, 31,
        11, 0, 28,
        14, 0, 30,
        17, 0, 31,
@@ -7526,84 +8136,133 @@ static int parser_action_row679[] = {
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
-       79, 0, 54,
-       80, 0, 55,
-       81, 0, 56,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 55,
+       82, 0, 56,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row680[] = {
+static int parser_action_row771[] = {
+       1,
+       -1, 1, 673
+};
+static int parser_action_row772[] = {
+       2,
+       -1, 3, 771,
+       14, 0, 925
+};
+static int parser_action_row773[] = {
        3,
        3,
-       -1, 3, 679,
+       -1, 3, 772,
        29, 0, 39,
        29, 0, 39,
-       91, 0, 62
+       92, 0, 62
 };
 };
-static int parser_action_row681[] = {
+static int parser_action_row774[] = {
        1,
        1,
-       -1, 1, 560
+       -1, 1, 691
 };
 };
-static int parser_action_row682[] = {
+static int parser_action_row775[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row683[] = {
+static int parser_action_row776[] = {
        5,
        5,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2,
        29, 0, 39,
        0, 0, 1,
        1, 0, 2,
        29, 0, 39,
-       91, 0, 62
+       92, 0, 62
 };
 };
-static int parser_action_row684[] = {
+static int parser_action_row777[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row685[] = {
-       9,
-       -1, 1, 258,
-       8, 0, 805,
-       12, 0, 773,
-       15, 0, 774,
-       16, 0, 775,
+static int parser_action_row778[] = {
+       11,
+       -1, 1, 331,
+       3, 0, 890,
+       8, 0, 936,
+       12, 0, 892,
+       15, 0, 893,
+       16, 0, 894,
        20, 0, 32,
        21, 0, 33,
        22, 0, 34,
        20, 0, 32,
        21, 0, 33,
        22, 0, 34,
-       41, 0, 776
+       41, 0, 895,
+       81, 0, 896
 };
 };
-static int parser_action_row686[] = {
+static int parser_action_row779[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row687[] = {
+static int parser_action_row780[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row688[] = {
+static int parser_action_row781[] = {
+       5,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2,
+       29, 0, 39,
+       92, 0, 62
+};
+static int parser_action_row782[] = {
        1,
        1,
-       -1, 1, 345
+       -1, 1, 425
 };
 };
-static int parser_action_row689[] = {
+static int parser_action_row783[] = {
        1,
        1,
-       -1, 1, 399
+       -1, 1, 482
 };
 };
-static int parser_action_row690[] = {
+static int parser_action_row784[] = {
        1,
        1,
-       -1, 1, 420
+       -1, 1, 481
 };
 };
-static int parser_action_row691[] = {
+static int parser_action_row785[] = {
+       23,
+       -1, 3, 784,
+       11, 0, 170,
+       23, 0, 171,
+       32, 0, 172,
+       38, 0, 173,
+       40, 0, 174,
+       41, 0, 175,
+       42, 0, 47,
+       43, 0, 48,
+       44, 0, 49,
+       45, 0, 50,
+       48, 0, 176,
+       51, 0, 52,
+       53, 0, 53,
+       65, 0, 177,
+       80, 0, 54,
+       81, 0, 178,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
+};
+static int parser_action_row786[] = {
+       1,
+       -1, 1, 504
+};
+static int parser_action_row787[] = {
        24,
        24,
-       -1, 1, 510,
+       -1, 1, 635,
        11, 0, 122,
        23, 0, 123,
        32, 0, 124,
        11, 0, 122,
        23, 0, 123,
        32, 0, 124,
@@ -7616,71 +8275,71 @@ static int parser_action_row691[] = {
        45, 0, 131,
        48, 0, 132,
        51, 0, 133,
        45, 0, 131,
        48, 0, 132,
        51, 0, 133,
-       53, 1, 506,
-       63, 1, 506,
+       53, 1, 631,
+       63, 1, 631,
        65, 0, 134,
        65, 0, 134,
-       79, 0, 54,
-       80, 0, 135,
-       81, 0, 136,
-       82, 0, 137,
-       83, 0, 138,
-       84, 0, 139,
-       85, 0, 140,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 135,
+       82, 0, 136,
+       83, 0, 137,
+       84, 0, 138,
+       85, 0, 139,
+       86, 0, 140,
+       87, 0, 61
 };
 };
-static int parser_action_row692[] = {
+static int parser_action_row788[] = {
        33,
        33,
-       -1, 3, 691,
+       -1, 3, 787,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       8, 0, 810,
-       11, 0, 690,
-       14, 0, 691,
-       17, 0, 692,
-       23, 0, 693,
-       26, 0, 695,
-       27, 0, 696,
-       28, 0, 697,
-       33, 0, 698,
-       34, 0, 699,
-       35, 0, 700,
-       36, 0, 701,
-       37, 0, 702,
+       8, 0, 946,
+       11, 0, 786,
+       14, 0, 787,
+       17, 0, 788,
+       23, 0, 789,
+       26, 0, 791,
+       27, 0, 792,
+       28, 0, 793,
+       33, 0, 794,
+       34, 0, 795,
+       35, 0, 796,
+       36, 0, 797,
+       37, 0, 798,
        38, 0, 45,
        38, 0, 45,
-       41, 0, 703,
+       41, 0, 799,
        42, 0, 47,
        43, 0, 48,
        44, 0, 49,
        45, 0, 50,
        42, 0, 47,
        43, 0, 48,
        44, 0, 49,
        45, 0, 50,
-       50, 0, 704,
+       50, 0, 800,
        51, 0, 52,
        53, 0, 53,
        51, 0, 52,
        53, 0, 53,
-       79, 0, 54,
-       80, 0, 705,
-       81, 0, 706,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 801,
+       82, 0, 802,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row693[] = {
+static int parser_action_row789[] = {
        2,
        2,
-       -1, 3, 692,
-       80, 0, 815
+       -1, 3, 788,
+       81, 0, 951
 };
 };
-static int parser_action_row694[] = {
+static int parser_action_row790[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row695[] = {
+static int parser_action_row791[] = {
        33,
        33,
-       -1, 3, 694,
+       -1, 3, 790,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       8, 0, 507,
+       8, 0, 540,
        11, 0, 28,
        14, 0, 30,
        17, 0, 31,
        11, 0, 28,
        14, 0, 30,
        17, 0, 31,
@@ -7702,69 +8361,69 @@ static int parser_action_row695[] = {
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
-       79, 0, 54,
-       80, 0, 55,
-       81, 0, 56,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 55,
+       82, 0, 56,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row696[] = {
+static int parser_action_row792[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row697[] = {
+static int parser_action_row793[] = {
        33,
        33,
-       -1, 3, 696,
+       -1, 3, 792,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       8, 0, 810,
-       11, 0, 690,
-       14, 0, 691,
-       17, 0, 692,
-       23, 0, 693,
-       26, 0, 695,
-       27, 0, 696,
-       28, 0, 697,
-       33, 0, 698,
-       34, 0, 699,
-       35, 0, 700,
-       36, 0, 701,
-       37, 0, 702,
+       8, 0, 946,
+       11, 0, 786,
+       14, 0, 787,
+       17, 0, 788,
+       23, 0, 789,
+       26, 0, 791,
+       27, 0, 792,
+       28, 0, 793,
+       33, 0, 794,
+       34, 0, 795,
+       35, 0, 796,
+       36, 0, 797,
+       37, 0, 798,
        38, 0, 45,
        38, 0, 45,
-       41, 0, 703,
+       41, 0, 799,
        42, 0, 47,
        43, 0, 48,
        44, 0, 49,
        45, 0, 50,
        42, 0, 47,
        43, 0, 48,
        44, 0, 49,
        45, 0, 50,
-       50, 0, 704,
+       50, 0, 800,
        51, 0, 52,
        53, 0, 53,
        51, 0, 52,
        53, 0, 53,
-       79, 0, 54,
-       80, 0, 705,
-       81, 0, 706,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 801,
+       82, 0, 802,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row698[] = {
+static int parser_action_row794[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row699[] = {
+static int parser_action_row795[] = {
        24,
        24,
-       -1, 1, 349,
+       -1, 1, 429,
        11, 0, 170,
        23, 0, 171,
        11, 0, 170,
        23, 0, 171,
-       25, 1, 635,
+       25, 1, 965,
        32, 0, 172,
        38, 0, 173,
        40, 0, 174,
        32, 0, 172,
        38, 0, 173,
        40, 0, 174,
@@ -7777,21 +8436,21 @@ static int parser_action_row699[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 355,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 374,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row700[] = {
+static int parser_action_row796[] = {
        25,
        25,
-       -1, 1, 356,
+       -1, 1, 436,
        11, 0, 170,
        23, 0, 171,
        11, 0, 170,
        23, 0, 171,
-       25, 1, 642,
+       25, 1, 972,
        32, 0, 172,
        38, 0, 173,
        40, 0, 174,
        32, 0, 172,
        38, 0, 173,
        40, 0, 174,
@@ -7805,21 +8464,21 @@ static int parser_action_row700[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 355,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 374,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row701[] = {
+static int parser_action_row797[] = {
        25,
        25,
-       -1, 1, 351,
+       -1, 1, 431,
        11, 0, 170,
        23, 0, 171,
        11, 0, 170,
        23, 0, 171,
-       25, 1, 637,
+       25, 1, 967,
        32, 0, 172,
        38, 0, 173,
        40, 0, 174,
        32, 0, 172,
        38, 0, 173,
        40, 0, 174,
@@ -7833,23 +8492,23 @@ static int parser_action_row701[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 355,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 374,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row702[] = {
+static int parser_action_row798[] = {
        2,
        2,
-       -1, 1, 355,
-       25, 1, 641
+       -1, 1, 435,
+       25, 1, 971
 };
 };
-static int parser_action_row703[] = {
+static int parser_action_row799[] = {
        23,
        23,
-       -1, 3, 702,
+       -1, 3, 798,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -7864,18 +8523,18 @@ static int parser_action_row703[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 196,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 196,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row704[] = {
+static int parser_action_row800[] = {
        24,
        24,
-       -1, 1, 510,
+       -1, 1, 635,
        11, 0, 122,
        23, 0, 123,
        32, 0, 124,
        11, 0, 122,
        23, 0, 123,
        32, 0, 124,
@@ -7888,26 +8547,26 @@ static int parser_action_row704[] = {
        45, 0, 131,
        48, 0, 132,
        51, 0, 133,
        45, 0, 131,
        48, 0, 132,
        51, 0, 133,
-       53, 1, 506,
-       63, 1, 506,
+       53, 1, 631,
+       63, 1, 631,
        65, 0, 134,
        65, 0, 134,
-       79, 0, 54,
-       80, 0, 135,
-       81, 0, 136,
-       82, 0, 137,
-       83, 0, 138,
-       84, 0, 139,
-       85, 0, 140,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 135,
+       82, 0, 136,
+       83, 0, 137,
+       84, 0, 138,
+       85, 0, 139,
+       86, 0, 140,
+       87, 0, 61
 };
 };
-static int parser_action_row705[] = {
+static int parser_action_row801[] = {
        2,
        2,
-       -1, 3, 704,
-       10, 0, 830
+       -1, 3, 800,
+       10, 0, 966
 };
 };
-static int parser_action_row706[] = {
+static int parser_action_row802[] = {
        28,
        28,
-       -1, 1, 510,
+       -1, 1, 635,
        11, 0, 122,
        23, 0, 123,
        32, 0, 124,
        11, 0, 122,
        23, 0, 123,
        32, 0, 124,
@@ -7920,57 +8579,57 @@ static int parser_action_row706[] = {
        45, 0, 131,
        48, 0, 132,
        51, 0, 133,
        45, 0, 131,
        48, 0, 132,
        51, 0, 133,
-       53, 1, 506,
-       57, 0, 211,
-       58, 1, 506,
-       59, 1, 506,
-       60, 1, 506,
-       63, 1, 506,
+       53, 1, 631,
+       57, 0, 216,
+       58, 1, 631,
+       59, 1, 631,
+       60, 1, 631,
+       63, 1, 631,
        65, 0, 134,
        65, 0, 134,
-       79, 0, 54,
-       80, 0, 135,
-       81, 0, 136,
-       82, 0, 137,
-       83, 0, 138,
-       84, 0, 139,
-       85, 0, 140,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 135,
+       82, 0, 136,
+       83, 0, 137,
+       84, 0, 138,
+       85, 0, 139,
+       86, 0, 140,
+       87, 0, 61
 };
 };
-static int parser_action_row707[] = {
+static int parser_action_row803[] = {
        4,
        4,
-       -1, 1, 473,
-       58, 0, 833,
-       59, 0, 215,
-       60, 0, 216
+       -1, 1, 557,
+       58, 0, 969,
+       59, 0, 220,
+       60, 0, 221
 };
 };
-static int parser_action_row708[] = {
+static int parser_action_row804[] = {
        1,
        1,
-       -1, 1, 415
+       -1, 1, 499
 };
 };
-static int parser_action_row709[] = {
+static int parser_action_row805[] = {
        1,
        1,
-       -1, 1, 417
+       -1, 1, 501
 };
 };
-static int parser_action_row710[] = {
+static int parser_action_row806[] = {
        3,
        3,
-       -1, 3, 709,
-       53, 0, 230,
-       63, 0, 835
+       -1, 3, 805,
+       53, 0, 239,
+       63, 0, 971
 };
 };
-static int parser_action_row711[] = {
+static int parser_action_row807[] = {
        2,
        2,
-       -1, 3, 710,
-       41, 0, 837
+       -1, 3, 806,
+       41, 0, 973
 };
 };
-static int parser_action_row712[] = {
+static int parser_action_row808[] = {
        32,
        32,
-       -1, 3, 711,
-       8, 0, 689,
+       -1, 3, 807,
+       8, 0, 785,
        11, 0, 28,
        14, 0, 30,
        17, 0, 31,
        23, 0, 35,
        11, 0, 28,
        14, 0, 30,
        17, 0, 31,
        23, 0, 35,
-       25, 0, 694,
+       25, 0, 790,
        26, 0, 36,
        27, 0, 37,
        28, 0, 38,
        26, 0, 36,
        27, 0, 37,
        28, 0, 38,
@@ -7988,69 +8647,69 @@ static int parser_action_row712[] = {
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
-       79, 0, 54,
-       80, 0, 55,
-       81, 0, 56,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 55,
+       82, 0, 56,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row713[] = {
+static int parser_action_row809[] = {
        2,
        2,
-       -1, 3, 712,
-       25, 0, 841
+       -1, 3, 808,
+       25, 0, 977
 };
 };
-static int parser_action_row714[] = {
+static int parser_action_row810[] = {
        1,
        1,
-       -1, 1, 633
+       -1, 1, 963
 };
 };
-static int parser_action_row715[] = {
+static int parser_action_row811[] = {
        1,
        1,
-       -1, 1, 634
+       -1, 1, 964
 };
 };
-static int parser_action_row716[] = {
+static int parser_action_row812[] = {
        1,
        1,
-       -1, 1, 646
+       -1, 1, 976
 };
 };
-static int parser_action_row717[] = {
+static int parser_action_row813[] = {
        1,
        1,
-       -1, 1, 647
+       -1, 1, 977
 };
 };
-static int parser_action_row718[] = {
+static int parser_action_row814[] = {
        1,
        1,
-       -1, 1, 649
+       -1, 1, 979
 };
 };
-static int parser_action_row719[] = {
+static int parser_action_row815[] = {
        1,
        1,
-       -1, 1, 648
+       -1, 1, 978
 };
 };
-static int parser_action_row720[] = {
+static int parser_action_row816[] = {
        1,
        1,
-       -1, 1, 650
+       -1, 1, 980
 };
 };
-static int parser_action_row721[] = {
+static int parser_action_row817[] = {
        1,
        1,
-       -1, 1, 651
+       -1, 1, 981
 };
 };
-static int parser_action_row722[] = {
+static int parser_action_row818[] = {
        1,
        1,
-       -1, 1, 424
+       -1, 1, 508
 };
 };
-static int parser_action_row723[] = {
+static int parser_action_row819[] = {
        2,
        2,
-       -1, 3, 722,
+       -1, 3, 818,
        49, 0, 191
 };
        49, 0, 191
 };
-static int parser_action_row724[] = {
+static int parser_action_row820[] = {
        2,
        2,
-       -1, 3, 723,
-       29, 0, 843
+       -1, 3, 819,
+       29, 0, 979
 };
 };
-static int parser_action_row725[] = {
+static int parser_action_row821[] = {
        23,
        23,
-       -1, 3, 724,
+       -1, 3, 820,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -8065,130 +8724,151 @@ static int parser_action_row725[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 206,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row726[] = {
+static int parser_action_row822[] = {
        2,
        2,
-       -1, 3, 725,
-       80, 0, 845
+       -1, 3, 821,
+       81, 0, 981
 };
 };
-static int parser_action_row727[] = {
+static int parser_action_row823[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row728[] = {
+static int parser_action_row824[] = {
        3,
        3,
-       -1, 1, 470,
-       53, 1, 472,
-       63, 1, 472
+       -1, 1, 554,
+       53, 1, 556,
+       63, 1, 556
 };
 };
-static int parser_action_row729[] = {
+static int parser_action_row825[] = {
        1,
        1,
-       -1, 1, 443
+       -1, 1, 527
 };
 };
-static int parser_action_row730[] = {
+static int parser_action_row826[] = {
        2,
        2,
-       -1, 1, 474,
-       78, 0, 375
+       -1, 1, 558,
+       78, 0, 403
 };
 };
-static int parser_action_row731[] = {
+static int parser_action_row827[] = {
        33,
        33,
-       -1, 3, 730,
+       -1, 3, 826,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       8, 0, 810,
-       11, 0, 690,
-       14, 0, 691,
-       17, 0, 692,
-       23, 0, 693,
-       26, 0, 695,
-       27, 0, 696,
-       28, 0, 697,
-       33, 0, 698,
-       34, 0, 699,
-       35, 0, 700,
-       36, 0, 701,
-       37, 0, 702,
+       8, 0, 946,
+       11, 0, 786,
+       14, 0, 787,
+       17, 0, 788,
+       23, 0, 789,
+       26, 0, 791,
+       27, 0, 792,
+       28, 0, 793,
+       33, 0, 794,
+       34, 0, 795,
+       35, 0, 796,
+       36, 0, 797,
+       37, 0, 798,
        38, 0, 45,
        38, 0, 45,
-       41, 0, 703,
+       41, 0, 799,
        42, 0, 47,
        43, 0, 48,
        44, 0, 49,
        45, 0, 50,
        42, 0, 47,
        43, 0, 48,
        44, 0, 49,
        45, 0, 50,
-       50, 0, 704,
+       50, 0, 800,
        51, 0, 52,
        53, 0, 53,
        51, 0, 52,
        53, 0, 53,
-       79, 0, 54,
-       80, 0, 705,
-       81, 0, 706,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 801,
+       82, 0, 802,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row732[] = {
+static int parser_action_row828[] = {
        2,
        2,
-       -1, 3, 731,
-       80, 0, 319
+       -1, 3, 827,
+       81, 0, 338
 };
 };
-static int parser_action_row733[] = {
+static int parser_action_row829[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row734[] = {
+static int parser_action_row830[] = {
        5,
        5,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       14, 0, 853,
-       58, 0, 854
+       14, 0, 989,
+       58, 0, 990
 };
 };
-static int parser_action_row735[] = {
+static int parser_action_row831[] = {
        2,
        2,
-       -1, 1, 474,
-       78, 0, 500
+       -1, 1, 558,
+       78, 0, 533
 };
 };
-static int parser_action_row736[] = {
+static int parser_action_row832[] = {
        3,
        3,
-       -1, 3, 735,
-       47, 0, 361,
-       79, 0, 362
+       -1, 3, 831,
+       47, 0, 390,
+       80, 0, 391
 };
 };
-static int parser_action_row737[] = {
+static int parser_action_row833[] = {
        2,
        2,
-       -1, 1, 332,
-       55, 0, 857
+       -1, 1, 412,
+       55, 0, 993
 };
 };
-static int parser_action_row738[] = {
+static int parser_action_row834[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row739[] = {
+static int parser_action_row835[] = {
        2,
        2,
-       -1, 1, 506,
-       51, 0, 272
+       -1, 3, 834,
+       52, 0, 997
 };
 };
-static int parser_action_row740[] = {
+static int parser_action_row836[] = {
        1,
        1,
-       -1, 1, 474
+       -1, 1, 886
 };
 };
-static int parser_action_row741[] = {
+static int parser_action_row837[] = {
+       2,
+       -1, 1, 631,
+       51, 0, 282
+};
+static int parser_action_row838[] = {
+       5,
+       -1, 3, 837,
+       3, 0, 383,
+       15, 0, 384,
+       16, 0, 385,
+       81, 0, 387
+};
+static int parser_action_row839[] = {
+       1,
+       -1, 1, 1277
+};
+static int parser_action_row840[] = {
+       1,
+       -1, 1, 1094
+};
+static int parser_action_row841[] = {
        23,
        23,
-       -1, 3, 740,
+       -1, 1, 1101,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -8203,57 +8883,165 @@ static int parser_action_row741[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 206,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
-};
-static int parser_action_row742[] = {
-       22,
-       -1, 3, 741,
-       11, 0, 863,
-       23, 0, 864,
-       32, 0, 865,
-       38, 0, 866,
-       40, 0, 867,
-       41, 0, 868,
-       42, 0, 869,
-       43, 0, 870,
-       44, 0, 871,
-       45, 0, 872,
-       48, 0, 873,
-       51, 0, 874,
-       65, 0, 875,
-       79, 0, 54,
-       80, 0, 876,
-       81, 0, 877,
-       82, 0, 878,
-       83, 0, 879,
-       84, 0, 880,
-       85, 0, 881,
-       86, 0, 61
-};
-static int parser_action_row743[] = {
-       1,
-       -1, 1, 859
+       80, 0, 54,
+       81, 0, 178,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row744[] = {
+static int parser_action_row842[] = {
        1,
        1,
-       -1, 1, 381
+       -1, 1, 1102
 };
 };
-static int parser_action_row745[] = {
-       31,
-       -1, 1, 390,
-       8, 0, 308,
-       11, 0, 28,
-       14, 0, 30,
-       17, 0, 31,
-       23, 0, 35,
-       26, 0, 36,
+static int parser_action_row843[] = {
+       23,
+       -1, 1, 1096,
+       11, 0, 170,
+       23, 0, 171,
+       32, 0, 172,
+       38, 0, 173,
+       40, 0, 174,
+       41, 0, 175,
+       42, 0, 47,
+       43, 0, 48,
+       44, 0, 49,
+       45, 0, 50,
+       48, 0, 176,
+       51, 0, 52,
+       53, 0, 53,
+       65, 0, 177,
+       80, 0, 54,
+       81, 0, 178,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
+};
+static int parser_action_row844[] = {
+       1,
+       -1, 1, 1097
+};
+static int parser_action_row845[] = {
+       3,
+       -1, 3, 844,
+       47, 0, 390,
+       80, 0, 391
+};
+static int parser_action_row846[] = {
+       3,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row847[] = {
+       2,
+       -1, 1, 606,
+       79, 0, 205
+};
+static int parser_action_row848[] = {
+       3,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row849[] = {
+       1,
+       -1, 1, 1280
+};
+static int parser_action_row850[] = {
+       2,
+       -1, 1, 619,
+       55, 0, 847
+};
+static int parser_action_row851[] = {
+       3,
+       -1, 3, 850,
+       47, 0, 390,
+       80, 0, 391
+};
+static int parser_action_row852[] = {
+       3,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row853[] = {
+       1,
+       -1, 1, 558
+};
+static int parser_action_row854[] = {
+       23,
+       -1, 3, 853,
+       11, 0, 170,
+       23, 0, 171,
+       32, 0, 172,
+       38, 0, 173,
+       40, 0, 174,
+       41, 0, 175,
+       42, 0, 47,
+       43, 0, 48,
+       44, 0, 49,
+       45, 0, 50,
+       48, 0, 176,
+       51, 0, 52,
+       53, 0, 53,
+       65, 0, 177,
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
+};
+static int parser_action_row855[] = {
+       22,
+       -1, 3, 854,
+       11, 0, 1010,
+       23, 0, 1011,
+       32, 0, 1012,
+       38, 0, 1013,
+       40, 0, 1014,
+       41, 0, 1015,
+       42, 0, 1016,
+       43, 0, 1017,
+       44, 0, 1018,
+       45, 0, 1019,
+       48, 0, 1020,
+       51, 0, 1021,
+       65, 0, 1022,
+       80, 0, 54,
+       81, 0, 1023,
+       82, 0, 1024,
+       83, 0, 1025,
+       84, 0, 1026,
+       85, 0, 1027,
+       86, 0, 1028,
+       87, 0, 61
+};
+static int parser_action_row856[] = {
+       1,
+       -1, 1, 1283
+};
+static int parser_action_row857[] = {
+       1,
+       -1, 1, 461
+};
+static int parser_action_row858[] = {
+       31,
+       -1, 1, 470,
+       8, 0, 326,
+       11, 0, 28,
+       14, 0, 30,
+       17, 0, 31,
+       23, 0, 35,
+       26, 0, 36,
        27, 0, 37,
        28, 0, 38,
        33, 0, 40,
        27, 0, 37,
        28, 0, 38,
        33, 0, 40,
@@ -8270,30 +9058,30 @@ static int parser_action_row745[] = {
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
-       79, 0, 54,
-       80, 0, 55,
-       81, 0, 56,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 55,
+       82, 0, 56,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row746[] = {
+static int parser_action_row859[] = {
        2,
        2,
-       -1, 3, 745,
+       -1, 3, 858,
        49, 0, 191
 };
        49, 0, 191
 };
-static int parser_action_row747[] = {
+static int parser_action_row860[] = {
        4,
        4,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       52, 0, 896
+       52, 0, 1043
 };
 };
-static int parser_action_row748[] = {
+static int parser_action_row861[] = {
        23,
        23,
-       -1, 3, 747,
+       -1, 3, 860,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -8308,18 +9096,18 @@ static int parser_action_row748[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 178,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 178,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row749[] = {
+static int parser_action_row862[] = {
        33,
        33,
-       -1, 3, 748,
+       -1, 3, 861,
        0, 0, 1,
        1, 0, 2,
        8, 0, 155,
        0, 0, 1,
        1, 0, 2,
        8, 0, 155,
@@ -8344,108 +9132,160 @@ static int parser_action_row749[] = {
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
-       79, 0, 54,
-       80, 0, 55,
-       81, 0, 56,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 55,
+       82, 0, 56,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row750[] = {
+static int parser_action_row863[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row751[] = {
+static int parser_action_row864[] = {
+       1,
+       -1, 1, 67
+};
+static int parser_action_row865[] = {
        4,
        4,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       56, 0, 312
+       56, 0, 330
 };
 };
-static int parser_action_row752[] = {
-       2,
-       -1, 1, 301,
-       56, 0, 312
+static int parser_action_row866[] = {
+       3,
+       -1, 1, 374,
+       56, 0, 330,
+       79, 0, 205
 };
 };
-static int parser_action_row753[] = {
+static int parser_action_row867[] = {
        2,
        2,
-       -1, 3, 752,
-       52, 0, 906
+       -1, 3, 866,
+       52, 0, 1054
 };
 };
-static int parser_action_row754[] = {
+static int parser_action_row868[] = {
        4,
        4,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       55, 0, 907
+       55, 0, 1055
 };
 };
-static int parser_action_row755[] = {
+static int parser_action_row869[] = {
        20,
        20,
-       -1, 3, 754,
-       41, 0, 911,
-       47, 0, 361,
-       53, 0, 383,
-       64, 0, 384,
-       65, 0, 385,
-       66, 0, 386,
-       67, 0, 387,
-       68, 0, 388,
-       69, 0, 389,
-       70, 0, 390,
-       71, 0, 391,
-       72, 0, 392,
-       73, 0, 393,
-       74, 0, 394,
-       75, 0, 395,
-       76, 0, 396,
-       77, 0, 397,
-       79, 0, 912,
-       80, 0, 398
+       -1, 3, 868,
+       41, 0, 1059,
+       47, 0, 390,
+       53, 0, 411,
+       64, 0, 412,
+       65, 0, 413,
+       66, 0, 414,
+       67, 0, 415,
+       68, 0, 416,
+       69, 0, 417,
+       70, 0, 418,
+       71, 0, 419,
+       72, 0, 420,
+       73, 0, 421,
+       74, 0, 422,
+       75, 0, 423,
+       76, 0, 424,
+       77, 0, 425,
+       80, 0, 1060,
+       81, 0, 426
 };
 };
-static int parser_action_row756[] = {
+static int parser_action_row870[] = {
        5,
        5,
-       -1, 1, 543,
-       3, 0, 639,
+       -1, 1, 674,
+       3, 0, 722,
        29, 0, 39,
        29, 0, 39,
-       85, 0, 918,
-       91, 0, 62
+       86, 0, 1066,
+       92, 0, 62
 };
 };
-static int parser_action_row757[] = {
+static int parser_action_row871[] = {
        2,
        2,
-       -1, 1, 537,
-       8, 0, 921
+       -1, 1, 321,
+       14, 1, 323
 };
 };
-static int parser_action_row758[] = {
+static int parser_action_row872[] = {
+       3,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row873[] = {
+       2,
+       -1, 1, 662,
+       8, 0, 1070
+};
+static int parser_action_row874[] = {
+       33,
+       -1, 3, 873,
+       0, 0, 1,
+       1, 0, 2,
+       8, 0, 540,
+       11, 0, 28,
+       14, 0, 30,
+       17, 0, 31,
+       23, 0, 35,
+       26, 0, 36,
+       27, 0, 37,
+       28, 0, 38,
+       33, 0, 40,
+       34, 0, 41,
+       35, 0, 42,
+       36, 0, 43,
+       37, 0, 44,
+       38, 0, 45,
+       41, 0, 46,
+       42, 0, 47,
+       43, 0, 48,
+       44, 0, 49,
+       45, 0, 50,
+       50, 0, 51,
+       51, 0, 52,
+       53, 0, 53,
+       80, 0, 54,
+       81, 0, 55,
+       82, 0, 56,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
+};
+static int parser_action_row875[] = {
        1,
        1,
-       -1, 1, 561
+       -1, 1, 692
 };
 };
-static int parser_action_row759[] = {
+static int parser_action_row876[] = {
        2,
        2,
-       -1, 1, 289,
-       58, 1, 568
+       -1, 1, 362,
+       58, 1, 699
 };
 };
-static int parser_action_row760[] = {
+static int parser_action_row877[] = {
        2,
        2,
-       -1, 3, 759,
-       80, 0, 922
+       -1, 3, 876,
+       81, 0, 1072
 };
 };
-static int parser_action_row761[] = {
+static int parser_action_row878[] = {
        3,
        3,
-       -1, 1, 296,
-       51, 0, 923,
-       56, 0, 312
+       -1, 1, 369,
+       51, 0, 1073,
+       56, 0, 330
 };
 };
-static int parser_action_row762[] = {
+static int parser_action_row879[] = {
        1,
        1,
-       -1, 1, 849
+       -1, 1, 1267
 };
 };
-static int parser_action_row763[] = {
+static int parser_action_row880[] = {
        23,
        23,
-       -1, 3, 762,
+       -1, 3, 879,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -8460,177 +9300,271 @@ static int parser_action_row763[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 178,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 178,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row764[] = {
+static int parser_action_row881[] = {
        2,
        2,
-       -1, 3, 763,
-       79, 0, 928
+       -1, 3, 880,
+       80, 0, 1078
 };
 };
-static int parser_action_row765[] = {
+static int parser_action_row882[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row766[] = {
-       9,
-       -1, 1, 258,
-       8, 0, 933,
-       12, 0, 773,
-       15, 0, 774,
-       16, 0, 775,
+static int parser_action_row883[] = {
+       11,
+       -1, 1, 331,
+       3, 0, 890,
+       8, 0, 1083,
+       12, 0, 892,
+       15, 0, 893,
+       16, 0, 894,
        20, 0, 32,
        21, 0, 33,
        22, 0, 34,
        20, 0, 32,
        21, 0, 33,
        22, 0, 34,
-       41, 0, 776
+       41, 0, 895,
+       81, 0, 896
 };
 };
-static int parser_action_row767[] = {
+static int parser_action_row884[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row768[] = {
+static int parser_action_row885[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row769[] = {
+static int parser_action_row886[] = {
+       5,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2,
+       29, 0, 39,
+       92, 0, 62
+};
+static int parser_action_row887[] = {
        1,
        1,
-       -1, 1, 115
+       -1, 1, 152
 };
 };
-static int parser_action_row770[] = {
+static int parser_action_row888[] = {
        9,
        9,
-       -1, 1, 258,
-       8, 0, 937,
-       12, 0, 773,
-       15, 0, 774,
-       16, 0, 775,
+       -1, 1, 331,
+       8, 0, 1091,
+       12, 0, 892,
+       15, 0, 893,
+       16, 0, 894,
        20, 0, 32,
        21, 0, 33,
        22, 0, 34,
        20, 0, 32,
        21, 0, 33,
        22, 0, 34,
-       41, 0, 776
+       41, 0, 895
 };
 };
-static int parser_action_row771[] = {
+static int parser_action_row889[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row772[] = {
+static int parser_action_row890[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row773[] = {
+static int parser_action_row891[] = {
        1,
        1,
-       -1, 1, 71
+       -1, 1, 1249
 };
 };
-static int parser_action_row774[] = {
+static int parser_action_row892[] = {
+       1,
+       -1, 1, 73
+};
+static int parser_action_row893[] = {
        6,
        6,
-       -1, 1, 258,
-       15, 0, 941,
-       16, 0, 942,
+       -1, 1, 331,
+       15, 0, 1095,
+       16, 0, 1096,
        20, 0, 32,
        21, 0, 33,
        22, 0, 34
 };
        20, 0, 32,
        21, 0, 33,
        22, 0, 34
 };
-static int parser_action_row775[] = {
+static int parser_action_row894[] = {
        1,
        1,
-       -1, 1, 252
+       -1, 1, 325
 };
 };
-static int parser_action_row776[] = {
+static int parser_action_row895[] = {
        1,
        1,
-       -1, 1, 254
+       -1, 1, 327
 };
 };
-static int parser_action_row777[] = {
+static int parser_action_row896[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row778[] = {
+static int parser_action_row897[] = {
+       1,
+       -1, 1, 1248
+};
+static int parser_action_row898[] = {
        6,
        6,
-       -1, 1, 258,
-       12, 0, 945,
-       16, 0, 775,
+       -1, 1, 331,
+       12, 0, 1099,
+       16, 0, 894,
        20, 0, 32,
        21, 0, 33,
        22, 0, 34
 };
        20, 0, 32,
        21, 0, 33,
        22, 0, 34
 };
-static int parser_action_row779[] = {
+static int parser_action_row899[] = {
        5,
        5,
-       -1, 1, 258,
-       12, 0, 948,
+       -1, 1, 331,
+       12, 0, 1102,
        20, 0, 32,
        21, 0, 33,
        22, 0, 34
 };
        20, 0, 32,
        21, 0, 33,
        22, 0, 34
 };
-static int parser_action_row780[] = {
+static int parser_action_row900[] = {
        6,
        6,
-       -1, 3, 779,
-       9, 0, 950,
-       10, 0, 951,
-       11, 0, 952,
-       17, 0, 953,
-       38, 0, 954
-};
-static int parser_action_row781[] = {
-       1,
-       -1, 1, 841
+       -1, 3, 899,
+       9, 0, 1104,
+       10, 0, 1105,
+       11, 0, 1106,
+       17, 0, 1107,
+       38, 0, 1108
 };
 };
-static int parser_action_row782[] = {
-       9,
-       -1, 1, 258,
-       8, 0, 955,
-       12, 0, 773,
-       15, 0, 774,
-       16, 0, 775,
-       20, 0, 32,
-       21, 0, 33,
-       22, 0, 34,
-       41, 0, 776
-};
-static int parser_action_row783[] = {
+static int parser_action_row901[] = {
+       37,
+       -1, 3, 900,
+       0, 0, 87,
+       1, 0, 88,
+       11, 0, 122,
+       14, 0, 30,
+       17, 0, 31,
+       23, 0, 123,
+       26, 0, 36,
+       27, 0, 37,
+       28, 0, 38,
+       32, 0, 124,
+       33, 0, 1109,
+       34, 0, 1110,
+       35, 0, 1111,
+       36, 0, 1112,
+       37, 0, 44,
+       38, 0, 125,
+       40, 0, 126,
+       41, 0, 127,
+       42, 0, 128,
+       43, 0, 129,
+       44, 0, 130,
+       45, 0, 131,
+       47, 0, 390,
+       48, 0, 132,
+       50, 0, 1113,
+       51, 0, 1114,
+       65, 0, 134,
+       79, 0, 205,
+       80, 0, 688,
+       81, 0, 1115,
+       82, 0, 1116,
+       83, 0, 137,
+       84, 0, 138,
+       85, 0, 139,
+       86, 0, 140,
+       87, 0, 61
+};
+static int parser_action_row902[] = {
+       1,
+       -1, 1, 1259
+};
+static int parser_action_row903[] = {
+       9,
+       -1, 1, 331,
+       8, 0, 1132,
+       12, 0, 892,
+       15, 0, 893,
+       16, 0, 894,
+       20, 0, 32,
+       21, 0, 33,
+       22, 0, 34,
+       41, 0, 895
+};
+static int parser_action_row904[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row784[] = {
+static int parser_action_row905[] = {
        1,
        1,
-       -1, 1, 843
+       -1, 1, 1261
 };
 };
-static int parser_action_row785[] = {
+static int parser_action_row906[] = {
        8,
        8,
-       -1, 1, 258,
-       8, 0, 957,
-       12, 0, 773,
-       15, 0, 774,
-       16, 0, 775,
+       -1, 1, 331,
+       8, 0, 1134,
+       12, 0, 892,
+       15, 0, 893,
+       16, 0, 894,
        20, 0, 32,
        21, 0, 33,
        22, 0, 34
 };
        20, 0, 32,
        21, 0, 33,
        22, 0, 34
 };
-static int parser_action_row786[] = {
+static int parser_action_row907[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row787[] = {
+static int parser_action_row908[] = {
+       11,
+       -1, 1, 331,
+       3, 0, 890,
+       8, 0, 1138,
+       12, 0, 892,
+       15, 0, 893,
+       16, 0, 894,
+       20, 0, 32,
+       21, 0, 33,
+       22, 0, 34,
+       41, 0, 895,
+       81, 0, 896
+};
+static int parser_action_row909[] = {
+       1,
+       -1, 1, 1291
+};
+static int parser_action_row910[] = {
+       3,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row911[] = {
+       3,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row912[] = {
+       3,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row913[] = {
        23,
        23,
-       -1, 3, 786,
+       -1, 3, 912,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -8645,18 +9579,18 @@ static int parser_action_row787[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 178,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 178,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row788[] = {
+static int parser_action_row914[] = {
        23,
        23,
-       -1, 3, 787,
+       -1, 3, 913,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -8671,30 +9605,78 @@ static int parser_action_row788[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 178,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 178,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row789[] = {
+static int parser_action_row915[] = {
        1,
        1,
-       -1, 1, 368
+       -1, 1, 448
 };
 };
-static int parser_action_row790[] = {
+static int parser_action_row916[] = {
        1,
        1,
-       -1, 1, 400
+       -1, 1, 484
 };
 };
-static int parser_action_row791[] = {
+static int parser_action_row917[] = {
        1,
        1,
-       -1, 1, 405
+       -1, 1, 489
 };
 };
-static int parser_action_row792[] = {
+static int parser_action_row918[] = {
+       1,
+       -1, 1, 322
+};
+static int parser_action_row919[] = {
+       37,
+       -1, 3, 918,
+       0, 0, 87,
+       1, 0, 88,
+       11, 0, 122,
+       14, 0, 30,
+       17, 0, 31,
+       23, 0, 123,
+       26, 0, 36,
+       27, 0, 37,
+       28, 0, 38,
+       32, 0, 124,
+       33, 0, 1109,
+       34, 0, 1110,
+       35, 0, 1111,
+       36, 0, 1112,
+       37, 0, 44,
+       38, 0, 125,
+       40, 0, 126,
+       41, 0, 127,
+       42, 0, 128,
+       43, 0, 129,
+       44, 0, 130,
+       45, 0, 131,
+       47, 0, 390,
+       48, 0, 132,
+       50, 0, 1113,
+       51, 0, 1145,
+       65, 0, 134,
+       79, 0, 205,
+       80, 0, 688,
+       81, 0, 1115,
+       82, 0, 1116,
+       83, 0, 137,
+       84, 0, 138,
+       85, 0, 139,
+       86, 0, 140,
+       87, 0, 61
+};
+static int parser_action_row920[] = {
+       1,
+       -1, 1, 1279
+};
+static int parser_action_row921[] = {
        23,
        23,
-       -1, 3, 791,
+       -1, 3, 920,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -8709,46 +9691,82 @@ static int parser_action_row792[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 206,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row793[] = {
+static int parser_action_row922[] = {
        2,
        2,
-       -1, 1, 506,
-       51, 0, 272
+       -1, 1, 631,
+       51, 0, 282
 };
 };
-static int parser_action_row794[] = {
+static int parser_action_row923[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row795[] = {
+static int parser_action_row924[] = {
        5,
        5,
-       -1, 1, 544,
-       3, 0, 639,
+       -1, 1, 675,
+       3, 0, 722,
        29, 0, 39,
        29, 0, 39,
-       85, 0, 964,
-       91, 0, 62
+       86, 0, 1152,
+       92, 0, 62
 };
 };
-static int parser_action_row796[] = {
+static int parser_action_row925[] = {
        2,
        2,
-       -1, 1, 538,
-       8, 0, 967
+       -1, 1, 663,
+       8, 0, 1155
 };
 };
-static int parser_action_row797[] = {
+static int parser_action_row926[] = {
+       33,
+       -1, 3, 925,
+       0, 0, 1,
+       1, 0, 2,
+       8, 0, 540,
+       11, 0, 28,
+       14, 0, 30,
+       17, 0, 31,
+       23, 0, 35,
+       26, 0, 36,
+       27, 0, 37,
+       28, 0, 38,
+       33, 0, 40,
+       34, 0, 41,
+       35, 0, 42,
+       36, 0, 43,
+       37, 0, 44,
+       38, 0, 45,
+       41, 0, 46,
+       42, 0, 47,
+       43, 0, 48,
+       44, 0, 49,
+       45, 0, 50,
+       50, 0, 51,
+       51, 0, 52,
+       53, 0, 53,
+       80, 0, 54,
+       81, 0, 55,
+       82, 0, 56,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
+};
+static int parser_action_row927[] = {
        1,
        1,
-       -1, 1, 562
+       -1, 1, 693
 };
 };
-static int parser_action_row798[] = {
+static int parser_action_row928[] = {
        23,
        23,
-       -1, 3, 797,
+       -1, 3, 927,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -8763,117 +9781,163 @@ static int parser_action_row798[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 178,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 178,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row799[] = {
+static int parser_action_row929[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row800[] = {
-       9,
-       -1, 1, 258,
-       8, 0, 972,
-       12, 0, 773,
-       15, 0, 774,
-       16, 0, 775,
+static int parser_action_row930[] = {
+       11,
+       -1, 1, 331,
+       3, 0, 890,
+       8, 0, 1161,
+       12, 0, 892,
+       15, 0, 893,
+       16, 0, 894,
        20, 0, 32,
        21, 0, 33,
        22, 0, 34,
        20, 0, 32,
        21, 0, 33,
        22, 0, 34,
-       41, 0, 776
+       41, 0, 895,
+       81, 0, 896
 };
 };
-static int parser_action_row801[] = {
+static int parser_action_row931[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row802[] = {
+static int parser_action_row932[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row803[] = {
+static int parser_action_row933[] = {
+       5,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2,
+       29, 0, 39,
+       92, 0, 62
+};
+static int parser_action_row934[] = {
        9,
        9,
-       -1, 1, 258,
-       8, 0, 976,
-       12, 0, 773,
-       15, 0, 774,
-       16, 0, 775,
+       -1, 1, 331,
+       8, 0, 1169,
+       12, 0, 892,
+       15, 0, 893,
+       16, 0, 894,
        20, 0, 32,
        21, 0, 33,
        22, 0, 34,
        20, 0, 32,
        21, 0, 33,
        22, 0, 34,
-       41, 0, 776
+       41, 0, 895
 };
 };
-static int parser_action_row804[] = {
+static int parser_action_row935[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row805[] = {
+static int parser_action_row936[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row806[] = {
+static int parser_action_row937[] = {
        1,
        1,
-       -1, 1, 72
+       -1, 1, 74
 };
 };
-static int parser_action_row807[] = {
+static int parser_action_row938[] = {
        9,
        9,
-       -1, 1, 258,
-       8, 0, 980,
-       12, 0, 773,
-       15, 0, 774,
-       16, 0, 775,
+       -1, 1, 331,
+       8, 0, 1173,
+       12, 0, 892,
+       15, 0, 893,
+       16, 0, 894,
        20, 0, 32,
        21, 0, 33,
        22, 0, 34,
        20, 0, 32,
        21, 0, 33,
        22, 0, 34,
-       41, 0, 776
+       41, 0, 895
 };
 };
-static int parser_action_row808[] = {
+static int parser_action_row939[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row809[] = {
+static int parser_action_row940[] = {
        8,
        8,
-       -1, 1, 258,
-       8, 0, 982,
-       12, 0, 773,
-       15, 0, 774,
-       16, 0, 775,
+       -1, 1, 331,
+       8, 0, 1175,
+       12, 0, 892,
+       15, 0, 893,
+       16, 0, 894,
        20, 0, 32,
        21, 0, 33,
        22, 0, 34
 };
        20, 0, 32,
        21, 0, 33,
        22, 0, 34
 };
-static int parser_action_row810[] = {
+static int parser_action_row941[] = {
+       3,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row942[] = {
+       11,
+       -1, 1, 331,
+       3, 0, 890,
+       8, 0, 1179,
+       12, 0, 892,
+       15, 0, 893,
+       16, 0, 894,
+       20, 0, 32,
+       21, 0, 33,
+       22, 0, 34,
+       41, 0, 895,
+       81, 0, 896
+};
+static int parser_action_row943[] = {
+       3,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row944[] = {
+       3,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row945[] = {
+       1,
+       -1, 1, 483
+};
+static int parser_action_row946[] = {
        2,
        2,
-       -1, 1, 373,
-       25, 1, 659
+       -1, 1, 453,
+       25, 1, 989
 };
 };
-static int parser_action_row811[] = {
+static int parser_action_row947[] = {
        3,
        3,
-       -1, 1, 338,
-       25, 1, 631,
-       49, 1, 709
+       -1, 1, 418,
+       25, 1, 961,
+       49, 1, 1087
 };
 };
-static int parser_action_row812[] = {
+static int parser_action_row948[] = {
        31,
        31,
-       -1, 3, 811,
-       8, 0, 983,
+       -1, 3, 947,
+       8, 0, 1183,
        11, 0, 28,
        14, 0, 30,
        17, 0, 31,
        11, 0, 28,
        14, 0, 30,
        17, 0, 31,
@@ -8895,38 +9959,39 @@ static int parser_action_row812[] = {
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
-       79, 0, 54,
-       80, 0, 55,
-       81, 0, 56,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 55,
+       82, 0, 56,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row813[] = {
+static int parser_action_row949[] = {
        1,
        1,
-       -1, 1, 688
+       -1, 1, 1022
 };
 };
-static int parser_action_row814[] = {
+static int parser_action_row950[] = {
        1,
        1,
-       -1, 1, 632
+       -1, 1, 962
 };
 };
-static int parser_action_row815[] = {
+static int parser_action_row951[] = {
        2,
        2,
-       -1, 3, 814,
+       -1, 3, 950,
        49, 0, 191
 };
        49, 0, 191
 };
-static int parser_action_row816[] = {
-       4,
-       -1, 1, 396,
-       25, 1, 673,
-       56, 0, 312,
-       58, 0, 986
+static int parser_action_row952[] = {
+       5,
+       -1, 1, 476,
+       25, 1, 1003,
+       56, 0, 330,
+       58, 0, 1186,
+       79, 0, 205
 };
 };
-static int parser_action_row817[] = {
+static int parser_action_row953[] = {
        23,
        23,
-       -1, 3, 816,
+       -1, 3, 952,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -8941,22 +10006,22 @@ static int parser_action_row817[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 206,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row818[] = {
+static int parser_action_row954[] = {
        1,
        1,
-       -1, 1, 419
+       -1, 1, 503
 };
 };
-static int parser_action_row819[] = {
+static int parser_action_row955[] = {
        23,
        23,
-       -1, 3, 818,
+       -1, 3, 954,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -8971,40 +10036,40 @@ static int parser_action_row819[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 206,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row820[] = {
+static int parser_action_row956[] = {
        1,
        1,
-       -1, 1, 691
+       -1, 1, 1025
 };
 };
-static int parser_action_row821[] = {
+static int parser_action_row957[] = {
        2,
        2,
-       -1, 3, 820,
+       -1, 3, 956,
        49, 0, 191
 };
        49, 0, 191
 };
-static int parser_action_row822[] = {
+static int parser_action_row958[] = {
        3,
        3,
-       -1, 3, 821,
-       51, 0, 991,
-       80, 0, 319
+       -1, 3, 957,
+       51, 0, 1192,
+       81, 0, 338
 };
 };
-static int parser_action_row823[] = {
+static int parser_action_row959[] = {
        1,
        1,
-       -1, 1, 636
+       -1, 1, 966
 };
 };
-static int parser_action_row824[] = {
+static int parser_action_row960[] = {
        24,
        24,
-       -1, 1, 357,
+       -1, 1, 437,
        11, 0, 170,
        23, 0, 171,
        11, 0, 170,
        23, 0, 171,
-       25, 1, 643,
+       25, 1, 973,
        32, 0, 172,
        38, 0, 173,
        40, 0, 174,
        32, 0, 172,
        38, 0, 173,
        40, 0, 174,
@@ -9017,25 +10082,25 @@ static int parser_action_row824[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 355,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 374,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row825[] = {
+static int parser_action_row961[] = {
        1,
        1,
-       -1, 1, 644
+       -1, 1, 974
 };
 };
-static int parser_action_row826[] = {
+static int parser_action_row962[] = {
        24,
        24,
-       -1, 1, 352,
+       -1, 1, 432,
        11, 0, 170,
        23, 0, 171,
        11, 0, 170,
        23, 0, 171,
-       25, 1, 638,
+       25, 1, 968,
        32, 0, 172,
        38, 0, 173,
        40, 0, 174,
        32, 0, 172,
        38, 0, 173,
        40, 0, 174,
@@ -9048,22 +10113,22 @@ static int parser_action_row826[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 355,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 374,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row827[] = {
+static int parser_action_row963[] = {
        1,
        1,
-       -1, 1, 639
+       -1, 1, 969
 };
 };
-static int parser_action_row828[] = {
+static int parser_action_row964[] = {
        23,
        23,
-       -1, 3, 827,
+       -1, 3, 963,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -9078,47 +10143,47 @@ static int parser_action_row828[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 355,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 374,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row829[] = {
+static int parser_action_row965[] = {
        2,
        2,
-       -1, 3, 828,
-       25, 0, 996
+       -1, 3, 964,
+       25, 0, 1197
 };
 };
-static int parser_action_row830[] = {
+static int parser_action_row966[] = {
        2,
        2,
-       -1, 1, 370,
-       25, 1, 656
+       -1, 1, 450,
+       25, 1, 986
 };
 };
-static int parser_action_row831[] = {
+static int parser_action_row967[] = {
        3,
        3,
-       -1, 3, 830,
-       47, 0, 361,
-       79, 0, 362
+       -1, 3, 966,
+       47, 0, 390,
+       80, 0, 391
 };
 };
-static int parser_action_row832[] = {
+static int parser_action_row968[] = {
        4,
        4,
-       -1, 1, 475,
-       58, 0, 998,
-       59, 0, 215,
-       60, 0, 216
+       -1, 1, 559,
+       58, 0, 1199,
+       59, 0, 220,
+       60, 0, 221
 };
 };
-static int parser_action_row833[] = {
+static int parser_action_row969[] = {
        3,
        3,
-       -1, 1, 367,
-       25, 1, 653,
-       78, 0, 500
+       -1, 1, 447,
+       25, 1, 983,
+       78, 0, 533
 };
 };
-static int parser_action_row834[] = {
+static int parser_action_row970[] = {
        23,
        23,
-       -1, 3, 833,
+       -1, 3, 969,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -9133,18 +10198,18 @@ static int parser_action_row834[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 355,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 374,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row835[] = {
+static int parser_action_row971[] = {
        23,
        23,
-       -1, 3, 834,
+       -1, 3, 970,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -9159,31 +10224,31 @@ static int parser_action_row835[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 355,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 374,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row836[] = {
+static int parser_action_row972[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row837[] = {
+static int parser_action_row973[] = {
        4,
        4,
-       -1, 1, 480,
-       58, 0, 1004,
-       59, 0, 215,
-       60, 0, 216
+       -1, 1, 564,
+       58, 0, 1205,
+       59, 0, 220,
+       60, 0, 221
 };
 };
-static int parser_action_row838[] = {
+static int parser_action_row974[] = {
        24,
        24,
-       -1, 1, 510,
+       -1, 1, 635,
        11, 0, 122,
        23, 0, 123,
        32, 0, 124,
        11, 0, 122,
        23, 0, 123,
        32, 0, 124,
@@ -9196,40 +10261,40 @@ static int parser_action_row838[] = {
        45, 0, 131,
        48, 0, 132,
        51, 0, 133,
        45, 0, 131,
        48, 0, 132,
        51, 0, 133,
-       53, 1, 506,
-       63, 1, 506,
+       53, 1, 631,
+       63, 1, 631,
        65, 0, 134,
        65, 0, 134,
-       79, 0, 54,
-       80, 0, 135,
-       81, 0, 136,
-       82, 0, 137,
-       83, 0, 138,
-       84, 0, 139,
-       85, 0, 140,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 135,
+       82, 0, 136,
+       83, 0, 137,
+       84, 0, 138,
+       85, 0, 139,
+       86, 0, 140,
+       87, 0, 61
 };
 };
-static int parser_action_row839[] = {
+static int parser_action_row975[] = {
        3,
        3,
-       -1, 3, 838,
-       8, 0, 689,
-       25, 0, 694
+       -1, 3, 974,
+       8, 0, 785,
+       25, 0, 790
 };
 };
-static int parser_action_row840[] = {
+static int parser_action_row976[] = {
        3,
        3,
-       -1, 3, 839,
+       -1, 3, 975,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row841[] = {
+static int parser_action_row977[] = {
        1,
        1,
-       -1, 1, 418
+       -1, 1, 502
 };
 };
-static int parser_action_row842[] = {
+static int parser_action_row978[] = {
        33,
        33,
-       -1, 3, 841,
+       -1, 3, 977,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       8, 0, 507,
+       8, 0, 540,
        11, 0, 28,
        14, 0, 30,
        17, 0, 31,
        11, 0, 28,
        14, 0, 30,
        17, 0, 31,
@@ -9251,38 +10316,38 @@ static int parser_action_row842[] = {
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
-       79, 0, 54,
-       80, 0, 55,
-       81, 0, 56,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 55,
+       82, 0, 56,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row843[] = {
+static int parser_action_row979[] = {
        1,
        1,
-       -1, 1, 423
+       -1, 1, 507
 };
 };
-static int parser_action_row844[] = {
+static int parser_action_row980[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row845[] = {
+static int parser_action_row981[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row846[] = {
+static int parser_action_row982[] = {
        1,
        1,
-       -1, 1, 516
+       -1, 1, 641
 };
 };
-static int parser_action_row847[] = {
+static int parser_action_row983[] = {
        23,
        23,
-       -1, 3, 846,
+       -1, 3, 982,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -9297,23 +10362,23 @@ static int parser_action_row847[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 206,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row848[] = {
+static int parser_action_row984[] = {
        1,
        1,
-       -1, 1, 435
+       -1, 1, 519
 };
 };
-static int parser_action_row849[] = {
+static int parser_action_row985[] = {
        31,
        31,
-       -1, 1, 390,
-       8, 0, 983,
+       -1, 1, 470,
+       8, 0, 1183,
        11, 0, 28,
        14, 0, 30,
        17, 0, 31,
        11, 0, 28,
        14, 0, 30,
        17, 0, 31,
@@ -9335,34 +10400,34 @@ static int parser_action_row849[] = {
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
-       79, 0, 54,
-       80, 0, 55,
-       81, 0, 56,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 55,
+       82, 0, 56,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row850[] = {
+static int parser_action_row986[] = {
        1,
        1,
-       -1, 1, 666
+       -1, 1, 996
 };
 };
-static int parser_action_row851[] = {
+static int parser_action_row987[] = {
        2,
        2,
-       -1, 3, 850,
+       -1, 3, 986,
        49, 0, 191
 };
        49, 0, 191
 };
-static int parser_action_row852[] = {
+static int parser_action_row988[] = {
        4,
        4,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       52, 0, 1014
+       52, 0, 1215
 };
 };
-static int parser_action_row853[] = {
+static int parser_action_row989[] = {
        23,
        23,
-       -1, 3, 852,
+       -1, 3, 988,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -9377,170 +10442,261 @@ static int parser_action_row853[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 355,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 374,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row854[] = {
+static int parser_action_row990[] = {
        33,
        33,
-       -1, 3, 853,
+       -1, 3, 989,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       8, 0, 810,
-       11, 0, 690,
-       14, 0, 691,
-       17, 0, 692,
-       23, 0, 693,
-       26, 0, 695,
-       27, 0, 696,
-       28, 0, 697,
-       33, 0, 698,
-       34, 0, 699,
-       35, 0, 700,
-       36, 0, 701,
-       37, 0, 702,
+       8, 0, 946,
+       11, 0, 786,
+       14, 0, 787,
+       17, 0, 788,
+       23, 0, 789,
+       26, 0, 791,
+       27, 0, 792,
+       28, 0, 793,
+       33, 0, 794,
+       34, 0, 795,
+       35, 0, 796,
+       36, 0, 797,
+       37, 0, 798,
        38, 0, 45,
        38, 0, 45,
-       41, 0, 703,
+       41, 0, 799,
        42, 0, 47,
        43, 0, 48,
        44, 0, 49,
        45, 0, 50,
        42, 0, 47,
        43, 0, 48,
        44, 0, 49,
        45, 0, 50,
-       50, 0, 704,
+       50, 0, 800,
        51, 0, 52,
        53, 0, 53,
        51, 0, 52,
        53, 0, 53,
-       79, 0, 54,
-       80, 0, 705,
-       81, 0, 706,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 801,
+       82, 0, 802,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row855[] = {
+static int parser_action_row991[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row856[] = {
+static int parser_action_row992[] = {
        1,
        1,
-       -1, 1, 701
+       -1, 1, 1035
 };
 };
-static int parser_action_row857[] = {
+static int parser_action_row993[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row858[] = {
+static int parser_action_row994[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row859[] = {
+static int parser_action_row995[] = {
        1,
        1,
-       -1, 1, 852
+       -1, 1, 1270
 };
 };
-static int parser_action_row860[] = {
+static int parser_action_row996[] = {
        2,
        2,
-       -1, 1, 333,
-       55, 0, 857
+       -1, 1, 413,
+       55, 0, 993
 };
 };
-static int parser_action_row861[] = {
+static int parser_action_row997[] = {
        2,
        2,
-       -1, 3, 860,
-       54, 0, 1024
+       -1, 3, 996,
+       54, 0, 1225
 };
 };
-static int parser_action_row862[] = {
+static int parser_action_row998[] = {
        1,
        1,
-       -1, 1, 481
+       -1, 1, 884
 };
 };
-static int parser_action_row863[] = {
+static int parser_action_row999[] = {
+       1,
+       -1, 1, 565
+};
+static int parser_action_row1000[] = {
+       1,
+       -1, 1, 617
+};
+static int parser_action_row1001[] = {
+       1,
+       -1, 1, 1103
+};
+static int parser_action_row1002[] = {
+       1,
+       -1, 1, 1098
+};
+static int parser_action_row1003[] = {
+       2,
+       -1, 3, 1002,
+       56, 0, 1226
+};
+static int parser_action_row1004[] = {
+       5,
+       -1, 3, 1003,
+       11, 0, 663,
+       46, 0, 577,
+       81, 0, 1227,
+       82, 0, 579
+};
+static int parser_action_row1005[] = {
+       1,
+       -1, 1, 607
+};
+static int parser_action_row1006[] = {
+       36,
+       -1, 3, 1005,
+       11, 0, 170,
+       14, 0, 30,
+       17, 0, 31,
+       23, 0, 171,
+       26, 0, 36,
+       27, 0, 37,
+       28, 0, 38,
+       32, 0, 172,
+       33, 0, 683,
+       34, 0, 684,
+       35, 0, 685,
+       36, 0, 686,
+       37, 0, 44,
+       38, 0, 173,
+       40, 0, 174,
+       41, 0, 175,
+       42, 0, 47,
+       43, 0, 48,
+       44, 0, 49,
+       45, 0, 50,
+       47, 0, 390,
+       48, 0, 176,
+       50, 0, 687,
+       51, 0, 52,
+       53, 0, 53,
+       65, 0, 177,
+       79, 0, 205,
+       80, 0, 688,
+       81, 0, 689,
+       82, 0, 56,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
+};
+static int parser_action_row1007[] = {
+       1,
+       -1, 1, 1281
+};
+static int parser_action_row1008[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row864[] = {
+static int parser_action_row1009[] = {
        2,
        2,
-       -1, 1, 506,
-       51, 0, 272
+       -1, 3, 1008,
+       54, 0, 1230
 };
 };
-static int parser_action_row865[] = {
+static int parser_action_row1010[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row866[] = {
+static int parser_action_row1011[] = {
+       2,
+       -1, 1, 631,
+       51, 0, 282
+};
+static int parser_action_row1012[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row867[] = {
+static int parser_action_row1013[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row868[] = {
+static int parser_action_row1014[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row869[] = {
+static int parser_action_row1015[] = {
+       3,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row1016[] = {
        2,
        2,
-       -1, 1, 506,
-       51, 0, 272
+       -1, 1, 631,
+       51, 0, 282
 };
 };
-static int parser_action_row870[] = {
-       1,
-       -1, 1, 617
+static int parser_action_row1017[] = {
+       2,
+       -1, 1, 750,
+       79, 0, 205
 };
 };
-static int parser_action_row871[] = {
-       1,
-       -1, 1, 618
+static int parser_action_row1018[] = {
+       2,
+       -1, 1, 752,
+       79, 0, 205
 };
 };
-static int parser_action_row872[] = {
-       1,
-       -1, 1, 619
+static int parser_action_row1019[] = {
+       2,
+       -1, 1, 754,
+       79, 0, 205
 };
 };
-static int parser_action_row873[] = {
-       1,
-       -1, 1, 620
+static int parser_action_row1020[] = {
+       2,
+       -1, 1, 756,
+       79, 0, 205
 };
 };
-static int parser_action_row874[] = {
+static int parser_action_row1021[] = {
        17,
        17,
-       -1, 3, 873,
-       11, 0, 863,
-       38, 0, 1032,
-       41, 0, 868,
-       42, 0, 869,
-       43, 0, 870,
-       44, 0, 871,
-       45, 0, 872,
-       51, 0, 874,
-       79, 0, 54,
-       80, 0, 876,
-       81, 0, 1033,
-       82, 0, 878,
-       83, 0, 879,
-       84, 0, 880,
-       85, 0, 881,
-       86, 0, 61
+       -1, 3, 1020,
+       11, 0, 1010,
+       38, 0, 1242,
+       41, 0, 1015,
+       42, 0, 1016,
+       43, 0, 1017,
+       44, 0, 1018,
+       45, 0, 1019,
+       51, 0, 1021,
+       80, 0, 54,
+       81, 0, 1023,
+       82, 0, 1243,
+       83, 0, 1025,
+       84, 0, 1026,
+       85, 0, 1027,
+       86, 0, 1028,
+       87, 0, 61
 };
 };
-static int parser_action_row875[] = {
+static int parser_action_row1022[] = {
        23,
        23,
-       -1, 3, 874,
+       -1, 3, 1021,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -9555,149 +10711,153 @@ static int parser_action_row875[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 206,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row876[] = {
+static int parser_action_row1023[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row877[] = {
+static int parser_action_row1024[] = {
        3,
        3,
-       -1, 1, 506,
-       51, 0, 272,
-       57, 0, 211
+       -1, 1, 631,
+       51, 0, 282,
+       57, 0, 216
 };
 };
-static int parser_action_row878[] = {
+static int parser_action_row1025[] = {
        1,
        1,
-       -1, 1, 609
+       -1, 1, 742
 };
 };
-static int parser_action_row879[] = {
-       1,
-       -1, 1, 621
+static int parser_action_row1026[] = {
+       2,
+       -1, 1, 758,
+       79, 0, 205
 };
 };
-static int parser_action_row880[] = {
-       1,
-       -1, 1, 622
+static int parser_action_row1027[] = {
+       2,
+       -1, 1, 760,
+       79, 0, 205
 };
 };
-static int parser_action_row881[] = {
-       1,
-       -1, 1, 623
+static int parser_action_row1028[] = {
+       2,
+       -1, 1, 762,
+       79, 0, 205
 };
 };
-static int parser_action_row882[] = {
-       1,
-       -1, 1, 624
+static int parser_action_row1029[] = {
+       2,
+       -1, 1, 764,
+       79, 0, 205
 };
 };
-static int parser_action_row883[] = {
+static int parser_action_row1030[] = {
        1,
        1,
-       -1, 1, 625
+       -1, 1, 766
 };
 };
-static int parser_action_row884[] = {
+static int parser_action_row1031[] = {
        2,
        2,
-       -1, 3, 883,
-       41, 0, 1038
+       -1, 3, 1030,
+       41, 0, 1252
 };
 };
-static int parser_action_row885[] = {
+static int parser_action_row1032[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row886[] = {
+static int parser_action_row1033[] = {
        3,
        3,
-       -1, 1, 574,
-       30, 0, 1040,
-       31, 0, 1041
+       -1, 1, 707,
+       30, 0, 1254,
+       31, 0, 1255
 };
 };
-static int parser_action_row887[] = {
+static int parser_action_row1034[] = {
        1,
        1,
-       -1, 1, 576
+       -1, 1, 709
 };
 };
-static int parser_action_row888[] = {
+static int parser_action_row1035[] = {
        3,
        3,
-       -1, 1, 580,
-       73, 0, 1042,
-       76, 0, 1043
+       -1, 1, 713,
+       73, 0, 1256,
+       76, 0, 1257
 };
 };
-static int parser_action_row889[] = {
+static int parser_action_row1036[] = {
        12,
        12,
-       -1, 1, 582,
-       13, 0, 1044,
-       39, 0, 1045,
-       64, 0, 1046,
-       65, 0, 1047,
-       69, 0, 1048,
-       70, 0, 1049,
-       71, 0, 1050,
-       72, 0, 1051,
-       74, 0, 1052,
-       75, 0, 1053,
-       77, 0, 1054
+       -1, 1, 715,
+       13, 0, 1258,
+       39, 0, 1259,
+       64, 0, 1260,
+       65, 0, 1261,
+       69, 0, 1262,
+       70, 0, 1263,
+       71, 0, 1264,
+       72, 0, 1265,
+       74, 0, 1266,
+       75, 0, 1267,
+       77, 0, 1268
 };
 };
-static int parser_action_row890[] = {
+static int parser_action_row1037[] = {
        4,
        4,
-       -1, 1, 594,
-       66, 0, 1055,
-       67, 0, 1056,
-       68, 0, 1057
+       -1, 1, 727,
+       66, 0, 1269,
+       67, 0, 1270,
+       68, 0, 1271
 };
 };
-static int parser_action_row891[] = {
+static int parser_action_row1038[] = {
        1,
        1,
-       -1, 1, 597
+       -1, 1, 730
 };
 };
-static int parser_action_row892[] = {
+static int parser_action_row1039[] = {
        1,
        1,
-       -1, 1, 601
+       -1, 1, 734
 };
 };
-static int parser_action_row893[] = {
+static int parser_action_row1040[] = {
        2,
        2,
-       -1, 1, 604,
-       63, 0, 1058
+       -1, 1, 737,
+       63, 0, 1272
 };
 };
-static int parser_action_row894[] = {
+static int parser_action_row1041[] = {
        1,
        1,
-       -1, 1, 387
+       -1, 1, 467
 };
 };
-static int parser_action_row895[] = {
+static int parser_action_row1042[] = {
        3,
        3,
-       -1, 3, 894,
+       -1, 3, 1041,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row896[] = {
+static int parser_action_row1043[] = {
        1,
        1,
-       -1, 1, 378
+       -1, 1, 458
 };
 };
-static int parser_action_row897[] = {
+static int parser_action_row1044[] = {
        3,
        3,
-       -1, 3, 896,
-       14, 0, 1061,
-       58, 0, 1062
+       -1, 3, 1043,
+       14, 0, 1275,
+       58, 0, 1276
 };
 };
-static int parser_action_row898[] = {
+static int parser_action_row1045[] = {
        1,
        1,
-       -1, 1, 384
+       -1, 1, 464
 };
 };
-static int parser_action_row899[] = {
+static int parser_action_row1046[] = {
        1,
        1,
-       -1, 1, 395
+       -1, 1, 475
 };
 };
-static int parser_action_row900[] = {
+static int parser_action_row1047[] = {
        1,
        1,
-       -1, 1, 383
+       -1, 1, 463
 };
 };
-static int parser_action_row901[] = {
+static int parser_action_row1048[] = {
        31,
        31,
-       -1, 1, 392,
-       8, 0, 308,
+       -1, 1, 472,
+       8, 0, 326,
        11, 0, 28,
        14, 0, 30,
        17, 0, 31,
        11, 0, 28,
        14, 0, 30,
        17, 0, 31,
@@ -9719,23 +10879,23 @@ static int parser_action_row901[] = {
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
-       79, 0, 54,
-       80, 0, 55,
-       81, 0, 56,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 55,
+       82, 0, 56,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row902[] = {
+static int parser_action_row1049[] = {
        2,
        2,
-       -1, 3, 901,
+       -1, 3, 1048,
        49, 0, 191
 };
        49, 0, 191
 };
-static int parser_action_row903[] = {
+static int parser_action_row1050[] = {
        23,
        23,
-       -1, 3, 902,
+       -1, 3, 1049,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -9750,682 +10910,1152 @@ static int parser_action_row903[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 178,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 178,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row904[] = {
+static int parser_action_row1051[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row905[] = {
+static int parser_action_row1052[] = {
        3,
        3,
-       -1, 1, 284,
-       35, 0, 645,
-       78, 0, 646
+       -1, 1, 357,
+       35, 0, 730,
+       78, 0, 731
 };
 };
-static int parser_action_row906[] = {
+static int parser_action_row1053[] = {
        2,
        2,
-       -1, 1, 302,
-       61, 0, 1068
+       -1, 1, 376,
+       61, 0, 1282
 };
 };
-static int parser_action_row907[] = {
+static int parser_action_row1054[] = {
+       2,
+       -1, 1, 375,
+       56, 0, 330
+};
+static int parser_action_row1055[] = {
        4,
        4,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       56, 0, 312
+       56, 0, 330
 };
 };
-static int parser_action_row908[] = {
+static int parser_action_row1056[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row909[] = {
+static int parser_action_row1057[] = {
        1,
        1,
-       -1, 1, 846
+       -1, 1, 1264
 };
 };
-static int parser_action_row910[] = {
+static int parser_action_row1058[] = {
        1,
        1,
-       -1, 1, 298
+       -1, 1, 371
 };
 };
-static int parser_action_row911[] = {
+static int parser_action_row1059[] = {
        4,
        4,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       55, 0, 907
+       55, 0, 1055
 };
 };
-static int parser_action_row912[] = {
+static int parser_action_row1060[] = {
        1,
        1,
-       -1, 1, 317
+       -1, 1, 393
 };
 };
-static int parser_action_row913[] = {
-       4,
-       -1, 1, 320,
-       46, 1, 328,
-       53, 0, 511,
-       57, 0, 1074
+static int parser_action_row1061[] = {
+       5,
+       -1, 1, 396,
+       46, 1, 404,
+       53, 0, 553,
+       57, 0, 1289,
+       79, 0, 205
 };
 };
-static int parser_action_row914[] = {
+static int parser_action_row1062[] = {
        1,
        1,
-       -1, 1, 318
+       -1, 1, 394
 };
 };
-static int parser_action_row915[] = {
+static int parser_action_row1063[] = {
        2,
        2,
-       -1, 1, 312,
-       55, 0, 1075
+       -1, 1, 388,
+       55, 0, 1290
 };
 };
-static int parser_action_row916[] = {
+static int parser_action_row1064[] = {
        1,
        1,
-       -1, 1, 315
+       -1, 1, 391
 };
 };
-static int parser_action_row917[] = {
+static int parser_action_row1065[] = {
        1,
        1,
-       -1, 1, 316
+       -1, 1, 392
 };
 };
-static int parser_action_row918[] = {
+static int parser_action_row1066[] = {
        2,
        2,
-       -1, 3, 917,
-       46, 0, 1078
+       -1, 3, 1065,
+       46, 0, 1293
 };
 };
-static int parser_action_row919[] = {
+static int parser_action_row1067[] = {
        4,
        4,
-       -1, 1, 545,
-       3, 0, 639,
+       -1, 1, 676,
+       3, 0, 722,
        29, 0, 39,
        29, 0, 39,
-       91, 0, 62
+       92, 0, 62
 };
 };
-static int parser_action_row920[] = {
+static int parser_action_row1068[] = {
        3,
        3,
-       -1, 1, 547,
+       -1, 1, 678,
        29, 0, 39,
        29, 0, 39,
-       91, 0, 62
+       92, 0, 62
 };
 };
-static int parser_action_row921[] = {
+static int parser_action_row1069[] = {
        1,
        1,
-       -1, 1, 551
+       -1, 1, 682
 };
 };
-static int parser_action_row922[] = {
+static int parser_action_row1070[] = {
+       2,
+       -1, 1, 324,
+       8, 0, 917
+};
+static int parser_action_row1071[] = {
        1,
        1,
-       -1, 1, 539
+       -1, 1, 666
 };
 };
-static int parser_action_row923[] = {
+static int parser_action_row1072[] = {
+       2,
+       -1, 1, 664,
+       8, 0, 1297
+};
+static int parser_action_row1073[] = {
        3,
        3,
-       -1, 1, 296,
-       51, 0, 923,
-       56, 0, 312
+       -1, 1, 369,
+       51, 0, 1073,
+       56, 0, 330
 };
 };
-static int parser_action_row924[] = {
+static int parser_action_row1074[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row925[] = {
+static int parser_action_row1075[] = {
        5,
        5,
-       -1, 3, 924,
+       -1, 3, 1074,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       14, 0, 1084,
-       58, 0, 1085
+       14, 0, 1300,
+       58, 0, 1301
 };
 };
-static int parser_action_row926[] = {
+static int parser_action_row1076[] = {
        1,
        1,
-       -1, 1, 297
+       -1, 1, 370
 };
 };
-static int parser_action_row927[] = {
+static int parser_action_row1077[] = {
        1,
        1,
-       -1, 1, 541
+       -1, 1, 670
 };
 };
-static int parser_action_row928[] = {
+static int parser_action_row1078[] = {
        1,
        1,
-       -1, 1, 311
+       -1, 1, 387
 };
 };
-static int parser_action_row929[] = {
-       2,
-       -1, 1, 112,
-       56, 0, 312
+static int parser_action_row1079[] = {
+       3,
+       -1, 1, 146,
+       56, 0, 330,
+       79, 0, 205
 };
 };
-static int parser_action_row930[] = {
+static int parser_action_row1080[] = {
        4,
        4,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       55, 0, 1088
+       55, 0, 1305
 };
 };
-static int parser_action_row931[] = {
+static int parser_action_row1081[] = {
        9,
        9,
-       -1, 1, 258,
-       8, 0, 1092,
-       12, 0, 773,
-       15, 0, 774,
-       16, 0, 775,
+       -1, 1, 331,
+       8, 0, 1309,
+       12, 0, 892,
+       15, 0, 893,
+       16, 0, 894,
        20, 0, 32,
        21, 0, 33,
        22, 0, 34,
        20, 0, 32,
        21, 0, 33,
        22, 0, 34,
-       41, 0, 776
+       41, 0, 895
 };
 };
-static int parser_action_row932[] = {
+static int parser_action_row1082[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row933[] = {
+static int parser_action_row1083[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row934[] = {
+static int parser_action_row1084[] = {
        1,
        1,
-       -1, 1, 73
+       -1, 1, 75
 };
 };
-static int parser_action_row935[] = {
+static int parser_action_row1085[] = {
        9,
        9,
-       -1, 1, 258,
-       8, 0, 1096,
-       12, 0, 773,
-       15, 0, 774,
-       16, 0, 775,
+       -1, 1, 331,
+       8, 0, 1313,
+       12, 0, 892,
+       15, 0, 893,
+       16, 0, 894,
        20, 0, 32,
        21, 0, 33,
        22, 0, 34,
        20, 0, 32,
        21, 0, 33,
        22, 0, 34,
-       41, 0, 776
+       41, 0, 895
 };
 };
-static int parser_action_row936[] = {
+static int parser_action_row1086[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row937[] = {
+static int parser_action_row1087[] = {
        8,
        8,
-       -1, 1, 258,
-       8, 0, 1098,
-       12, 0, 773,
-       15, 0, 774,
-       16, 0, 775,
+       -1, 1, 331,
+       8, 0, 1315,
+       12, 0, 892,
+       15, 0, 893,
+       16, 0, 894,
        20, 0, 32,
        21, 0, 33,
        22, 0, 34
 };
        20, 0, 32,
        21, 0, 33,
        22, 0, 34
 };
-static int parser_action_row938[] = {
+static int parser_action_row1088[] = {
+       3,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row1089[] = {
+       11,
+       -1, 1, 331,
+       3, 0, 890,
+       8, 0, 1319,
+       12, 0, 892,
+       15, 0, 893,
+       16, 0, 894,
+       20, 0, 32,
+       21, 0, 33,
+       22, 0, 34,
+       41, 0, 895,
+       81, 0, 896
+};
+static int parser_action_row1090[] = {
+       3,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row1091[] = {
+       3,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row1092[] = {
        1,
        1,
-       -1, 1, 75
+       -1, 1, 81
 };
 };
-static int parser_action_row939[] = {
+static int parser_action_row1093[] = {
        9,
        9,
-       -1, 1, 258,
-       8, 0, 1099,
-       12, 0, 773,
-       15, 0, 774,
-       16, 0, 775,
+       -1, 1, 331,
+       8, 0, 1323,
+       12, 0, 892,
+       15, 0, 893,
+       16, 0, 894,
        20, 0, 32,
        21, 0, 33,
        22, 0, 34,
        20, 0, 32,
        21, 0, 33,
        22, 0, 34,
-       41, 0, 776
+       41, 0, 895
 };
 };
-static int parser_action_row940[] = {
+static int parser_action_row1094[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row941[] = {
+static int parser_action_row1095[] = {
        8,
        8,
-       -1, 1, 258,
-       8, 0, 1101,
-       12, 0, 773,
-       15, 0, 774,
-       16, 0, 775,
+       -1, 1, 331,
+       8, 0, 1325,
+       12, 0, 892,
+       15, 0, 893,
+       16, 0, 894,
        20, 0, 32,
        21, 0, 33,
        22, 0, 34
 };
        20, 0, 32,
        21, 0, 33,
        22, 0, 34
 };
-static int parser_action_row942[] = {
+static int parser_action_row1096[] = {
        1,
        1,
-       -1, 1, 253
+       -1, 1, 326
 };
 };
-static int parser_action_row943[] = {
+static int parser_action_row1097[] = {
        1,
        1,
-       -1, 1, 255
+       -1, 1, 328
 };
 };
-static int parser_action_row944[] = {
+static int parser_action_row1098[] = {
        6,
        6,
-       -1, 3, 943,
-       9, 0, 1102,
-       10, 0, 1103,
-       11, 0, 1104,
-       17, 0, 1105,
-       38, 0, 1106
+       -1, 3, 1097,
+       9, 0, 1326,
+       10, 0, 1327,
+       11, 0, 1328,
+       17, 0, 1329,
+       38, 0, 1330
 };
 };
-static int parser_action_row945[] = {
+static int parser_action_row1099[] = {
        3,
        3,
-       -1, 3, 944,
-       47, 0, 361,
-       79, 0, 362
+       -1, 3, 1098,
+       47, 0, 390,
+       80, 0, 391
 };
 };
-static int parser_action_row946[] = {
+static int parser_action_row1100[] = {
        5,
        5,
-       -1, 1, 258,
-       16, 0, 942,
+       -1, 1, 331,
+       16, 0, 1096,
        20, 0, 32,
        21, 0, 33,
        22, 0, 34
 };
        20, 0, 32,
        21, 0, 33,
        22, 0, 34
 };
-static int parser_action_row947[] = {
+static int parser_action_row1101[] = {
        5,
        5,
-       -1, 1, 258,
-       12, 0, 1109,
+       -1, 1, 331,
+       12, 0, 1333,
        20, 0, 32,
        21, 0, 33,
        22, 0, 34
 };
        20, 0, 32,
        21, 0, 33,
        22, 0, 34
 };
-static int parser_action_row948[] = {
+static int parser_action_row1102[] = {
        2,
        2,
-       -1, 3, 947,
-       17, 0, 1111
+       -1, 3, 1101,
+       17, 0, 1335
 };
 };
-static int parser_action_row949[] = {
+static int parser_action_row1103[] = {
        4,
        4,
-       -1, 1, 258,
+       -1, 1, 331,
        20, 0, 32,
        21, 0, 33,
        22, 0, 34
 };
        20, 0, 32,
        21, 0, 33,
        22, 0, 34
 };
-static int parser_action_row950[] = {
+static int parser_action_row1104[] = {
        2,
        2,
-       -1, 3, 949,
-       17, 0, 1113
+       -1, 3, 1103,
+       17, 0, 1337
 };
 };
-static int parser_action_row951[] = {
+static int parser_action_row1105[] = {
        17,
        17,
-       -1, 3, 950,
-       53, 0, 383,
-       64, 0, 384,
-       65, 0, 385,
-       66, 0, 386,
-       67, 0, 387,
-       68, 0, 388,
-       69, 0, 389,
-       70, 0, 390,
-       71, 0, 391,
-       72, 0, 392,
-       73, 0, 393,
-       74, 0, 394,
-       75, 0, 395,
-       76, 0, 396,
-       77, 0, 397,
-       80, 0, 398
+       -1, 3, 1104,
+       53, 0, 411,
+       64, 0, 412,
+       65, 0, 413,
+       66, 0, 414,
+       67, 0, 415,
+       68, 0, 416,
+       69, 0, 417,
+       70, 0, 418,
+       71, 0, 419,
+       72, 0, 420,
+       73, 0, 421,
+       74, 0, 422,
+       75, 0, 423,
+       76, 0, 424,
+       77, 0, 425,
+       81, 0, 426
 };
 };
-static int parser_action_row952[] = {
+static int parser_action_row1106[] = {
        2,
        2,
-       -1, 3, 951,
-       79, 0, 1115
+       -1, 3, 1105,
+       80, 0, 1339
 };
 };
-static int parser_action_row953[] = {
+static int parser_action_row1107[] = {
        21,
        21,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       51, 0, 1116,
-       53, 0, 383,
-       56, 0, 312,
-       64, 0, 384,
-       65, 0, 385,
-       66, 0, 386,
-       67, 0, 387,
-       68, 0, 388,
-       69, 0, 389,
-       70, 0, 390,
-       71, 0, 391,
-       72, 0, 392,
-       73, 0, 393,
-       74, 0, 394,
-       75, 0, 395,
-       76, 0, 396,
-       77, 0, 397,
-       80, 0, 398
+       51, 0, 1340,
+       53, 0, 411,
+       56, 0, 330,
+       64, 0, 412,
+       65, 0, 413,
+       66, 0, 414,
+       67, 0, 415,
+       68, 0, 416,
+       69, 0, 417,
+       70, 0, 418,
+       71, 0, 419,
+       72, 0, 420,
+       73, 0, 421,
+       74, 0, 422,
+       75, 0, 423,
+       76, 0, 424,
+       77, 0, 425,
+       81, 0, 426
 };
 };
-static int parser_action_row954[] = {
+static int parser_action_row1108[] = {
        3,
        3,
-       -1, 3, 953,
-       80, 0, 1120,
-       81, 0, 1121
+       -1, 3, 1107,
+       81, 0, 1344,
+       82, 0, 1345
 };
 };
-static int parser_action_row955[] = {
+static int parser_action_row1109[] = {
        21,
        21,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       51, 0, 1116,
-       53, 0, 383,
-       56, 0, 312,
-       64, 0, 384,
-       65, 0, 385,
-       66, 0, 386,
-       67, 0, 387,
-       68, 0, 388,
-       69, 0, 389,
-       70, 0, 390,
-       71, 0, 391,
-       72, 0, 392,
-       73, 0, 393,
-       74, 0, 394,
-       75, 0, 395,
-       76, 0, 396,
-       77, 0, 397,
-       80, 0, 398
-};
-static int parser_action_row956[] = {
-       1,
-       -1, 1, 79
-};
-static int parser_action_row957[] = {
-       8,
-       -1, 1, 258,
-       8, 0, 1124,
-       12, 0, 773,
-       15, 0, 774,
-       16, 0, 775,
-       20, 0, 32,
-       21, 0, 33,
-       22, 0, 34
+       51, 0, 1340,
+       53, 0, 411,
+       56, 0, 330,
+       64, 0, 412,
+       65, 0, 413,
+       66, 0, 414,
+       67, 0, 415,
+       68, 0, 416,
+       69, 0, 417,
+       70, 0, 418,
+       71, 0, 419,
+       72, 0, 420,
+       73, 0, 421,
+       74, 0, 422,
+       75, 0, 423,
+       76, 0, 424,
+       77, 0, 425,
+       81, 0, 426
 };
 };
-static int parser_action_row958[] = {
-       1,
-       -1, 1, 87
+static int parser_action_row1110[] = {
+       23,
+       -1, 1, 1112,
+       11, 0, 170,
+       23, 0, 171,
+       32, 0, 172,
+       38, 0, 173,
+       40, 0, 174,
+       41, 0, 175,
+       42, 0, 47,
+       43, 0, 48,
+       44, 0, 49,
+       45, 0, 50,
+       48, 0, 176,
+       51, 0, 52,
+       53, 0, 53,
+       65, 0, 177,
+       80, 0, 54,
+       81, 0, 178,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row959[] = {
+static int parser_action_row1111[] = {
+       24,
+       -1, 1, 1119,
+       11, 0, 170,
+       23, 0, 171,
+       32, 0, 172,
+       38, 0, 173,
+       40, 0, 174,
+       41, 0, 175,
+       42, 0, 47,
+       43, 0, 48,
+       44, 0, 49,
+       45, 0, 50,
+       48, 0, 176,
+       49, 0, 191,
+       51, 0, 52,
+       53, 0, 53,
+       65, 0, 177,
+       80, 0, 54,
+       81, 0, 178,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
+};
+static int parser_action_row1112[] = {
+       24,
+       -1, 1, 1114,
+       11, 0, 170,
+       23, 0, 171,
+       32, 0, 172,
+       38, 0, 173,
+       40, 0, 174,
+       41, 0, 175,
+       42, 0, 47,
+       43, 0, 48,
+       44, 0, 49,
+       45, 0, 50,
+       48, 0, 176,
+       49, 0, 191,
+       51, 0, 52,
+       53, 0, 53,
+       65, 0, 177,
+       80, 0, 54,
+       81, 0, 178,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
+};
+static int parser_action_row1113[] = {
+       1,
+       -1, 1, 1118
+};
+static int parser_action_row1114[] = {
+       2,
+       -1, 3, 1113,
+       10, 0, 1353
+};
+static int parser_action_row1115[] = {
+       36,
+       -1, 3, 1114,
+       11, 0, 170,
+       14, 0, 30,
+       17, 0, 31,
+       23, 0, 171,
+       26, 0, 36,
+       27, 0, 37,
+       28, 0, 38,
+       32, 0, 172,
+       33, 0, 683,
+       34, 0, 684,
+       35, 0, 685,
+       36, 0, 686,
+       37, 0, 44,
+       38, 0, 173,
+       40, 0, 174,
+       41, 0, 175,
+       42, 0, 47,
+       43, 0, 48,
+       44, 0, 49,
+       45, 0, 50,
+       47, 0, 390,
+       48, 0, 176,
+       50, 0, 687,
+       51, 0, 52,
+       53, 0, 53,
+       65, 0, 177,
+       79, 0, 205,
+       80, 0, 688,
+       81, 0, 689,
+       82, 0, 56,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
+};
+static int parser_action_row1116[] = {
+       3,
+       -1, 1, 631,
+       51, 0, 282,
+       57, 0, 216
+};
+static int parser_action_row1117[] = {
        4,
        4,
-       -1, 3, 958,
-       32, 0, 1125,
-       47, 0, 361,
-       79, 0, 362
+       -1, 1, 855,
+       58, 0, 1356,
+       59, 0, 220,
+       60, 0, 221
 };
 };
-static int parser_action_row960[] = {
+static int parser_action_row1118[] = {
        1,
        1,
-       -1, 1, 402
+       -1, 1, 889
 };
 };
-static int parser_action_row961[] = {
+static int parser_action_row1119[] = {
        1,
        1,
-       -1, 1, 407
+       -1, 1, 1110
 };
 };
-static int parser_action_row962[] = {
+static int parser_action_row1120[] = {
+       1,
+       -1, 1, 1123
+};
+static int parser_action_row1121[] = {
+       1,
+       -1, 1, 1125
+};
+static int parser_action_row1122[] = {
+       1,
+       -1, 1, 1124
+};
+static int parser_action_row1123[] = {
+       1,
+       -1, 1, 1126
+};
+static int parser_action_row1124[] = {
+       1,
+       -1, 1, 1127
+};
+static int parser_action_row1125[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 3, 1124,
+       0, 0, 87,
+       1, 0, 88
+};
+static int parser_action_row1126[] = {
+       1,
+       -1, 1, 1243
+};
+static int parser_action_row1127[] = {
+       1,
+       -1, 1, 1111
+};
+static int parser_action_row1128[] = {
+       1,
+       -1, 1, 890
+};
+static int parser_action_row1129[] = {
+       3,
+       -1, 1, 850,
+       53, 0, 239,
+       63, 0, 1359
+};
+static int parser_action_row1130[] = {
+       3,
+       -1, 3, 1129,
+       0, 0, 87,
+       1, 0, 88
+};
+static int parser_action_row1131[] = {
+       2,
+       -1, 1, 887,
+       55, 0, 847
+};
+static int parser_action_row1132[] = {
+       1,
+       -1, 1, 891
+};
+static int parser_action_row1133[] = {
+       1,
+       -1, 1, 89
+};
+static int parser_action_row1134[] = {
+       8,
+       -1, 1, 331,
+       8, 0, 1363,
+       12, 0, 892,
+       15, 0, 893,
+       16, 0, 894,
+       20, 0, 32,
+       21, 0, 33,
+       22, 0, 34
+};
+static int parser_action_row1135[] = {
+       1,
+       -1, 1, 105
+};
+static int parser_action_row1136[] = {
+       9,
+       -1, 1, 331,
+       8, 0, 1364,
+       12, 0, 892,
+       15, 0, 893,
+       16, 0, 894,
+       20, 0, 32,
+       21, 0, 33,
+       22, 0, 34,
+       41, 0, 895
+};
+static int parser_action_row1137[] = {
+       3,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row963[] = {
+static int parser_action_row1138[] = {
+       3,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row1139[] = {
        1,
        1,
-       -1, 1, 759
+       -1, 1, 77
 };
 };
-static int parser_action_row964[] = {
+static int parser_action_row1140[] = {
+       9,
+       -1, 1, 331,
+       8, 0, 1368,
+       12, 0, 892,
+       15, 0, 893,
+       16, 0, 894,
+       20, 0, 32,
+       21, 0, 33,
+       22, 0, 34,
+       41, 0, 895
+};
+static int parser_action_row1141[] = {
+       3,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row1142[] = {
+       8,
+       -1, 1, 331,
+       8, 0, 1370,
+       12, 0, 892,
+       15, 0, 893,
+       16, 0, 894,
+       20, 0, 32,
+       21, 0, 33,
+       22, 0, 34
+};
+static int parser_action_row1143[] = {
        4,
        4,
-       -1, 3, 963,
-       32, 0, 1128,
-       47, 0, 361,
-       79, 0, 362
+       -1, 3, 1142,
+       32, 0, 1371,
+       47, 0, 390,
+       80, 0, 391
 };
 };
-static int parser_action_row965[] = {
+static int parser_action_row1144[] = {
+       1,
+       -1, 1, 486
+};
+static int parser_action_row1145[] = {
+       1,
+       -1, 1, 491
+};
+static int parser_action_row1146[] = {
+       36,
+       -1, 3, 1145,
+       11, 0, 170,
+       14, 0, 30,
+       17, 0, 31,
+       23, 0, 171,
+       26, 0, 36,
+       27, 0, 37,
+       28, 0, 38,
+       32, 0, 172,
+       33, 0, 683,
+       34, 0, 684,
+       35, 0, 685,
+       36, 0, 686,
+       37, 0, 44,
+       38, 0, 173,
+       40, 0, 174,
+       41, 0, 175,
+       42, 0, 47,
+       43, 0, 48,
+       44, 0, 49,
+       45, 0, 50,
+       47, 0, 390,
+       48, 0, 176,
+       50, 0, 687,
+       51, 0, 52,
+       53, 0, 53,
+       65, 0, 177,
+       79, 0, 205,
+       80, 0, 688,
+       81, 0, 689,
+       82, 0, 56,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
+};
+static int parser_action_row1147[] = {
+       3,
+       -1, 3, 1146,
+       0, 0, 87,
+       1, 0, 88
+};
+static int parser_action_row1148[] = {
+       1,
+       -1, 1, 612
+};
+static int parser_action_row1149[] = {
+       3,
+       -1, 3, 1148,
+       0, 0, 87,
+       1, 0, 88
+};
+static int parser_action_row1150[] = {
+       3,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row1151[] = {
+       1,
+       -1, 1, 863
+};
+static int parser_action_row1152[] = {
        4,
        4,
-       -1, 1, 546,
-       3, 0, 639,
+       -1, 3, 1151,
+       32, 0, 1377,
+       47, 0, 390,
+       80, 0, 391
+};
+static int parser_action_row1153[] = {
+       4,
+       -1, 1, 677,
+       3, 0, 722,
        29, 0, 39,
        29, 0, 39,
-       91, 0, 62
+       92, 0, 62
 };
 };
-static int parser_action_row966[] = {
+static int parser_action_row1154[] = {
        3,
        3,
-       -1, 1, 548,
+       -1, 1, 679,
        29, 0, 39,
        29, 0, 39,
-       91, 0, 62
+       92, 0, 62
 };
 };
-static int parser_action_row967[] = {
+static int parser_action_row1155[] = {
        1,
        1,
-       -1, 1, 552
+       -1, 1, 683
 };
 };
-static int parser_action_row968[] = {
+static int parser_action_row1156[] = {
        1,
        1,
-       -1, 1, 540
+       -1, 1, 667
 };
 };
-static int parser_action_row969[] = {
+static int parser_action_row1157[] = {
+       2,
+       -1, 1, 665,
+       8, 0, 1382
+};
+static int parser_action_row1158[] = {
        1,
        1,
-       -1, 1, 542
+       -1, 1, 671
 };
 };
-static int parser_action_row970[] = {
+static int parser_action_row1159[] = {
        9,
        9,
-       -1, 1, 258,
-       8, 0, 1133,
-       12, 0, 773,
-       15, 0, 774,
-       16, 0, 775,
+       -1, 1, 331,
+       8, 0, 1383,
+       12, 0, 892,
+       15, 0, 893,
+       16, 0, 894,
        20, 0, 32,
        21, 0, 33,
        22, 0, 34,
        20, 0, 32,
        21, 0, 33,
        22, 0, 34,
-       41, 0, 776
+       41, 0, 895
 };
 };
-static int parser_action_row971[] = {
+static int parser_action_row1160[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row972[] = {
+static int parser_action_row1161[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row973[] = {
+static int parser_action_row1162[] = {
        1,
        1,
-       -1, 1, 74
+       -1, 1, 76
 };
 };
-static int parser_action_row974[] = {
+static int parser_action_row1163[] = {
        9,
        9,
-       -1, 1, 258,
-       8, 0, 1137,
-       12, 0, 773,
-       15, 0, 774,
-       16, 0, 775,
+       -1, 1, 331,
+       8, 0, 1387,
+       12, 0, 892,
+       15, 0, 893,
+       16, 0, 894,
        20, 0, 32,
        21, 0, 33,
        22, 0, 34,
        20, 0, 32,
        21, 0, 33,
        22, 0, 34,
-       41, 0, 776
+       41, 0, 895
 };
 };
-static int parser_action_row975[] = {
+static int parser_action_row1164[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row976[] = {
+static int parser_action_row1165[] = {
        8,
        8,
-       -1, 1, 258,
-       8, 0, 1139,
-       12, 0, 773,
-       15, 0, 774,
-       16, 0, 775,
+       -1, 1, 331,
+       8, 0, 1389,
+       12, 0, 892,
+       15, 0, 893,
+       16, 0, 894,
        20, 0, 32,
        21, 0, 33,
        22, 0, 34
 };
        20, 0, 32,
        21, 0, 33,
        22, 0, 34
 };
-static int parser_action_row977[] = {
+static int parser_action_row1166[] = {
+       3,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row1167[] = {
+       11,
+       -1, 1, 331,
+       3, 0, 890,
+       8, 0, 1393,
+       12, 0, 892,
+       15, 0, 893,
+       16, 0, 894,
+       20, 0, 32,
+       21, 0, 33,
+       22, 0, 34,
+       41, 0, 895,
+       81, 0, 896
+};
+static int parser_action_row1168[] = {
+       3,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row1169[] = {
+       3,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row1170[] = {
        1,
        1,
-       -1, 1, 76
+       -1, 1, 82
 };
 };
-static int parser_action_row978[] = {
+static int parser_action_row1171[] = {
        9,
        9,
-       -1, 1, 258,
-       8, 0, 1140,
-       12, 0, 773,
-       15, 0, 774,
-       16, 0, 775,
+       -1, 1, 331,
+       8, 0, 1397,
+       12, 0, 892,
+       15, 0, 893,
+       16, 0, 894,
        20, 0, 32,
        21, 0, 33,
        22, 0, 34,
        20, 0, 32,
        21, 0, 33,
        22, 0, 34,
-       41, 0, 776
+       41, 0, 895
 };
 };
-static int parser_action_row979[] = {
+static int parser_action_row1172[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row980[] = {
+static int parser_action_row1173[] = {
        8,
        8,
-       -1, 1, 258,
-       8, 0, 1142,
-       12, 0, 773,
-       15, 0, 774,
-       16, 0, 775,
+       -1, 1, 331,
+       8, 0, 1399,
+       12, 0, 892,
+       15, 0, 893,
+       16, 0, 894,
        20, 0, 32,
        21, 0, 33,
        22, 0, 34
 };
        20, 0, 32,
        21, 0, 33,
        22, 0, 34
 };
-static int parser_action_row981[] = {
+static int parser_action_row1174[] = {
        1,
        1,
-       -1, 1, 80
+       -1, 1, 90
 };
 };
-static int parser_action_row982[] = {
+static int parser_action_row1175[] = {
        8,
        8,
-       -1, 1, 258,
-       8, 0, 1143,
-       12, 0, 773,
-       15, 0, 774,
-       16, 0, 775,
+       -1, 1, 331,
+       8, 0, 1400,
+       12, 0, 892,
+       15, 0, 893,
+       16, 0, 894,
        20, 0, 32,
        21, 0, 33,
        22, 0, 34
 };
        20, 0, 32,
        21, 0, 33,
        22, 0, 34
 };
-static int parser_action_row983[] = {
+static int parser_action_row1176[] = {
        1,
        1,
-       -1, 1, 88
+       -1, 1, 106
 };
 };
-static int parser_action_row984[] = {
+static int parser_action_row1177[] = {
+       9,
+       -1, 1, 331,
+       8, 0, 1401,
+       12, 0, 892,
+       15, 0, 893,
+       16, 0, 894,
+       20, 0, 32,
+       21, 0, 33,
+       22, 0, 34,
+       41, 0, 895
+};
+static int parser_action_row1178[] = {
        3,
        3,
-       -1, 1, 337,
-       25, 1, 630,
-       49, 1, 708
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2
 };
 };
-static int parser_action_row985[] = {
+static int parser_action_row1179[] = {
        3,
        3,
-       -1, 1, 336,
-       25, 1, 629,
-       49, 1, 707
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2
 };
 };
-static int parser_action_row986[] = {
+static int parser_action_row1180[] = {
+       1,
+       -1, 1, 78
+};
+static int parser_action_row1181[] = {
+       9,
+       -1, 1, 331,
+       8, 0, 1405,
+       12, 0, 892,
+       15, 0, 893,
+       16, 0, 894,
+       20, 0, 32,
+       21, 0, 33,
+       22, 0, 34,
+       41, 0, 895
+};
+static int parser_action_row1182[] = {
+       3,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row1183[] = {
+       8,
+       -1, 1, 331,
+       8, 0, 1407,
+       12, 0, 892,
+       15, 0, 893,
+       16, 0, 894,
+       20, 0, 32,
+       21, 0, 33,
+       22, 0, 34
+};
+static int parser_action_row1184[] = {
+       3,
+       -1, 1, 417,
+       25, 1, 960,
+       49, 1, 1086
+};
+static int parser_action_row1185[] = {
+       3,
+       -1, 1, 416,
+       25, 1, 959,
+       49, 1, 1085
+};
+static int parser_action_row1186[] = {
        2,
        2,
-       -1, 1, 412,
-       25, 1, 687
+       -1, 1, 496,
+       25, 1, 1021
 };
 };
-static int parser_action_row987[] = {
+static int parser_action_row1187[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row988[] = {
+static int parser_action_row1188[] = {
        3,
        3,
-       -1, 1, 397,
-       25, 1, 674,
-       58, 0, 1145
+       -1, 1, 478,
+       25, 1, 1005,
+       58, 0, 1409
 };
 };
-static int parser_action_row989[] = {
+static int parser_action_row1189[] = {
+       4,
+       -1, 1, 477,
+       25, 1, 1004,
+       56, 0, 330,
+       58, 0, 1410
+};
+static int parser_action_row1190[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row990[] = {
+static int parser_action_row1191[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row991[] = {
+static int parser_action_row1192[] = {
        2,
        2,
-       -1, 1, 421,
-       25, 1, 690
+       -1, 1, 505,
+       25, 1, 1024
 };
 };
-static int parser_action_row992[] = {
+static int parser_action_row1193[] = {
        2,
        2,
-       -1, 3, 991,
-       80, 0, 319
+       -1, 3, 1192,
+       81, 0, 338
 };
 };
-static int parser_action_row993[] = {
+static int parser_action_row1194[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row994[] = {
+static int parser_action_row1195[] = {
        1,
        1,
-       -1, 1, 645
+       -1, 1, 975
 };
 };
-static int parser_action_row995[] = {
+static int parser_action_row1196[] = {
        1,
        1,
-       -1, 1, 640
+       -1, 1, 970
 };
 };
-static int parser_action_row996[] = {
+static int parser_action_row1197[] = {
        2,
        2,
-       -1, 3, 995,
-       25, 0, 1150
+       -1, 3, 1196,
+       25, 0, 1416
 };
 };
-static int parser_action_row997[] = {
+static int parser_action_row1198[] = {
        33,
        33,
-       -1, 3, 996,
+       -1, 3, 1197,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       8, 0, 1151,
-       11, 0, 690,
-       14, 0, 691,
-       17, 0, 692,
-       23, 0, 693,
-       26, 0, 695,
-       27, 0, 696,
-       28, 0, 697,
-       33, 0, 698,
-       34, 0, 699,
-       35, 0, 700,
-       36, 0, 701,
-       37, 0, 702,
+       8, 0, 1417,
+       11, 0, 786,
+       14, 0, 787,
+       17, 0, 788,
+       23, 0, 789,
+       26, 0, 791,
+       27, 0, 792,
+       28, 0, 793,
+       33, 0, 794,
+       34, 0, 795,
+       35, 0, 796,
+       36, 0, 797,
+       37, 0, 798,
        38, 0, 45,
        38, 0, 45,
-       41, 0, 703,
+       41, 0, 799,
        42, 0, 47,
        43, 0, 48,
        44, 0, 49,
        45, 0, 50,
        42, 0, 47,
        43, 0, 48,
        44, 0, 49,
        45, 0, 50,
-       50, 0, 704,
+       50, 0, 800,
        51, 0, 52,
        53, 0, 53,
        51, 0, 52,
        53, 0, 53,
-       79, 0, 54,
-       80, 0, 705,
-       81, 0, 706,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 801,
+       82, 0, 802,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row998[] = {
+static int parser_action_row1199[] = {
        2,
        2,
-       -1, 3, 997,
-       56, 0, 1154
+       -1, 3, 1198,
+       56, 0, 1420
 };
 };
-static int parser_action_row999[] = {
+static int parser_action_row1200[] = {
        23,
        23,
-       -1, 3, 998,
+       -1, 3, 1199,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -10440,18 +12070,18 @@ static int parser_action_row999[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 355,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 374,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row1000[] = {
+static int parser_action_row1201[] = {
        23,
        23,
-       -1, 3, 999,
+       -1, 3, 1200,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -10466,38 +12096,38 @@ static int parser_action_row1000[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 355,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 374,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row1001[] = {
+static int parser_action_row1202[] = {
        1,
        1,
-       -1, 1, 655
+       -1, 1, 985
 };
 };
-static int parser_action_row1002[] = {
+static int parser_action_row1203[] = {
        1,
        1,
-       -1, 1, 678
+       -1, 1, 1012
 };
 };
-static int parser_action_row1003[] = {
+static int parser_action_row1204[] = {
        1,
        1,
-       -1, 1, 683
+       -1, 1, 1017
 };
 };
-static int parser_action_row1004[] = {
+static int parser_action_row1205[] = {
        5,
        5,
-       -1, 3, 1003,
-       11, 0, 1157,
-       46, 0, 534,
-       80, 0, 1158,
-       81, 0, 1159
+       -1, 3, 1204,
+       11, 0, 1423,
+       46, 0, 577,
+       81, 0, 1424,
+       82, 0, 1425
 };
 };
-static int parser_action_row1005[] = {
+static int parser_action_row1206[] = {
        23,
        23,
-       -1, 3, 1004,
+       -1, 3, 1205,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -10512,18 +12142,18 @@ static int parser_action_row1005[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 355,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 374,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row1006[] = {
+static int parser_action_row1207[] = {
        23,
        23,
-       -1, 3, 1005,
+       -1, 3, 1206,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -10538,37 +12168,37 @@ static int parser_action_row1006[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 355,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 374,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row1007[] = {
+static int parser_action_row1208[] = {
        2,
        2,
-       -1, 1, 371,
-       25, 1, 657
+       -1, 1, 451,
+       25, 1, 987
 };
 };
-static int parser_action_row1008[] = {
+static int parser_action_row1209[] = {
        1,
        1,
-       -1, 1, 416
+       -1, 1, 500
 };
 };
-static int parser_action_row1009[] = {
+static int parser_action_row1210[] = {
        3,
        3,
-       -1, 3, 1008,
+       -1, 3, 1209,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1010[] = {
+static int parser_action_row1211[] = {
        1,
        1,
-       -1, 1, 414
+       -1, 1, 498
 };
 };
-static int parser_action_row1011[] = {
+static int parser_action_row1212[] = {
        23,
        23,
-       -1, 3, 1010,
+       -1, 3, 1211,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -10583,49 +12213,49 @@ static int parser_action_row1011[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 206,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row1012[] = {
+static int parser_action_row1213[] = {
        2,
        2,
-       -1, 3, 1011,
-       14, 0, 1163
+       -1, 3, 1212,
+       14, 0, 1429
 };
 };
-static int parser_action_row1013[] = {
+static int parser_action_row1214[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1014[] = {
+static int parser_action_row1215[] = {
        2,
        2,
-       -1, 1, 378,
-       25, 1, 663
+       -1, 1, 458,
+       25, 1, 993
 };
 };
-static int parser_action_row1015[] = {
+static int parser_action_row1216[] = {
        3,
        3,
-       -1, 3, 1014,
-       14, 0, 1165,
-       58, 0, 1166
+       -1, 3, 1215,
+       14, 0, 1431,
+       58, 0, 1432
 };
 };
-static int parser_action_row1016[] = {
+static int parser_action_row1217[] = {
        1,
        1,
-       -1, 1, 669
+       -1, 1, 999
 };
 };
-static int parser_action_row1017[] = {
+static int parser_action_row1218[] = {
        1,
        1,
-       -1, 1, 672
+       -1, 1, 1002
 };
 };
-static int parser_action_row1018[] = {
+static int parser_action_row1219[] = {
        31,
        31,
-       -1, 1, 392,
-       8, 0, 983,
+       -1, 1, 472,
+       8, 0, 1183,
        11, 0, 28,
        14, 0, 30,
        17, 0, 31,
        11, 0, 28,
        14, 0, 30,
        17, 0, 31,
@@ -10647,27 +12277,73 @@ static int parser_action_row1018[] = {
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
-       79, 0, 54,
-       80, 0, 55,
-       81, 0, 56,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 55,
+       82, 0, 56,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row1019[] = {
+static int parser_action_row1220[] = {
        1,
        1,
-       -1, 1, 668
+       -1, 1, 998
 };
 };
-static int parser_action_row1020[] = {
+static int parser_action_row1221[] = {
        2,
        2,
-       -1, 3, 1019,
+       -1, 3, 1220,
        49, 0, 191
 };
        49, 0, 191
 };
-static int parser_action_row1021[] = {
+static int parser_action_row1222[] = {
+       23,
+       -1, 3, 1221,
+       11, 0, 170,
+       23, 0, 171,
+       32, 0, 172,
+       38, 0, 173,
+       40, 0, 174,
+       41, 0, 175,
+       42, 0, 47,
+       43, 0, 48,
+       44, 0, 49,
+       45, 0, 50,
+       48, 0, 176,
+       51, 0, 52,
+       53, 0, 53,
+       65, 0, 177,
+       80, 0, 54,
+       81, 0, 374,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
+};
+static int parser_action_row1223[] = {
+       2,
+       -1, 3, 1222,
+       54, 0, 1435
+};
+static int parser_action_row1224[] = {
+       3,
+       -1, 3, 1223,
+       47, 0, 390,
+       80, 0, 391
+};
+static int parser_action_row1225[] = {
+       1,
+       -1, 1, 1271
+};
+static int parser_action_row1226[] = {
+       2,
+       -1, 1, 775,
+       79, 0, 545
+};
+static int parser_action_row1227[] = {
        23,
        23,
-       -1, 3, 1020,
+       -1, 3, 1226,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -10682,45 +12358,45 @@ static int parser_action_row1021[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 355,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 178,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row1022[] = {
+static int parser_action_row1228[] = {
        2,
        2,
-       -1, 3, 1021,
-       54, 0, 1169
-};
-static int parser_action_row1023[] = {
-       3,
-       -1, 3, 1022,
-       47, 0, 361,
-       79, 0, 362
+       -1, 1, 631,
+       51, 0, 282
 };
 };
-static int parser_action_row1024[] = {
+static int parser_action_row1229[] = {
        1,
        1,
-       -1, 1, 853
+       -1, 1, 620
 };
 };
-static int parser_action_row1025[] = {
-       1,
-       -1, 1, 330
+static int parser_action_row1230[] = {
+       2,
+       -1, 3, 1229,
+       54, 0, 1439
 };
 };
-static int parser_action_row1026[] = {
+static int parser_action_row1231[] = {
+       2,
+       -1, 1, 408,
+       79, 0, 205
+};
+static int parser_action_row1232[] = {
        1,
        1,
-       -1, 1, 514
+       -1, 1, 639
 };
 };
-static int parser_action_row1027[] = {
+static int parser_action_row1233[] = {
        1,
        1,
-       -1, 1, 615
+       -1, 1, 748
 };
 };
-static int parser_action_row1028[] = {
+static int parser_action_row1234[] = {
        23,
        23,
-       -1, 3, 1027,
+       -1, 3, 1233,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -10735,250 +12411,324 @@ static int parser_action_row1028[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 206,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row1029[] = {
+static int parser_action_row1235[] = {
        21,
        21,
-       -1, 3, 1028,
-       11, 0, 863,
-       32, 0, 865,
-       38, 0, 866,
-       40, 0, 867,
-       41, 0, 868,
-       42, 0, 869,
-       43, 0, 870,
-       44, 0, 871,
-       45, 0, 872,
-       48, 0, 873,
-       51, 0, 874,
-       65, 0, 875,
-       79, 0, 54,
-       80, 0, 876,
-       81, 0, 877,
-       82, 0, 878,
-       83, 0, 879,
-       84, 0, 880,
-       85, 0, 881,
-       86, 0, 61
+       -1, 3, 1234,
+       11, 0, 1010,
+       32, 0, 1012,
+       38, 0, 1013,
+       40, 0, 1014,
+       41, 0, 1015,
+       42, 0, 1016,
+       43, 0, 1017,
+       44, 0, 1018,
+       45, 0, 1019,
+       48, 0, 1020,
+       51, 0, 1021,
+       65, 0, 1022,
+       80, 0, 54,
+       81, 0, 1023,
+       82, 0, 1024,
+       83, 0, 1025,
+       84, 0, 1026,
+       85, 0, 1027,
+       86, 0, 1028,
+       87, 0, 61
 };
 };
-static int parser_action_row1030[] = {
+static int parser_action_row1236[] = {
        3,
        3,
-       -1, 3, 1029,
-       47, 0, 1173,
-       79, 0, 1174
+       -1, 3, 1235,
+       47, 0, 1443,
+       80, 0, 1444
 };
 };
-static int parser_action_row1031[] = {
+static int parser_action_row1237[] = {
        20,
        20,
-       -1, 3, 1030,
-       11, 0, 863,
-       38, 0, 866,
-       40, 0, 867,
-       41, 0, 868,
-       42, 0, 869,
-       43, 0, 870,
-       44, 0, 871,
-       45, 0, 872,
-       48, 0, 873,
-       51, 0, 874,
-       65, 0, 875,
-       79, 0, 54,
-       80, 0, 876,
-       81, 0, 877,
-       82, 0, 878,
-       83, 0, 879,
-       84, 0, 880,
-       85, 0, 881,
-       86, 0, 61
+       -1, 3, 1236,
+       11, 0, 1010,
+       38, 0, 1013,
+       40, 0, 1014,
+       41, 0, 1015,
+       42, 0, 1016,
+       43, 0, 1017,
+       44, 0, 1018,
+       45, 0, 1019,
+       48, 0, 1020,
+       51, 0, 1021,
+       65, 0, 1022,
+       80, 0, 54,
+       81, 0, 1023,
+       82, 0, 1024,
+       83, 0, 1025,
+       84, 0, 1026,
+       85, 0, 1027,
+       86, 0, 1028,
+       87, 0, 61
 };
 };
-static int parser_action_row1032[] = {
+static int parser_action_row1238[] = {
        1,
        1,
-       -1, 1, 612
+       -1, 1, 745
 };
 };
-static int parser_action_row1033[] = {
+static int parser_action_row1239[] = {
+       1,
+       -1, 1, 751
+};
+static int parser_action_row1240[] = {
+       1,
+       -1, 1, 753
+};
+static int parser_action_row1241[] = {
+       1,
+       -1, 1, 755
+};
+static int parser_action_row1242[] = {
+       1,
+       -1, 1, 757
+};
+static int parser_action_row1243[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1034[] = {
+static int parser_action_row1244[] = {
        2,
        2,
-       -1, 1, 607,
-       63, 1, 609
+       -1, 1, 740,
+       63, 1, 742
 };
 };
-static int parser_action_row1035[] = {
+static int parser_action_row1245[] = {
        2,
        2,
-       -1, 3, 1034,
-       63, 0, 1178
+       -1, 3, 1244,
+       63, 0, 1448
 };
 };
-static int parser_action_row1036[] = {
+static int parser_action_row1246[] = {
        2,
        2,
-       -1, 3, 1035,
-       52, 0, 1179
+       -1, 3, 1245,
+       52, 0, 1449
 };
 };
-static int parser_action_row1037[] = {
+static int parser_action_row1247[] = {
        20,
        20,
-       -1, 3, 1036,
-       11, 0, 863,
-       38, 0, 866,
-       40, 0, 867,
-       41, 0, 868,
-       42, 0, 869,
-       43, 0, 870,
-       44, 0, 871,
-       45, 0, 872,
-       48, 0, 873,
-       51, 0, 874,
-       65, 0, 875,
-       79, 0, 54,
-       80, 0, 876,
-       81, 0, 877,
-       82, 0, 878,
-       83, 0, 879,
-       84, 0, 880,
-       85, 0, 881,
-       86, 0, 61
+       -1, 3, 1246,
+       11, 0, 1010,
+       38, 0, 1013,
+       40, 0, 1014,
+       41, 0, 1015,
+       42, 0, 1016,
+       43, 0, 1017,
+       44, 0, 1018,
+       45, 0, 1019,
+       48, 0, 1020,
+       51, 0, 1021,
+       65, 0, 1022,
+       80, 0, 54,
+       81, 0, 1023,
+       82, 0, 1024,
+       83, 0, 1025,
+       84, 0, 1026,
+       85, 0, 1027,
+       86, 0, 1028,
+       87, 0, 61
 };
 };
-static int parser_action_row1038[] = {
+static int parser_action_row1248[] = {
+       1,
+       -1, 1, 744
+};
+static int parser_action_row1249[] = {
        1,
        1,
-       -1, 1, 611
+       -1, 1, 759
 };
 };
-static int parser_action_row1039[] = {
+static int parser_action_row1250[] = {
+       1,
+       -1, 1, 761
+};
+static int parser_action_row1251[] = {
+       1,
+       -1, 1, 763
+};
+static int parser_action_row1252[] = {
+       1,
+       -1, 1, 765
+};
+static int parser_action_row1253[] = {
        2,
        2,
-       -1, 1, 506,
-       51, 0, 272
+       -1, 1, 631,
+       51, 0, 282
 };
 };
-static int parser_action_row1040[] = {
+static int parser_action_row1254[] = {
        3,
        3,
-       -1, 3, 1039,
-       53, 0, 1182,
-       54, 0, 1183
+       -1, 3, 1253,
+       53, 0, 1452,
+       54, 0, 1453
 };
 };
-static int parser_action_row1041[] = {
+static int parser_action_row1255[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1042[] = {
+static int parser_action_row1256[] = {
        4,
        4,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       25, 0, 1185
+       25, 0, 1455
 };
 };
-static int parser_action_row1043[] = {
+static int parser_action_row1257[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1044[] = {
+static int parser_action_row1258[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1045[] = {
+static int parser_action_row1259[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1046[] = {
+static int parser_action_row1260[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1047[] = {
+static int parser_action_row1261[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1048[] = {
+static int parser_action_row1262[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1049[] = {
+static int parser_action_row1263[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1050[] = {
+static int parser_action_row1264[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1051[] = {
+static int parser_action_row1265[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1052[] = {
+static int parser_action_row1266[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1053[] = {
+static int parser_action_row1267[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1054[] = {
+static int parser_action_row1268[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1055[] = {
+static int parser_action_row1269[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1056[] = {
+static int parser_action_row1270[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1057[] = {
+static int parser_action_row1271[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1058[] = {
+static int parser_action_row1272[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1059[] = {
+static int parser_action_row1273[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1060[] = {
+static int parser_action_row1274[] = {
        31,
        31,
-       -1, 1, 342,
-       8, 0, 580,
+       -1, 1, 422,
+       8, 0, 628,
+       11, 0, 28,
+       14, 0, 30,
+       17, 0, 31,
+       23, 0, 35,
+       26, 0, 36,
+       27, 0, 37,
+       28, 0, 38,
+       33, 0, 40,
+       34, 0, 41,
+       35, 0, 42,
+       36, 0, 43,
+       37, 0, 44,
+       38, 0, 45,
+       41, 0, 46,
+       42, 0, 47,
+       43, 0, 48,
+       44, 0, 49,
+       45, 0, 50,
+       50, 0, 51,
+       51, 0, 52,
+       53, 0, 53,
+       80, 0, 54,
+       81, 0, 55,
+       82, 0, 56,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
+};
+static int parser_action_row1275[] = {
+       3,
+       -1, 3, 1274,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row1276[] = {
+       33,
+       -1, 3, 1275,
+       0, 0, 1,
+       1, 0, 2,
+       8, 0, 155,
        11, 0, 28,
        14, 0, 30,
        17, 0, 31,
        11, 0, 28,
        14, 0, 30,
        17, 0, 31,
@@ -11000,27 +12750,157 @@ static int parser_action_row1060[] = {
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
-       79, 0, 54,
-       80, 0, 55,
-       81, 0, 56,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 55,
+       82, 0, 56,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
+};
+static int parser_action_row1277[] = {
+       3,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row1278[] = {
+       1,
+       -1, 1, 469
+};
+static int parser_action_row1279[] = {
+       1,
+       -1, 1, 460
+};
+static int parser_action_row1280[] = {
+       1,
+       -1, 1, 466
+};
+static int parser_action_row1281[] = {
+       4,
+       -1, 1, 353,
+       35, 0, 730,
+       58, 1, 694,
+       78, 0, 731
+};
+static int parser_action_row1282[] = {
+       1,
+       -1, 1, 359
+};
+static int parser_action_row1283[] = {
+       1,
+       -1, 1, 378
+};
+static int parser_action_row1284[] = {
+       2,
+       -1, 1, 377,
+       61, 0, 1480
+};
+static int parser_action_row1285[] = {
+       3,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row1286[] = {
+       3,
+       -1, 1, 358,
+       35, 0, 730,
+       78, 0, 731
+};
+static int parser_action_row1287[] = {
+       2,
+       -1, 3, 1286,
+       81, 0, 865
+};
+static int parser_action_row1288[] = {
+       1,
+       -1, 1, 1265
+};
+static int parser_action_row1289[] = {
+       1,
+       -1, 1, 372
+};
+static int parser_action_row1290[] = {
+       17,
+       -1, 3, 1289,
+       53, 0, 411,
+       64, 0, 412,
+       65, 0, 413,
+       66, 0, 414,
+       67, 0, 415,
+       68, 0, 416,
+       69, 0, 417,
+       70, 0, 418,
+       71, 0, 419,
+       72, 0, 420,
+       73, 0, 421,
+       74, 0, 422,
+       75, 0, 423,
+       76, 0, 424,
+       77, 0, 425,
+       81, 0, 426
+};
+static int parser_action_row1291[] = {
+       3,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row1292[] = {
+       1,
+       -1, 1, 1268
+};
+static int parser_action_row1293[] = {
+       2,
+       -1, 1, 389,
+       55, 0, 1290
+};
+static int parser_action_row1294[] = {
+       3,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row1295[] = {
+       3,
+       -1, 1, 680,
+       29, 0, 39,
+       92, 0, 62
+};
+static int parser_action_row1296[] = {
+       1,
+       -1, 1, 684
 };
 };
-static int parser_action_row1061[] = {
-       3,
-       -1, 3, 1060,
+static int parser_action_row1297[] = {
+       1,
+       -1, 1, 686
+};
+static int parser_action_row1298[] = {
+       1,
+       -1, 1, 668
+};
+static int parser_action_row1299[] = {
+       5,
+       -1, 3, 1298,
        0, 0, 1,
        0, 0, 1,
-       1, 0, 2
+       1, 0, 2,
+       14, 0, 1489,
+       58, 0, 1490
 };
 };
-static int parser_action_row1062[] = {
+static int parser_action_row1300[] = {
+       3,
+       -1, 3, 1299,
+       52, 0, 1492,
+       81, 0, 865
+};
+static int parser_action_row1301[] = {
        33,
        33,
-       -1, 3, 1061,
+       -1, 3, 1300,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       8, 0, 155,
+       8, 0, 540,
        11, 0, 28,
        14, 0, 30,
        17, 0, 31,
        11, 0, 28,
        14, 0, 30,
        17, 0, 31,
@@ -11042,597 +12922,837 @@ static int parser_action_row1062[] = {
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
-       79, 0, 54,
-       80, 0, 55,
-       81, 0, 56,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 55,
+       82, 0, 56,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row1063[] = {
+static int parser_action_row1302[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1064[] = {
+static int parser_action_row1303[] = {
        1,
        1,
-       -1, 1, 389
+       -1, 1, 381
 };
 };
-static int parser_action_row1065[] = {
+static int parser_action_row1304[] = {
        1,
        1,
-       -1, 1, 380
+       -1, 1, 148
 };
 };
-static int parser_action_row1066[] = {
+static int parser_action_row1305[] = {
+       2,
+       -1, 1, 147,
+       56, 0, 330
+};
+static int parser_action_row1306[] = {
+       3,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row1307[] = {
        1,
        1,
-       -1, 1, 386
+       -1, 1, 1262
 };
 };
-static int parser_action_row1067[] = {
+static int parser_action_row1308[] = {
+       2,
+       -1, 3, 1307,
+       54, 0, 1498
+};
+static int parser_action_row1309[] = {
        4,
        4,
-       -1, 1, 280,
-       35, 0, 645,
-       58, 1, 563,
-       78, 0, 646
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2,
+       55, 0, 1305
 };
 };
-static int parser_action_row1068[] = {
+static int parser_action_row1310[] = {
        1,
        1,
-       -1, 1, 286
+       -1, 1, 83
 };
 };
-static int parser_action_row1069[] = {
+static int parser_action_row1311[] = {
+       9,
+       -1, 1, 331,
+       8, 0, 1501,
+       12, 0, 892,
+       15, 0, 893,
+       16, 0, 894,
+       20, 0, 32,
+       21, 0, 33,
+       22, 0, 34,
+       41, 0, 895
+};
+static int parser_action_row1312[] = {
+       3,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row1313[] = {
+       8,
+       -1, 1, 331,
+       8, 0, 1503,
+       12, 0, 892,
+       15, 0, 893,
+       16, 0, 894,
+       20, 0, 32,
+       21, 0, 33,
+       22, 0, 34
+};
+static int parser_action_row1314[] = {
        1,
        1,
-       -1, 1, 303
+       -1, 1, 91
 };
 };
-static int parser_action_row1070[] = {
+static int parser_action_row1315[] = {
+       8,
+       -1, 1, 331,
+       8, 0, 1504,
+       12, 0, 892,
+       15, 0, 893,
+       16, 0, 894,
+       20, 0, 32,
+       21, 0, 33,
+       22, 0, 34
+};
+static int parser_action_row1316[] = {
+       1,
+       -1, 1, 107
+};
+static int parser_action_row1317[] = {
+       9,
+       -1, 1, 331,
+       8, 0, 1505,
+       12, 0, 892,
+       15, 0, 893,
+       16, 0, 894,
+       20, 0, 32,
+       21, 0, 33,
+       22, 0, 34,
+       41, 0, 895
+};
+static int parser_action_row1318[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1071[] = {
+static int parser_action_row1319[] = {
        3,
        3,
-       -1, 1, 285,
-       35, 0, 645,
-       78, 0, 646
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2
 };
 };
-static int parser_action_row1072[] = {
-       2,
-       -1, 3, 1071,
-       80, 0, 751
+static int parser_action_row1320[] = {
+       1,
+       -1, 1, 79
 };
 };
-static int parser_action_row1073[] = {
+static int parser_action_row1321[] = {
+       9,
+       -1, 1, 331,
+       8, 0, 1509,
+       12, 0, 892,
+       15, 0, 893,
+       16, 0, 894,
+       20, 0, 32,
+       21, 0, 33,
+       22, 0, 34,
+       41, 0, 895
+};
+static int parser_action_row1322[] = {
+       3,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row1323[] = {
+       8,
+       -1, 1, 331,
+       8, 0, 1511,
+       12, 0, 892,
+       15, 0, 893,
+       16, 0, 894,
+       20, 0, 32,
+       21, 0, 33,
+       22, 0, 34
+};
+static int parser_action_row1324[] = {
        1,
        1,
-       -1, 1, 847
+       -1, 1, 97
 };
 };
-static int parser_action_row1074[] = {
+static int parser_action_row1325[] = {
+       8,
+       -1, 1, 331,
+       8, 0, 1512,
+       12, 0, 892,
+       15, 0, 893,
+       16, 0, 894,
+       20, 0, 32,
+       21, 0, 33,
+       22, 0, 34
+};
+static int parser_action_row1326[] = {
        1,
        1,
-       -1, 1, 299
+       -1, 1, 113
 };
 };
-static int parser_action_row1075[] = {
+static int parser_action_row1327[] = {
        17,
        17,
-       -1, 3, 1074,
-       53, 0, 383,
-       64, 0, 384,
-       65, 0, 385,
-       66, 0, 386,
-       67, 0, 387,
-       68, 0, 388,
-       69, 0, 389,
-       70, 0, 390,
-       71, 0, 391,
-       72, 0, 392,
-       73, 0, 393,
-       74, 0, 394,
-       75, 0, 395,
-       76, 0, 396,
-       77, 0, 397,
-       80, 0, 398
+       -1, 3, 1326,
+       53, 0, 411,
+       64, 0, 412,
+       65, 0, 413,
+       66, 0, 414,
+       67, 0, 415,
+       68, 0, 416,
+       69, 0, 417,
+       70, 0, 418,
+       71, 0, 419,
+       72, 0, 420,
+       73, 0, 421,
+       74, 0, 422,
+       75, 0, 423,
+       76, 0, 424,
+       77, 0, 425,
+       81, 0, 426
 };
 };
-static int parser_action_row1076[] = {
+static int parser_action_row1328[] = {
+       2,
+       -1, 3, 1327,
+       80, 0, 1514
+};
+static int parser_action_row1329[] = {
+       21,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2,
+       51, 0, 1340,
+       53, 0, 411,
+       56, 0, 330,
+       64, 0, 412,
+       65, 0, 413,
+       66, 0, 414,
+       67, 0, 415,
+       68, 0, 416,
+       69, 0, 417,
+       70, 0, 418,
+       71, 0, 419,
+       72, 0, 420,
+       73, 0, 421,
+       74, 0, 422,
+       75, 0, 423,
+       76, 0, 424,
+       77, 0, 425,
+       81, 0, 426
+};
+static int parser_action_row1330[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 3, 1329,
+       81, 0, 1517,
+       82, 0, 1518
+};
+static int parser_action_row1331[] = {
+       21,
+       -1, 1, 656,
        0, 0, 1,
        0, 0, 1,
-       1, 0, 2
+       1, 0, 2,
+       51, 0, 1340,
+       53, 0, 411,
+       56, 0, 330,
+       64, 0, 412,
+       65, 0, 413,
+       66, 0, 414,
+       67, 0, 415,
+       68, 0, 416,
+       69, 0, 417,
+       70, 0, 418,
+       71, 0, 419,
+       72, 0, 420,
+       73, 0, 421,
+       74, 0, 422,
+       75, 0, 423,
+       76, 0, 424,
+       77, 0, 425,
+       81, 0, 426
 };
 };
-static int parser_action_row1077[] = {
-       1,
-       -1, 1, 850
+static int parser_action_row1332[] = {
+       2,
+       -1, 1, 150,
+       13, 0, 456
 };
 };
-static int parser_action_row1078[] = {
+static int parser_action_row1333[] = {
        2,
        2,
-       -1, 1, 313,
-       55, 0, 1075
+       -1, 3, 1332,
+       17, 0, 1522
 };
 };
-static int parser_action_row1079[] = {
+static int parser_action_row1334[] = {
+       4,
+       -1, 1, 331,
+       20, 0, 32,
+       21, 0, 33,
+       22, 0, 34
+};
+static int parser_action_row1335[] = {
+       2,
+       -1, 3, 1334,
+       17, 0, 1524
+};
+static int parser_action_row1336[] = {
+       2,
+       -1, 3, 1335,
+       82, 0, 1525
+};
+static int parser_action_row1337[] = {
+       2,
+       -1, 3, 1336,
+       17, 0, 1526
+};
+static int parser_action_row1338[] = {
+       2,
+       -1, 3, 1337,
+       82, 0, 1527
+};
+static int parser_action_row1339[] = {
+       5,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2,
+       51, 0, 570,
+       56, 0, 330
+};
+static int parser_action_row1340[] = {
+       2,
+       -1, 3, 1339,
+       56, 0, 330
+};
+static int parser_action_row1341[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1080[] = {
+static int parser_action_row1342[] = {
+       5,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2,
+       51, 0, 1340,
+       56, 0, 330
+};
+static int parser_action_row1343[] = {
+       3,
+       -1, 3, 1342,
+       13, 0, 1533,
+       14, 0, 1534
+};
+static int parser_action_row1344[] = {
+       3,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row1345[] = {
+       9,
+       -1, 1, 221,
+       12, 0, 1537,
+       13, 0, 456,
+       16, 1, 331,
+       20, 0, 32,
+       21, 0, 33,
+       22, 0, 34,
+       56, 0, 330,
+       58, 0, 1538
+};
+static int parser_action_row1346[] = {
        3,
        3,
-       -1, 1, 549,
+       -1, 1, 189,
+       56, 0, 330,
+       58, 0, 1543
+};
+static int parser_action_row1347[] = {
+       5,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2,
+       51, 0, 1340,
+       56, 0, 330
+};
+static int parser_action_row1348[] = {
+       6,
+       -1, 3, 1347,
+       3, 0, 722,
+       13, 0, 1546,
        29, 0, 39,
        29, 0, 39,
-       91, 0, 62
+       86, 0, 1547,
+       92, 0, 62
+};
+static int parser_action_row1349[] = {
+       1,
+       -1, 1, 1113
+};
+static int parser_action_row1350[] = {
+       23,
+       -1, 1, 1120,
+       11, 0, 170,
+       23, 0, 171,
+       32, 0, 172,
+       38, 0, 173,
+       40, 0, 174,
+       41, 0, 175,
+       42, 0, 47,
+       43, 0, 48,
+       44, 0, 49,
+       45, 0, 50,
+       48, 0, 176,
+       51, 0, 52,
+       53, 0, 53,
+       65, 0, 177,
+       80, 0, 54,
+       81, 0, 178,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
+};
+static int parser_action_row1351[] = {
+       1,
+       -1, 1, 1121
+};
+static int parser_action_row1352[] = {
+       23,
+       -1, 1, 1115,
+       11, 0, 170,
+       23, 0, 171,
+       32, 0, 172,
+       38, 0, 173,
+       40, 0, 174,
+       41, 0, 175,
+       42, 0, 47,
+       43, 0, 48,
+       44, 0, 49,
+       45, 0, 50,
+       48, 0, 176,
+       51, 0, 52,
+       53, 0, 53,
+       65, 0, 177,
+       80, 0, 54,
+       81, 0, 178,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row1081[] = {
+static int parser_action_row1353[] = {
        1,
        1,
-       -1, 1, 553
+       -1, 1, 1116
 };
 };
-static int parser_action_row1082[] = {
-       1,
-       -1, 1, 555
+static int parser_action_row1354[] = {
+       3,
+       -1, 3, 1353,
+       47, 0, 390,
+       80, 0, 391
 };
 };
-static int parser_action_row1083[] = {
-       5,
-       -1, 3, 1082,
-       0, 0, 1,
-       1, 0, 2,
-       14, 0, 1218,
-       58, 0, 1219
+static int parser_action_row1355[] = {
+       2,
+       -1, 3, 1354,
+       52, 0, 1553
 };
 };
-static int parser_action_row1084[] = {
-       3,
-       -1, 3, 1083,
-       52, 0, 1221,
-       80, 0, 751
+static int parser_action_row1356[] = {
+       4,
+       -1, 1, 857,
+       58, 0, 1554,
+       59, 0, 220,
+       60, 0, 221
 };
 };
-static int parser_action_row1085[] = {
-       33,
-       -1, 3, 1084,
-       0, 0, 1,
-       1, 0, 2,
-       8, 0, 507,
-       11, 0, 28,
-       14, 0, 30,
-       17, 0, 31,
-       23, 0, 35,
-       26, 0, 36,
-       27, 0, 37,
-       28, 0, 38,
-       33, 0, 40,
-       34, 0, 41,
-       35, 0, 42,
-       36, 0, 43,
-       37, 0, 44,
-       38, 0, 45,
-       41, 0, 46,
+static int parser_action_row1357[] = {
+       23,
+       -1, 3, 1356,
+       11, 0, 170,
+       23, 0, 171,
+       32, 0, 172,
+       38, 0, 173,
+       40, 0, 174,
+       41, 0, 175,
        42, 0, 47,
        43, 0, 48,
        44, 0, 49,
        45, 0, 50,
        42, 0, 47,
        43, 0, 48,
        44, 0, 49,
        45, 0, 50,
-       50, 0, 51,
+       48, 0, 176,
        51, 0, 52,
        53, 0, 53,
        51, 0, 52,
        53, 0, 53,
-       79, 0, 54,
-       80, 0, 55,
-       81, 0, 56,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
-};
-static int parser_action_row1086[] = {
-       3,
-       -1, 1, 531,
-       0, 0, 1,
-       1, 0, 2
+       65, 0, 177,
+       80, 0, 54,
+       81, 0, 178,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row1087[] = {
-       1,
-       -1, 1, 305
+static int parser_action_row1358[] = {
+       23,
+       -1, 3, 1357,
+       11, 0, 170,
+       23, 0, 171,
+       32, 0, 172,
+       38, 0, 173,
+       40, 0, 174,
+       41, 0, 175,
+       42, 0, 47,
+       43, 0, 48,
+       44, 0, 49,
+       45, 0, 50,
+       48, 0, 176,
+       51, 0, 52,
+       53, 0, 53,
+       65, 0, 177,
+       80, 0, 54,
+       81, 0, 178,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row1088[] = {
+static int parser_action_row1359[] = {
        1,
        1,
-       -1, 1, 113
+       -1, 1, 1244
 };
 };
-static int parser_action_row1089[] = {
+static int parser_action_row1360[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1090[] = {
+static int parser_action_row1361[] = {
+       4,
+       -1, 1, 862,
+       58, 0, 1559,
+       59, 0, 220,
+       60, 0, 221
+};
+static int parser_action_row1362[] = {
        1,
        1,
-       -1, 1, 844
+       -1, 1, 1247
 };
 };
-static int parser_action_row1091[] = {
+static int parser_action_row1363[] = {
        2,
        2,
-       -1, 3, 1090,
-       54, 0, 1226
+       -1, 1, 888,
+       55, 0, 847
 };
 };
-static int parser_action_row1092[] = {
-       4,
-       -1, 1, 531,
-       0, 0, 1,
-       1, 0, 2,
-       55, 0, 1088
+static int parser_action_row1364[] = {
+       1,
+       -1, 1, 121
 };
 };
-static int parser_action_row1093[] = {
+static int parser_action_row1365[] = {
        1,
        1,
-       -1, 1, 77
+       -1, 1, 85
 };
 };
-static int parser_action_row1094[] = {
+static int parser_action_row1366[] = {
        9,
        9,
-       -1, 1, 258,
-       8, 0, 1229,
-       12, 0, 773,
-       15, 0, 774,
-       16, 0, 775,
+       -1, 1, 331,
+       8, 0, 1561,
+       12, 0, 892,
+       15, 0, 893,
+       16, 0, 894,
        20, 0, 32,
        21, 0, 33,
        22, 0, 34,
        20, 0, 32,
        21, 0, 33,
        22, 0, 34,
-       41, 0, 776
+       41, 0, 895
 };
 };
-static int parser_action_row1095[] = {
+static int parser_action_row1367[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1096[] = {
-       8,
-       -1, 1, 258,
-       8, 0, 1231,
-       12, 0, 773,
-       15, 0, 774,
-       16, 0, 775,
-       20, 0, 32,
-       21, 0, 33,
-       22, 0, 34
-};
-static int parser_action_row1097[] = {
-       1,
-       -1, 1, 81
-};
-static int parser_action_row1098[] = {
+static int parser_action_row1368[] = {
        8,
        8,
-       -1, 1, 258,
-       8, 0, 1232,
-       12, 0, 773,
-       15, 0, 774,
-       16, 0, 775,
+       -1, 1, 331,
+       8, 0, 1563,
+       12, 0, 892,
+       15, 0, 893,
+       16, 0, 894,
        20, 0, 32,
        21, 0, 33,
        22, 0, 34
 };
        20, 0, 32,
        21, 0, 33,
        22, 0, 34
 };
-static int parser_action_row1099[] = {
-       1,
-       -1, 1, 89
-};
-static int parser_action_row1100[] = {
+static int parser_action_row1369[] = {
        1,
        1,
-       -1, 1, 83
+       -1, 1, 93
 };
 };
-static int parser_action_row1101[] = {
+static int parser_action_row1370[] = {
        8,
        8,
-       -1, 1, 258,
-       8, 0, 1233,
-       12, 0, 773,
-       15, 0, 774,
-       16, 0, 775,
+       -1, 1, 331,
+       8, 0, 1564,
+       12, 0, 892,
+       15, 0, 893,
+       16, 0, 894,
        20, 0, 32,
        21, 0, 33,
        22, 0, 34
 };
        20, 0, 32,
        21, 0, 33,
        22, 0, 34
 };
-static int parser_action_row1102[] = {
+static int parser_action_row1371[] = {
        1,
        1,
-       -1, 1, 91
-};
-static int parser_action_row1103[] = {
-       17,
-       -1, 3, 1102,
-       53, 0, 383,
-       64, 0, 384,
-       65, 0, 385,
-       66, 0, 386,
-       67, 0, 387,
-       68, 0, 388,
-       69, 0, 389,
-       70, 0, 390,
-       71, 0, 391,
-       72, 0, 392,
-       73, 0, 393,
-       74, 0, 394,
-       75, 0, 395,
-       76, 0, 396,
-       77, 0, 397,
-       80, 0, 398
-};
-static int parser_action_row1104[] = {
-       2,
-       -1, 3, 1103,
-       79, 0, 1235
+       -1, 1, 109
 };
 };
-static int parser_action_row1105[] = {
-       21,
-       -1, 1, 531,
+static int parser_action_row1372[] = {
+       3,
+       -1, 1, 656,
        0, 0, 1,
        0, 0, 1,
-       1, 0, 2,
-       51, 0, 1116,
-       53, 0, 383,
-       56, 0, 312,
-       64, 0, 384,
-       65, 0, 385,
-       66, 0, 386,
-       67, 0, 387,
-       68, 0, 388,
-       69, 0, 389,
-       70, 0, 390,
-       71, 0, 391,
-       72, 0, 392,
-       73, 0, 393,
-       74, 0, 394,
-       75, 0, 395,
-       76, 0, 396,
-       77, 0, 397,
-       80, 0, 398
+       1, 0, 2
 };
 };
-static int parser_action_row1106[] = {
+static int parser_action_row1373[] = {
        3,
        3,
-       -1, 3, 1105,
-       80, 0, 1238,
-       81, 0, 1239
-};
-static int parser_action_row1107[] = {
-       21,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        0, 0, 1,
-       1, 0, 2,
-       51, 0, 1116,
-       53, 0, 383,
-       56, 0, 312,
-       64, 0, 384,
-       65, 0, 385,
-       66, 0, 386,
-       67, 0, 387,
-       68, 0, 388,
-       69, 0, 389,
-       70, 0, 390,
-       71, 0, 391,
-       72, 0, 392,
-       73, 0, 393,
-       74, 0, 394,
-       75, 0, 395,
-       76, 0, 396,
-       77, 0, 397,
-       80, 0, 398
-};
-static int parser_action_row1108[] = {
-       1,
-       -1, 1, 114
-};
-static int parser_action_row1109[] = {
-       2,
-       -1, 3, 1108,
-       17, 0, 1242
-};
-static int parser_action_row1110[] = {
-       4,
-       -1, 1, 258,
-       20, 0, 32,
-       21, 0, 33,
-       22, 0, 34
+       1, 0, 2
 };
 };
-static int parser_action_row1111[] = {
+static int parser_action_row1374[] = {
        2,
        2,
-       -1, 3, 1110,
-       17, 0, 1244
+       -1, 3, 1373,
+       52, 0, 1567
 };
 };
-static int parser_action_row1112[] = {
-       2,
-       -1, 3, 1111,
-       81, 0, 1245
+static int parser_action_row1375[] = {
+       1,
+       -1, 1, 613
 };
 };
-static int parser_action_row1113[] = {
-       2,
-       -1, 3, 1112,
-       17, 0, 1246
+static int parser_action_row1376[] = {
+       1,
+       -1, 1, 616
 };
 };
-static int parser_action_row1114[] = {
+static int parser_action_row1377[] = {
        2,
        2,
-       -1, 3, 1113,
-       81, 0, 1247
+       -1, 3, 1376,
+       25, 0, 1568
 };
 };
-static int parser_action_row1115[] = {
-       5,
-       -1, 1, 531,
+static int parser_action_row1378[] = {
+       3,
+       -1, 1, 656,
        0, 0, 1,
        0, 0, 1,
-       1, 0, 2,
-       51, 0, 527,
-       56, 0, 312
-};
-static int parser_action_row1116[] = {
-       2,
-       -1, 3, 1115,
-       56, 0, 312
+       1, 0, 2
 };
 };
-static int parser_action_row1117[] = {
+static int parser_action_row1379[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1118[] = {
-       5,
-       -1, 1, 531,
-       0, 0, 1,
-       1, 0, 2,
-       51, 0, 1116,
-       56, 0, 312
+static int parser_action_row1380[] = {
+       3,
+       -1, 1, 681,
+       29, 0, 39,
+       92, 0, 62
 };
 };
-static int parser_action_row1119[] = {
-       2,
-       -1, 3, 1118,
-       14, 0, 1253
+static int parser_action_row1381[] = {
+       1,
+       -1, 1, 685
 };
 };
-static int parser_action_row1120[] = {
-       3,
-       -1, 1, 531,
-       0, 0, 1,
-       1, 0, 2
+static int parser_action_row1382[] = {
+       1,
+       -1, 1, 687
 };
 };
-static int parser_action_row1121[] = {
-       8,
-       -1, 1, 178,
-       12, 0, 1255,
-       16, 1, 258,
+static int parser_action_row1383[] = {
+       1,
+       -1, 1, 669
+};
+static int parser_action_row1384[] = {
+       1,
+       -1, 1, 84
+};
+static int parser_action_row1385[] = {
+       9,
+       -1, 1, 331,
+       8, 0, 1572,
+       12, 0, 892,
+       15, 0, 893,
+       16, 0, 894,
        20, 0, 32,
        21, 0, 33,
        22, 0, 34,
        20, 0, 32,
        21, 0, 33,
        22, 0, 34,
-       56, 0, 312,
-       58, 0, 1256
+       41, 0, 895
 };
 };
-static int parser_action_row1122[] = {
+static int parser_action_row1386[] = {
        3,
        3,
-       -1, 1, 146,
-       56, 0, 312,
-       58, 0, 1260
-};
-static int parser_action_row1123[] = {
-       5,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        0, 0, 1,
-       1, 0, 2,
-       51, 0, 1116,
-       56, 0, 312
+       1, 0, 2
 };
 };
-static int parser_action_row1124[] = {
-       6,
-       -1, 3, 1123,
-       3, 0, 639,
-       13, 0, 1263,
-       29, 0, 39,
-       85, 0, 1264,
-       91, 0, 62
+static int parser_action_row1387[] = {
+       8,
+       -1, 1, 331,
+       8, 0, 1574,
+       12, 0, 892,
+       15, 0, 893,
+       16, 0, 894,
+       20, 0, 32,
+       21, 0, 33,
+       22, 0, 34
 };
 };
-static int parser_action_row1125[] = {
+static int parser_action_row1388[] = {
        1,
        1,
-       -1, 1, 95
+       -1, 1, 92
 };
 };
-static int parser_action_row1126[] = {
-       3,
-       -1, 1, 531,
-       0, 0, 1,
-       1, 0, 2
+static int parser_action_row1389[] = {
+       8,
+       -1, 1, 331,
+       8, 0, 1575,
+       12, 0, 892,
+       15, 0, 893,
+       16, 0, 894,
+       20, 0, 32,
+       21, 0, 33,
+       22, 0, 34
 };
 };
-static int parser_action_row1127[] = {
-       3,
-       -1, 1, 531,
-       0, 0, 1,
-       1, 0, 2
+static int parser_action_row1390[] = {
+       1,
+       -1, 1, 108
 };
 };
-static int parser_action_row1128[] = {
-       2,
-       -1, 3, 1127,
-       25, 0, 1269
+static int parser_action_row1391[] = {
+       9,
+       -1, 1, 331,
+       8, 0, 1576,
+       12, 0, 892,
+       15, 0, 893,
+       16, 0, 894,
+       20, 0, 32,
+       21, 0, 33,
+       22, 0, 34,
+       41, 0, 895
 };
 };
-static int parser_action_row1129[] = {
+static int parser_action_row1392[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1130[] = {
+static int parser_action_row1393[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1131[] = {
-       3,
-       -1, 1, 550,
-       29, 0, 39,
-       91, 0, 62
-};
-static int parser_action_row1132[] = {
-       1,
-       -1, 1, 554
-};
-static int parser_action_row1133[] = {
-       1,
-       -1, 1, 556
-};
-static int parser_action_row1134[] = {
+static int parser_action_row1394[] = {
        1,
        1,
-       -1, 1, 78
+       -1, 1, 80
 };
 };
-static int parser_action_row1135[] = {
+static int parser_action_row1395[] = {
        9,
        9,
-       -1, 1, 258,
-       8, 0, 1273,
-       12, 0, 773,
-       15, 0, 774,
-       16, 0, 775,
+       -1, 1, 331,
+       8, 0, 1580,
+       12, 0, 892,
+       15, 0, 893,
+       16, 0, 894,
        20, 0, 32,
        21, 0, 33,
        22, 0, 34,
        20, 0, 32,
        21, 0, 33,
        22, 0, 34,
-       41, 0, 776
+       41, 0, 895
 };
 };
-static int parser_action_row1136[] = {
+static int parser_action_row1396[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1137[] = {
+static int parser_action_row1397[] = {
        8,
        8,
-       -1, 1, 258,
-       8, 0, 1275,
-       12, 0, 773,
-       15, 0, 774,
-       16, 0, 775,
+       -1, 1, 331,
+       8, 0, 1582,
+       12, 0, 892,
+       15, 0, 893,
+       16, 0, 894,
        20, 0, 32,
        21, 0, 33,
        22, 0, 34
 };
        20, 0, 32,
        21, 0, 33,
        22, 0, 34
 };
-static int parser_action_row1138[] = {
+static int parser_action_row1398[] = {
        1,
        1,
-       -1, 1, 82
+       -1, 1, 98
 };
 };
-static int parser_action_row1139[] = {
+static int parser_action_row1399[] = {
        8,
        8,
-       -1, 1, 258,
-       8, 0, 1276,
-       12, 0, 773,
-       15, 0, 774,
-       16, 0, 775,
+       -1, 1, 331,
+       8, 0, 1583,
+       12, 0, 892,
+       15, 0, 893,
+       16, 0, 894,
        20, 0, 32,
        21, 0, 33,
        22, 0, 34
 };
        20, 0, 32,
        21, 0, 33,
        22, 0, 34
 };
-static int parser_action_row1140[] = {
+static int parser_action_row1400[] = {
        1,
        1,
-       -1, 1, 90
+       -1, 1, 114
 };
 };
-static int parser_action_row1141[] = {
+static int parser_action_row1401[] = {
        1,
        1,
-       -1, 1, 84
+       -1, 1, 122
 };
 };
-static int parser_action_row1142[] = {
+static int parser_action_row1402[] = {
+       1,
+       -1, 1, 86
+};
+static int parser_action_row1403[] = {
+       9,
+       -1, 1, 331,
+       8, 0, 1584,
+       12, 0, 892,
+       15, 0, 893,
+       16, 0, 894,
+       20, 0, 32,
+       21, 0, 33,
+       22, 0, 34,
+       41, 0, 895
+};
+static int parser_action_row1404[] = {
+       3,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row1405[] = {
        8,
        8,
-       -1, 1, 258,
-       8, 0, 1277,
-       12, 0, 773,
-       15, 0, 774,
-       16, 0, 775,
+       -1, 1, 331,
+       8, 0, 1586,
+       12, 0, 892,
+       15, 0, 893,
+       16, 0, 894,
        20, 0, 32,
        21, 0, 33,
        22, 0, 34
 };
        20, 0, 32,
        21, 0, 33,
        22, 0, 34
 };
-static int parser_action_row1143[] = {
+static int parser_action_row1406[] = {
        1,
        1,
-       -1, 1, 92
+       -1, 1, 94
 };
 };
-static int parser_action_row1144[] = {
+static int parser_action_row1407[] = {
+       8,
+       -1, 1, 331,
+       8, 0, 1587,
+       12, 0, 892,
+       15, 0, 893,
+       16, 0, 894,
+       20, 0, 32,
+       21, 0, 33,
+       22, 0, 34
+};
+static int parser_action_row1408[] = {
        1,
        1,
-       -1, 1, 96
+       -1, 1, 110
 };
 };
-static int parser_action_row1145[] = {
+static int parser_action_row1409[] = {
        23,
        23,
-       -1, 3, 1144,
+       -1, 3, 1408,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -11647,89 +13767,101 @@ static int parser_action_row1145[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 355,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 374,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row1146[] = {
+static int parser_action_row1410[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1147[] = {
+static int parser_action_row1411[] = {
+       3,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row1412[] = {
+       3,
+       -1, 1, 479,
+       25, 1, 1006,
+       58, 0, 1591
+};
+static int parser_action_row1413[] = {
        2,
        2,
-       -1, 3, 1146,
-       24, 0, 1280
+       -1, 3, 1412,
+       24, 0, 1592
 };
 };
-static int parser_action_row1148[] = {
+static int parser_action_row1414[] = {
        2,
        2,
-       -1, 3, 1147,
-       14, 0, 1281
+       -1, 3, 1413,
+       14, 0, 1593
 };
 };
-static int parser_action_row1149[] = {
+static int parser_action_row1415[] = {
        4,
        4,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       52, 0, 1282
+       52, 0, 1594
 };
 };
-static int parser_action_row1150[] = {
+static int parser_action_row1416[] = {
        3,
        3,
-       -1, 3, 1149,
-       29, 0, 1283,
-       55, 0, 590
+       -1, 3, 1415,
+       29, 0, 1595,
+       55, 0, 640
 };
 };
-static int parser_action_row1151[] = {
+static int parser_action_row1417[] = {
        33,
        33,
-       -1, 3, 1150,
+       -1, 3, 1416,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       8, 0, 1151,
-       11, 0, 690,
-       14, 0, 691,
-       17, 0, 692,
-       23, 0, 693,
-       26, 0, 695,
-       27, 0, 696,
-       28, 0, 697,
-       33, 0, 698,
-       34, 0, 699,
-       35, 0, 700,
-       36, 0, 701,
-       37, 0, 702,
+       8, 0, 1417,
+       11, 0, 786,
+       14, 0, 787,
+       17, 0, 788,
+       23, 0, 789,
+       26, 0, 791,
+       27, 0, 792,
+       28, 0, 793,
+       33, 0, 794,
+       34, 0, 795,
+       35, 0, 796,
+       36, 0, 797,
+       37, 0, 798,
        38, 0, 45,
        38, 0, 45,
-       41, 0, 703,
+       41, 0, 799,
        42, 0, 47,
        43, 0, 48,
        44, 0, 49,
        45, 0, 50,
        42, 0, 47,
        43, 0, 48,
        44, 0, 49,
        45, 0, 50,
-       50, 0, 704,
+       50, 0, 800,
        51, 0, 52,
        53, 0, 53,
        51, 0, 52,
        53, 0, 53,
-       79, 0, 54,
-       80, 0, 705,
-       81, 0, 706,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 801,
+       82, 0, 802,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row1152[] = {
+static int parser_action_row1418[] = {
        2,
        2,
-       -1, 1, 338,
-       25, 1, 631
+       -1, 1, 418,
+       25, 1, 961
 };
 };
-static int parser_action_row1153[] = {
+static int parser_action_row1419[] = {
        31,
        31,
-       -1, 3, 1152,
-       8, 0, 1285,
+       -1, 3, 1418,
+       8, 0, 1597,
        11, 0, 28,
        14, 0, 30,
        17, 0, 31,
        11, 0, 28,
        14, 0, 30,
        17, 0, 31,
@@ -11751,22 +13883,22 @@ static int parser_action_row1153[] = {
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
-       79, 0, 54,
-       80, 0, 55,
-       81, 0, 56,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 55,
+       82, 0, 56,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row1154[] = {
+static int parser_action_row1420[] = {
        1,
        1,
-       -1, 1, 698
+       -1, 1, 1032
 };
 };
-static int parser_action_row1155[] = {
+static int parser_action_row1421[] = {
        23,
        23,
-       -1, 3, 1154,
+       -1, 3, 1420,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -11781,26 +13913,26 @@ static int parser_action_row1155[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 355,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 374,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row1156[] = {
+static int parser_action_row1422[] = {
        1,
        1,
-       -1, 1, 680
+       -1, 1, 1014
 };
 };
-static int parser_action_row1157[] = {
+static int parser_action_row1423[] = {
        1,
        1,
-       -1, 1, 685
+       -1, 1, 1019
 };
 };
-static int parser_action_row1158[] = {
+static int parser_action_row1424[] = {
        24,
        24,
-       -1, 1, 510,
+       -1, 1, 635,
        11, 0, 122,
        23, 0, 123,
        32, 0, 124,
        11, 0, 122,
        23, 0, 123,
        32, 0, 124,
@@ -11813,21 +13945,21 @@ static int parser_action_row1158[] = {
        45, 0, 131,
        48, 0, 132,
        51, 0, 133,
        45, 0, 131,
        48, 0, 132,
        51, 0, 133,
-       53, 1, 506,
-       63, 1, 506,
+       53, 1, 631,
+       63, 1, 631,
        65, 0, 134,
        65, 0, 134,
-       79, 0, 54,
-       80, 0, 135,
-       81, 0, 136,
-       82, 0, 137,
-       83, 0, 138,
-       84, 0, 139,
-       85, 0, 140,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 135,
+       82, 0, 136,
+       83, 0, 137,
+       84, 0, 138,
+       85, 0, 139,
+       86, 0, 140,
+       87, 0, 61
 };
 };
-static int parser_action_row1159[] = {
+static int parser_action_row1425[] = {
        27,
        27,
-       -1, 1, 510,
+       -1, 1, 635,
        11, 0, 122,
        23, 0, 123,
        32, 0, 124,
        11, 0, 122,
        23, 0, 123,
        32, 0, 124,
@@ -11840,45 +13972,45 @@ static int parser_action_row1159[] = {
        45, 0, 131,
        48, 0, 132,
        51, 0, 133,
        45, 0, 131,
        48, 0, 132,
        51, 0, 133,
-       53, 1, 506,
-       58, 1, 506,
-       59, 1, 506,
-       60, 1, 506,
-       63, 1, 506,
+       53, 1, 631,
+       58, 1, 631,
+       59, 1, 631,
+       60, 1, 631,
+       63, 1, 631,
        65, 0, 134,
        65, 0, 134,
-       79, 0, 54,
-       80, 0, 135,
-       81, 0, 136,
-       82, 0, 137,
-       83, 0, 138,
-       84, 0, 139,
-       85, 0, 140,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 135,
+       82, 0, 136,
+       83, 0, 137,
+       84, 0, 138,
+       85, 0, 139,
+       86, 0, 140,
+       87, 0, 61
 };
 };
-static int parser_action_row1160[] = {
+static int parser_action_row1426[] = {
        4,
        4,
-       -1, 1, 472,
-       58, 0, 1291,
-       59, 0, 215,
-       60, 0, 216
+       -1, 1, 556,
+       58, 0, 1603,
+       59, 0, 220,
+       60, 0, 221
 };
 };
-static int parser_action_row1161[] = {
+static int parser_action_row1427[] = {
        1,
        1,
-       -1, 1, 681
+       -1, 1, 1015
 };
 };
-static int parser_action_row1162[] = {
+static int parser_action_row1428[] = {
        1,
        1,
-       -1, 1, 686
+       -1, 1, 1020
 };
 };
-static int parser_action_row1163[] = {
+static int parser_action_row1429[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1164[] = {
+static int parser_action_row1430[] = {
        33,
        33,
-       -1, 3, 1163,
+       -1, 3, 1429,
        0, 0, 1,
        1, 0, 2,
        8, 0, 155,
        0, 0, 1,
        1, 0, 2,
        8, 0, 155,
@@ -11903,557 +14035,579 @@ static int parser_action_row1164[] = {
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
-       79, 0, 54,
-       80, 0, 55,
-       81, 0, 56,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 55,
+       82, 0, 56,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row1165[] = {
+static int parser_action_row1431[] = {
        2,
        2,
-       -1, 3, 1164,
-       25, 0, 1296
+       -1, 3, 1430,
+       25, 0, 1608
 };
 };
-static int parser_action_row1166[] = {
+static int parser_action_row1432[] = {
        33,
        33,
-       -1, 3, 1165,
+       -1, 3, 1431,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       8, 0, 810,
-       11, 0, 690,
-       14, 0, 691,
-       17, 0, 692,
-       23, 0, 693,
-       26, 0, 695,
-       27, 0, 696,
-       28, 0, 697,
-       33, 0, 698,
-       34, 0, 699,
-       35, 0, 700,
-       36, 0, 701,
-       37, 0, 702,
+       8, 0, 946,
+       11, 0, 786,
+       14, 0, 787,
+       17, 0, 788,
+       23, 0, 789,
+       26, 0, 791,
+       27, 0, 792,
+       28, 0, 793,
+       33, 0, 794,
+       34, 0, 795,
+       35, 0, 796,
+       36, 0, 797,
+       37, 0, 798,
        38, 0, 45,
        38, 0, 45,
-       41, 0, 703,
+       41, 0, 799,
        42, 0, 47,
        43, 0, 48,
        44, 0, 49,
        45, 0, 50,
        42, 0, 47,
        43, 0, 48,
        44, 0, 49,
        45, 0, 50,
-       50, 0, 704,
+       50, 0, 800,
        51, 0, 52,
        53, 0, 53,
        51, 0, 52,
        53, 0, 53,
-       79, 0, 54,
-       80, 0, 705,
-       81, 0, 706,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 801,
+       82, 0, 802,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row1167[] = {
+static int parser_action_row1433[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1168[] = {
+static int parser_action_row1434[] = {
        2,
        2,
-       -1, 1, 380,
-       25, 1, 665
+       -1, 1, 460,
+       25, 1, 995
 };
 };
-static int parser_action_row1169[] = {
+static int parser_action_row1435[] = {
        1,
        1,
-       -1, 1, 671
+       -1, 1, 1001
 };
 };
-static int parser_action_row1170[] = {
+static int parser_action_row1436[] = {
+       2,
+       -1, 1, 776,
+       79, 0, 545
+};
+static int parser_action_row1437[] = {
        1,
        1,
-       -1, 1, 331
+       -1, 1, 414
 };
 };
-static int parser_action_row1171[] = {
+static int parser_action_row1438[] = {
        1,
        1,
-       -1, 1, 334
+       -1, 1, 777
 };
 };
-static int parser_action_row1172[] = {
+static int parser_action_row1439[] = {
+       1,
+       -1, 1, 1109
+};
+static int parser_action_row1440[] = {
+       2,
+       -1, 1, 409,
+       79, 0, 205
+};
+static int parser_action_row1441[] = {
+       1,
+       -1, 1, 410
+};
+static int parser_action_row1442[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1173[] = {
+static int parser_action_row1443[] = {
        1,
        1,
-       -1, 1, 581
+       -1, 1, 714
 };
 };
-static int parser_action_row1174[] = {
+static int parser_action_row1444[] = {
        2,
        2,
-       -1, 3, 1173,
-       79, 0, 1302
+       -1, 3, 1443,
+       80, 0, 1616
 };
 };
-static int parser_action_row1175[] = {
-       1,
-       -1, 1, 569
+static int parser_action_row1445[] = {
+       2,
+       -1, 1, 892,
+       79, 0, 545
 };
 };
-static int parser_action_row1176[] = {
+static int parser_action_row1446[] = {
        3,
        3,
-       -1, 1, 506,
-       51, 0, 272,
-       63, 0, 1303
+       -1, 1, 631,
+       51, 0, 282,
+       63, 0, 1618
 };
 };
-static int parser_action_row1177[] = {
+static int parser_action_row1447[] = {
        1,
        1,
-       -1, 1, 603
+       -1, 1, 736
 };
 };
-static int parser_action_row1178[] = {
+static int parser_action_row1448[] = {
        3,
        3,
-       -1, 3, 1177,
-       47, 0, 1173,
-       79, 0, 1174
+       -1, 3, 1447,
+       47, 0, 1443,
+       80, 0, 1444
 };
 };
-static int parser_action_row1179[] = {
+static int parser_action_row1449[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1180[] = {
-       1,
-       -1, 1, 626
+static int parser_action_row1450[] = {
+       2,
+       -1, 1, 767,
+       79, 0, 205
 };
 };
-static int parser_action_row1181[] = {
+static int parser_action_row1451[] = {
        1,
        1,
-       -1, 1, 602
+       -1, 1, 735
 };
 };
-static int parser_action_row1182[] = {
+static int parser_action_row1452[] = {
        1,
        1,
-       -1, 1, 613
+       -1, 1, 746
 };
 };
-static int parser_action_row1183[] = {
-       1,
-       -1, 1, 483
+static int parser_action_row1453[] = {
+       2,
+       -1, 1, 568,
+       79, 0, 205
 };
 };
-static int parser_action_row1184[] = {
-       1,
-       -1, 1, 482
+static int parser_action_row1454[] = {
+       2,
+       -1, 1, 566,
+       79, 0, 205
 };
 };
-static int parser_action_row1185[] = {
+static int parser_action_row1455[] = {
        21,
        21,
-       -1, 3, 1184,
-       11, 0, 863,
-       32, 0, 865,
-       38, 0, 866,
-       40, 0, 867,
-       41, 0, 868,
-       42, 0, 869,
-       43, 0, 870,
-       44, 0, 871,
-       45, 0, 872,
-       48, 0, 873,
-       51, 0, 874,
-       65, 0, 875,
-       79, 0, 54,
-       80, 0, 876,
-       81, 0, 877,
-       82, 0, 878,
-       83, 0, 879,
-       84, 0, 880,
-       85, 0, 881,
-       86, 0, 61
+       -1, 3, 1454,
+       11, 0, 1010,
+       32, 0, 1012,
+       38, 0, 1013,
+       40, 0, 1014,
+       41, 0, 1015,
+       42, 0, 1016,
+       43, 0, 1017,
+       44, 0, 1018,
+       45, 0, 1019,
+       48, 0, 1020,
+       51, 0, 1021,
+       65, 0, 1022,
+       80, 0, 54,
+       81, 0, 1023,
+       82, 0, 1024,
+       83, 0, 1025,
+       84, 0, 1026,
+       85, 0, 1027,
+       86, 0, 1028,
+       87, 0, 61
 };
 };
-static int parser_action_row1186[] = {
+static int parser_action_row1456[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1187[] = {
+static int parser_action_row1457[] = {
        21,
        21,
-       -1, 3, 1186,
-       11, 0, 863,
-       32, 0, 865,
-       38, 0, 866,
-       40, 0, 867,
-       41, 0, 868,
-       42, 0, 869,
-       43, 0, 870,
-       44, 0, 871,
-       45, 0, 872,
-       48, 0, 873,
-       51, 0, 874,
-       65, 0, 875,
-       79, 0, 54,
-       80, 0, 876,
-       81, 0, 877,
-       82, 0, 878,
-       83, 0, 879,
-       84, 0, 880,
-       85, 0, 881,
-       86, 0, 61
+       -1, 3, 1456,
+       11, 0, 1010,
+       32, 0, 1012,
+       38, 0, 1013,
+       40, 0, 1014,
+       41, 0, 1015,
+       42, 0, 1016,
+       43, 0, 1017,
+       44, 0, 1018,
+       45, 0, 1019,
+       48, 0, 1020,
+       51, 0, 1021,
+       65, 0, 1022,
+       80, 0, 54,
+       81, 0, 1023,
+       82, 0, 1024,
+       83, 0, 1025,
+       84, 0, 1026,
+       85, 0, 1027,
+       86, 0, 1028,
+       87, 0, 61
 };
 };
-static int parser_action_row1188[] = {
+static int parser_action_row1458[] = {
        20,
        20,
-       -1, 3, 1187,
-       11, 0, 863,
-       38, 0, 866,
-       40, 0, 867,
-       41, 0, 868,
-       42, 0, 869,
-       43, 0, 870,
-       44, 0, 871,
-       45, 0, 872,
-       48, 0, 873,
-       51, 0, 874,
-       65, 0, 875,
-       79, 0, 54,
-       80, 0, 876,
-       81, 0, 877,
-       82, 0, 878,
-       83, 0, 879,
-       84, 0, 880,
-       85, 0, 881,
-       86, 0, 61
+       -1, 3, 1457,
+       11, 0, 1010,
+       38, 0, 1013,
+       40, 0, 1014,
+       41, 0, 1015,
+       42, 0, 1016,
+       43, 0, 1017,
+       44, 0, 1018,
+       45, 0, 1019,
+       48, 0, 1020,
+       51, 0, 1021,
+       65, 0, 1022,
+       80, 0, 54,
+       81, 0, 1023,
+       82, 0, 1024,
+       83, 0, 1025,
+       84, 0, 1026,
+       85, 0, 1027,
+       86, 0, 1028,
+       87, 0, 61
 };
 };
-static int parser_action_row1189[] = {
+static int parser_action_row1459[] = {
        20,
        20,
-       -1, 3, 1188,
-       11, 0, 863,
-       38, 0, 866,
-       40, 0, 867,
-       41, 0, 868,
-       42, 0, 869,
-       43, 0, 870,
-       44, 0, 871,
-       45, 0, 872,
-       48, 0, 873,
-       51, 0, 874,
-       65, 0, 875,
-       79, 0, 54,
-       80, 0, 876,
-       81, 0, 877,
-       82, 0, 878,
-       83, 0, 879,
-       84, 0, 880,
-       85, 0, 881,
-       86, 0, 61
+       -1, 3, 1458,
+       11, 0, 1010,
+       38, 0, 1013,
+       40, 0, 1014,
+       41, 0, 1015,
+       42, 0, 1016,
+       43, 0, 1017,
+       44, 0, 1018,
+       45, 0, 1019,
+       48, 0, 1020,
+       51, 0, 1021,
+       65, 0, 1022,
+       80, 0, 54,
+       81, 0, 1023,
+       82, 0, 1024,
+       83, 0, 1025,
+       84, 0, 1026,
+       85, 0, 1027,
+       86, 0, 1028,
+       87, 0, 61
 };
 };
-static int parser_action_row1190[] = {
+static int parser_action_row1460[] = {
        20,
        20,
-       -1, 3, 1189,
-       11, 0, 863,
-       38, 0, 866,
-       40, 0, 867,
-       41, 0, 868,
-       42, 0, 869,
-       43, 0, 870,
-       44, 0, 871,
-       45, 0, 872,
-       48, 0, 873,
-       51, 0, 874,
-       65, 0, 875,
-       79, 0, 54,
-       80, 0, 876,
-       81, 0, 877,
-       82, 0, 878,
-       83, 0, 879,
-       84, 0, 880,
-       85, 0, 881,
-       86, 0, 61
+       -1, 3, 1459,
+       11, 0, 1010,
+       38, 0, 1013,
+       40, 0, 1014,
+       41, 0, 1015,
+       42, 0, 1016,
+       43, 0, 1017,
+       44, 0, 1018,
+       45, 0, 1019,
+       48, 0, 1020,
+       51, 0, 1021,
+       65, 0, 1022,
+       80, 0, 54,
+       81, 0, 1023,
+       82, 0, 1024,
+       83, 0, 1025,
+       84, 0, 1026,
+       85, 0, 1027,
+       86, 0, 1028,
+       87, 0, 61
 };
 };
-static int parser_action_row1191[] = {
+static int parser_action_row1461[] = {
        3,
        3,
-       -1, 3, 1190,
-       47, 0, 1173,
-       79, 0, 1174
+       -1, 3, 1460,
+       47, 0, 1631,
+       80, 0, 1632
 };
 };
-static int parser_action_row1192[] = {
+static int parser_action_row1462[] = {
        20,
        20,
-       -1, 3, 1191,
-       11, 0, 863,
-       38, 0, 866,
-       40, 0, 867,
-       41, 0, 868,
-       42, 0, 869,
-       43, 0, 870,
-       44, 0, 871,
-       45, 0, 872,
-       48, 0, 873,
-       51, 0, 874,
-       65, 0, 875,
-       79, 0, 54,
-       80, 0, 876,
-       81, 0, 877,
-       82, 0, 878,
-       83, 0, 879,
-       84, 0, 880,
-       85, 0, 881,
-       86, 0, 61
+       -1, 3, 1461,
+       11, 0, 1010,
+       38, 0, 1013,
+       40, 0, 1014,
+       41, 0, 1015,
+       42, 0, 1016,
+       43, 0, 1017,
+       44, 0, 1018,
+       45, 0, 1019,
+       48, 0, 1020,
+       51, 0, 1021,
+       65, 0, 1022,
+       80, 0, 54,
+       81, 0, 1023,
+       82, 0, 1024,
+       83, 0, 1025,
+       84, 0, 1026,
+       85, 0, 1027,
+       86, 0, 1028,
+       87, 0, 61
 };
 };
-static int parser_action_row1193[] = {
+static int parser_action_row1463[] = {
        20,
        20,
-       -1, 3, 1192,
-       11, 0, 863,
-       38, 0, 866,
-       40, 0, 867,
-       41, 0, 868,
-       42, 0, 869,
-       43, 0, 870,
-       44, 0, 871,
-       45, 0, 872,
-       48, 0, 873,
-       51, 0, 874,
-       65, 0, 875,
-       79, 0, 54,
-       80, 0, 876,
-       81, 0, 877,
-       82, 0, 878,
-       83, 0, 879,
-       84, 0, 880,
-       85, 0, 881,
-       86, 0, 61
+       -1, 3, 1462,
+       11, 0, 1010,
+       38, 0, 1013,
+       40, 0, 1014,
+       41, 0, 1015,
+       42, 0, 1016,
+       43, 0, 1017,
+       44, 0, 1018,
+       45, 0, 1019,
+       48, 0, 1020,
+       51, 0, 1021,
+       65, 0, 1022,
+       80, 0, 54,
+       81, 0, 1023,
+       82, 0, 1024,
+       83, 0, 1025,
+       84, 0, 1026,
+       85, 0, 1027,
+       86, 0, 1028,
+       87, 0, 61
 };
 };
-static int parser_action_row1194[] = {
+static int parser_action_row1464[] = {
        20,
        20,
-       -1, 3, 1193,
-       11, 0, 863,
-       38, 0, 866,
-       40, 0, 867,
-       41, 0, 868,
-       42, 0, 869,
-       43, 0, 870,
-       44, 0, 871,
-       45, 0, 872,
-       48, 0, 873,
-       51, 0, 874,
-       65, 0, 875,
-       79, 0, 54,
-       80, 0, 876,
-       81, 0, 877,
-       82, 0, 878,
-       83, 0, 879,
-       84, 0, 880,
-       85, 0, 881,
-       86, 0, 61
+       -1, 3, 1463,
+       11, 0, 1010,
+       38, 0, 1013,
+       40, 0, 1014,
+       41, 0, 1015,
+       42, 0, 1016,
+       43, 0, 1017,
+       44, 0, 1018,
+       45, 0, 1019,
+       48, 0, 1020,
+       51, 0, 1021,
+       65, 0, 1022,
+       80, 0, 54,
+       81, 0, 1023,
+       82, 0, 1024,
+       83, 0, 1025,
+       84, 0, 1026,
+       85, 0, 1027,
+       86, 0, 1028,
+       87, 0, 61
 };
 };
-static int parser_action_row1195[] = {
+static int parser_action_row1465[] = {
        20,
        20,
-       -1, 3, 1194,
-       11, 0, 863,
-       38, 0, 866,
-       40, 0, 867,
-       41, 0, 868,
-       42, 0, 869,
-       43, 0, 870,
-       44, 0, 871,
-       45, 0, 872,
-       48, 0, 873,
-       51, 0, 874,
-       65, 0, 875,
-       79, 0, 54,
-       80, 0, 876,
-       81, 0, 877,
-       82, 0, 878,
-       83, 0, 879,
-       84, 0, 880,
-       85, 0, 881,
-       86, 0, 61
+       -1, 3, 1464,
+       11, 0, 1010,
+       38, 0, 1013,
+       40, 0, 1014,
+       41, 0, 1015,
+       42, 0, 1016,
+       43, 0, 1017,
+       44, 0, 1018,
+       45, 0, 1019,
+       48, 0, 1020,
+       51, 0, 1021,
+       65, 0, 1022,
+       80, 0, 54,
+       81, 0, 1023,
+       82, 0, 1024,
+       83, 0, 1025,
+       84, 0, 1026,
+       85, 0, 1027,
+       86, 0, 1028,
+       87, 0, 61
 };
 };
-static int parser_action_row1196[] = {
+static int parser_action_row1466[] = {
        20,
        20,
-       -1, 3, 1195,
-       11, 0, 863,
-       38, 0, 866,
-       40, 0, 867,
-       41, 0, 868,
-       42, 0, 869,
-       43, 0, 870,
-       44, 0, 871,
-       45, 0, 872,
-       48, 0, 873,
-       51, 0, 874,
-       65, 0, 875,
-       79, 0, 54,
-       80, 0, 876,
-       81, 0, 877,
-       82, 0, 878,
-       83, 0, 879,
-       84, 0, 880,
-       85, 0, 881,
-       86, 0, 61
+       -1, 3, 1465,
+       11, 0, 1010,
+       38, 0, 1013,
+       40, 0, 1014,
+       41, 0, 1015,
+       42, 0, 1016,
+       43, 0, 1017,
+       44, 0, 1018,
+       45, 0, 1019,
+       48, 0, 1020,
+       51, 0, 1021,
+       65, 0, 1022,
+       80, 0, 54,
+       81, 0, 1023,
+       82, 0, 1024,
+       83, 0, 1025,
+       84, 0, 1026,
+       85, 0, 1027,
+       86, 0, 1028,
+       87, 0, 61
 };
 };
-static int parser_action_row1197[] = {
+static int parser_action_row1467[] = {
        20,
        20,
-       -1, 3, 1196,
-       11, 0, 863,
-       38, 0, 866,
-       40, 0, 867,
-       41, 0, 868,
-       42, 0, 869,
-       43, 0, 870,
-       44, 0, 871,
-       45, 0, 872,
-       48, 0, 873,
-       51, 0, 874,
-       65, 0, 875,
-       79, 0, 54,
-       80, 0, 876,
-       81, 0, 877,
-       82, 0, 878,
-       83, 0, 879,
-       84, 0, 880,
-       85, 0, 881,
-       86, 0, 61
+       -1, 3, 1466,
+       11, 0, 1010,
+       38, 0, 1013,
+       40, 0, 1014,
+       41, 0, 1015,
+       42, 0, 1016,
+       43, 0, 1017,
+       44, 0, 1018,
+       45, 0, 1019,
+       48, 0, 1020,
+       51, 0, 1021,
+       65, 0, 1022,
+       80, 0, 54,
+       81, 0, 1023,
+       82, 0, 1024,
+       83, 0, 1025,
+       84, 0, 1026,
+       85, 0, 1027,
+       86, 0, 1028,
+       87, 0, 61
 };
 };
-static int parser_action_row1198[] = {
+static int parser_action_row1468[] = {
        20,
        20,
-       -1, 3, 1197,
-       11, 0, 863,
-       38, 0, 866,
-       40, 0, 867,
-       41, 0, 868,
-       42, 0, 869,
-       43, 0, 870,
-       44, 0, 871,
-       45, 0, 872,
-       48, 0, 873,
-       51, 0, 874,
-       65, 0, 875,
-       79, 0, 54,
-       80, 0, 876,
-       81, 0, 877,
-       82, 0, 878,
-       83, 0, 879,
-       84, 0, 880,
-       85, 0, 881,
-       86, 0, 61
+       -1, 3, 1467,
+       11, 0, 1010,
+       38, 0, 1013,
+       40, 0, 1014,
+       41, 0, 1015,
+       42, 0, 1016,
+       43, 0, 1017,
+       44, 0, 1018,
+       45, 0, 1019,
+       48, 0, 1020,
+       51, 0, 1021,
+       65, 0, 1022,
+       80, 0, 54,
+       81, 0, 1023,
+       82, 0, 1024,
+       83, 0, 1025,
+       84, 0, 1026,
+       85, 0, 1027,
+       86, 0, 1028,
+       87, 0, 61
 };
 };
-static int parser_action_row1199[] = {
+static int parser_action_row1469[] = {
        20,
        20,
-       -1, 3, 1198,
-       11, 0, 863,
-       38, 0, 866,
-       40, 0, 867,
-       41, 0, 868,
-       42, 0, 869,
-       43, 0, 870,
-       44, 0, 871,
-       45, 0, 872,
-       48, 0, 873,
-       51, 0, 874,
-       65, 0, 875,
-       79, 0, 54,
-       80, 0, 876,
-       81, 0, 877,
-       82, 0, 878,
-       83, 0, 879,
-       84, 0, 880,
-       85, 0, 881,
-       86, 0, 61
+       -1, 3, 1468,
+       11, 0, 1010,
+       38, 0, 1013,
+       40, 0, 1014,
+       41, 0, 1015,
+       42, 0, 1016,
+       43, 0, 1017,
+       44, 0, 1018,
+       45, 0, 1019,
+       48, 0, 1020,
+       51, 0, 1021,
+       65, 0, 1022,
+       80, 0, 54,
+       81, 0, 1023,
+       82, 0, 1024,
+       83, 0, 1025,
+       84, 0, 1026,
+       85, 0, 1027,
+       86, 0, 1028,
+       87, 0, 61
 };
 };
-static int parser_action_row1200[] = {
+static int parser_action_row1470[] = {
        20,
        20,
-       -1, 3, 1199,
-       11, 0, 863,
-       38, 0, 866,
-       40, 0, 867,
-       41, 0, 868,
-       42, 0, 869,
-       43, 0, 870,
-       44, 0, 871,
-       45, 0, 872,
-       48, 0, 873,
-       51, 0, 874,
-       65, 0, 875,
-       79, 0, 54,
-       80, 0, 876,
-       81, 0, 877,
-       82, 0, 878,
-       83, 0, 879,
-       84, 0, 880,
-       85, 0, 881,
-       86, 0, 61
+       -1, 3, 1469,
+       11, 0, 1010,
+       38, 0, 1013,
+       40, 0, 1014,
+       41, 0, 1015,
+       42, 0, 1016,
+       43, 0, 1017,
+       44, 0, 1018,
+       45, 0, 1019,
+       48, 0, 1020,
+       51, 0, 1021,
+       65, 0, 1022,
+       80, 0, 54,
+       81, 0, 1023,
+       82, 0, 1024,
+       83, 0, 1025,
+       84, 0, 1026,
+       85, 0, 1027,
+       86, 0, 1028,
+       87, 0, 61
 };
 };
-static int parser_action_row1201[] = {
+static int parser_action_row1471[] = {
        20,
        20,
-       -1, 3, 1200,
-       11, 0, 863,
-       38, 0, 866,
-       40, 0, 867,
-       41, 0, 868,
-       42, 0, 869,
-       43, 0, 870,
-       44, 0, 871,
-       45, 0, 872,
-       48, 0, 873,
-       51, 0, 874,
-       65, 0, 875,
-       79, 0, 54,
-       80, 0, 876,
-       81, 0, 877,
-       82, 0, 878,
-       83, 0, 879,
-       84, 0, 880,
-       85, 0, 881,
-       86, 0, 61
+       -1, 3, 1470,
+       11, 0, 1010,
+       38, 0, 1013,
+       40, 0, 1014,
+       41, 0, 1015,
+       42, 0, 1016,
+       43, 0, 1017,
+       44, 0, 1018,
+       45, 0, 1019,
+       48, 0, 1020,
+       51, 0, 1021,
+       65, 0, 1022,
+       80, 0, 54,
+       81, 0, 1023,
+       82, 0, 1024,
+       83, 0, 1025,
+       84, 0, 1026,
+       85, 0, 1027,
+       86, 0, 1028,
+       87, 0, 61
 };
 };
-static int parser_action_row1202[] = {
+static int parser_action_row1472[] = {
        20,
        20,
-       -1, 3, 1201,
-       11, 0, 863,
-       38, 0, 866,
-       40, 0, 867,
-       41, 0, 868,
-       42, 0, 869,
-       43, 0, 870,
-       44, 0, 871,
-       45, 0, 872,
-       48, 0, 873,
-       51, 0, 874,
-       65, 0, 875,
-       79, 0, 54,
-       80, 0, 876,
-       81, 0, 877,
-       82, 0, 878,
-       83, 0, 879,
-       84, 0, 880,
-       85, 0, 881,
-       86, 0, 61
+       -1, 3, 1471,
+       11, 0, 1010,
+       38, 0, 1013,
+       40, 0, 1014,
+       41, 0, 1015,
+       42, 0, 1016,
+       43, 0, 1017,
+       44, 0, 1018,
+       45, 0, 1019,
+       48, 0, 1020,
+       51, 0, 1021,
+       65, 0, 1022,
+       80, 0, 54,
+       81, 0, 1023,
+       82, 0, 1024,
+       83, 0, 1025,
+       84, 0, 1026,
+       85, 0, 1027,
+       86, 0, 1028,
+       87, 0, 61
 };
 };
-static int parser_action_row1203[] = {
+static int parser_action_row1473[] = {
        20,
        20,
-       -1, 3, 1202,
-       11, 0, 863,
-       38, 0, 866,
-       40, 0, 867,
-       41, 0, 868,
-       42, 0, 869,
-       43, 0, 870,
-       44, 0, 871,
-       45, 0, 872,
-       48, 0, 873,
-       51, 0, 874,
-       65, 0, 875,
-       79, 0, 54,
-       80, 0, 876,
-       81, 0, 877,
-       82, 0, 878,
-       83, 0, 879,
-       84, 0, 880,
-       85, 0, 881,
-       86, 0, 61
+       -1, 3, 1472,
+       11, 0, 1010,
+       38, 0, 1013,
+       40, 0, 1014,
+       41, 0, 1015,
+       42, 0, 1016,
+       43, 0, 1017,
+       44, 0, 1018,
+       45, 0, 1019,
+       48, 0, 1020,
+       51, 0, 1021,
+       65, 0, 1022,
+       80, 0, 54,
+       81, 0, 1023,
+       82, 0, 1024,
+       83, 0, 1025,
+       84, 0, 1026,
+       85, 0, 1027,
+       86, 0, 1028,
+       87, 0, 61
 };
 };
-static int parser_action_row1204[] = {
+static int parser_action_row1474[] = {
        5,
        5,
-       -1, 3, 1203,
-       11, 0, 1326,
-       46, 0, 1327,
-       80, 0, 1328,
-       81, 0, 1329
+       -1, 3, 1473,
+       11, 0, 1646,
+       46, 0, 1647,
+       81, 0, 1648,
+       82, 0, 1649
 };
 };
-static int parser_action_row1205[] = {
+static int parser_action_row1475[] = {
        31,
        31,
-       -1, 1, 343,
-       8, 0, 687,
+       -1, 1, 423,
+       8, 0, 781,
        11, 0, 28,
        14, 0, 30,
        17, 0, 31,
        11, 0, 28,
        14, 0, 30,
        17, 0, 31,
@@ -12475,23 +14629,23 @@ static int parser_action_row1205[] = {
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
-       79, 0, 54,
-       80, 0, 55,
-       81, 0, 56,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 55,
+       82, 0, 56,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row1206[] = {
+static int parser_action_row1476[] = {
        1,
        1,
-       -1, 1, 382
+       -1, 1, 462
 };
 };
-static int parser_action_row1207[] = {
+static int parser_action_row1477[] = {
        31,
        31,
-       -1, 1, 391,
-       8, 0, 308,
+       -1, 1, 471,
+       8, 0, 326,
        11, 0, 28,
        14, 0, 30,
        17, 0, 31,
        11, 0, 28,
        14, 0, 30,
        17, 0, 31,
@@ -12513,23 +14667,177 @@ static int parser_action_row1207[] = {
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
-       79, 0, 54,
-       80, 0, 55,
-       81, 0, 56,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 55,
+       82, 0, 56,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row1208[] = {
+static int parser_action_row1478[] = {
        2,
        2,
-       -1, 3, 1207,
+       -1, 3, 1477,
        49, 0, 191
 };
        49, 0, 191
 };
-static int parser_action_row1209[] = {
+static int parser_action_row1479[] = {
+       23,
+       -1, 3, 1478,
+       11, 0, 170,
+       23, 0, 171,
+       32, 0, 172,
+       38, 0, 173,
+       40, 0, 174,
+       41, 0, 175,
+       42, 0, 47,
+       43, 0, 48,
+       44, 0, 49,
+       45, 0, 50,
+       48, 0, 176,
+       51, 0, 52,
+       53, 0, 53,
+       65, 0, 177,
+       80, 0, 54,
+       81, 0, 178,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
+};
+static int parser_action_row1480[] = {
+       2,
+       -1, 1, 355,
+       58, 1, 696
+};
+static int parser_action_row1481[] = {
+       1,
+       -1, 1, 379
+};
+static int parser_action_row1482[] = {
+       4,
+       -1, 1, 354,
+       35, 0, 730,
+       58, 1, 695,
+       78, 0, 731
+};
+static int parser_action_row1483[] = {
+       1,
+       -1, 1, 360
+};
+static int parser_action_row1484[] = {
+       1,
+       -1, 1, 373
+};
+static int parser_action_row1485[] = {
+       1,
+       -1, 1, 395
+};
+static int parser_action_row1486[] = {
+       20,
+       -1, 3, 1485,
+       41, 0, 1059,
+       47, 0, 390,
+       53, 0, 411,
+       64, 0, 412,
+       65, 0, 413,
+       66, 0, 414,
+       67, 0, 415,
+       68, 0, 416,
+       69, 0, 417,
+       70, 0, 418,
+       71, 0, 419,
+       72, 0, 420,
+       73, 0, 421,
+       74, 0, 422,
+       75, 0, 423,
+       76, 0, 424,
+       77, 0, 425,
+       80, 0, 1060,
+       81, 0, 426
+};
+static int parser_action_row1487[] = {
+       1,
+       -1, 1, 1269
+};
+static int parser_action_row1488[] = {
+       4,
+       -1, 3, 1487,
+       32, 0, 1655,
+       47, 0, 1656,
+       51, 0, 1657
+};
+static int parser_action_row1489[] = {
+       1,
+       -1, 1, 688
+};
+static int parser_action_row1490[] = {
+       33,
+       -1, 3, 1489,
+       0, 0, 1,
+       1, 0, 2,
+       8, 0, 540,
+       11, 0, 28,
+       14, 0, 30,
+       17, 0, 31,
+       23, 0, 35,
+       26, 0, 36,
+       27, 0, 37,
+       28, 0, 38,
+       33, 0, 40,
+       34, 0, 41,
+       35, 0, 42,
+       36, 0, 43,
+       37, 0, 44,
+       38, 0, 45,
+       41, 0, 46,
+       42, 0, 47,
+       43, 0, 48,
+       44, 0, 49,
+       45, 0, 50,
+       50, 0, 51,
+       51, 0, 52,
+       53, 0, 53,
+       80, 0, 54,
+       81, 0, 55,
+       82, 0, 56,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
+};
+static int parser_action_row1491[] = {
+       3,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row1492[] = {
+       1,
+       -1, 1, 382
+};
+static int parser_action_row1493[] = {
+       2,
+       -1, 1, 365,
+       56, 0, 330
+};
+static int parser_action_row1494[] = {
+       2,
+       -1, 3, 1493,
+       52, 0, 1661
+};
+static int parser_action_row1495[] = {
+       3,
+       -1, 3, 1494,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row1496[] = {
        23,
        23,
-       -1, 3, 1208,
+       -1, 3, 1495,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -12544,83 +14852,261 @@ static int parser_action_row1209[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 178,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 178,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
+};
+static int parser_action_row1497[] = {
+       1,
+       -1, 1, 149
+};
+static int parser_action_row1498[] = {
+       2,
+       -1, 3, 1497,
+       80, 0, 1078
+};
+static int parser_action_row1499[] = {
+       1,
+       -1, 1, 143
+};
+static int parser_action_row1500[] = {
+       1,
+       -1, 1, 1263
+};
+static int parser_action_row1501[] = {
+       2,
+       -1, 3, 1500,
+       54, 0, 1665
+};
+static int parser_action_row1502[] = {
+       1,
+       -1, 1, 99
+};
+static int parser_action_row1503[] = {
+       8,
+       -1, 1, 331,
+       8, 0, 1666,
+       12, 0, 892,
+       15, 0, 893,
+       16, 0, 894,
+       20, 0, 32,
+       21, 0, 33,
+       22, 0, 34
+};
+static int parser_action_row1504[] = {
+       1,
+       -1, 1, 115
+};
+static int parser_action_row1505[] = {
+       1,
+       -1, 1, 123
+};
+static int parser_action_row1506[] = {
+       1,
+       -1, 1, 87
+};
+static int parser_action_row1507[] = {
+       9,
+       -1, 1, 331,
+       8, 0, 1667,
+       12, 0, 892,
+       15, 0, 893,
+       16, 0, 894,
+       20, 0, 32,
+       21, 0, 33,
+       22, 0, 34,
+       41, 0, 895
+};
+static int parser_action_row1508[] = {
+       3,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row1509[] = {
+       8,
+       -1, 1, 331,
+       8, 0, 1669,
+       12, 0, 892,
+       15, 0, 893,
+       16, 0, 894,
+       20, 0, 32,
+       21, 0, 33,
+       22, 0, 34
+};
+static int parser_action_row1510[] = {
+       1,
+       -1, 1, 95
+};
+static int parser_action_row1511[] = {
+       8,
+       -1, 1, 331,
+       8, 0, 1670,
+       12, 0, 892,
+       15, 0, 893,
+       16, 0, 894,
+       20, 0, 32,
+       21, 0, 33,
+       22, 0, 34
+};
+static int parser_action_row1512[] = {
+       1,
+       -1, 1, 111
+};
+static int parser_action_row1513[] = {
+       1,
+       -1, 1, 129
+};
+static int parser_action_row1514[] = {
+       5,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2,
+       51, 0, 570,
+       56, 0, 330
+};
+static int parser_action_row1515[] = {
+       2,
+       -1, 3, 1514,
+       56, 0, 330
+};
+static int parser_action_row1516[] = {
+       5,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2,
+       51, 0, 1340,
+       56, 0, 330
+};
+static int parser_action_row1517[] = {
+       3,
+       -1, 3, 1516,
+       13, 0, 1533,
+       14, 0, 1675
+};
+static int parser_action_row1518[] = {
+       9,
+       -1, 1, 222,
+       12, 0, 1537,
+       13, 0, 456,
+       16, 1, 331,
+       20, 0, 32,
+       21, 0, 33,
+       22, 0, 34,
+       56, 0, 330,
+       58, 0, 1677
+};
+static int parser_action_row1519[] = {
+       3,
+       -1, 1, 190,
+       56, 0, 330,
+       58, 0, 1681
+};
+static int parser_action_row1520[] = {
+       5,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2,
+       51, 0, 1340,
+       56, 0, 330
+};
+static int parser_action_row1521[] = {
+       6,
+       -1, 3, 1520,
+       3, 0, 722,
+       13, 0, 1684,
+       29, 0, 39,
+       86, 0, 1685,
+       92, 0, 62
 };
 };
-static int parser_action_row1210[] = {
+static int parser_action_row1522[] = {
+       1,
+       -1, 1, 151
+};
+static int parser_action_row1523[] = {
        2,
        2,
-       -1, 1, 282,
-       58, 1, 565
+       -1, 3, 1522,
+       82, 0, 1688
 };
 };
-static int parser_action_row1211[] = {
-       4,
-       -1, 1, 281,
-       35, 0, 645,
-       58, 1, 564,
-       78, 0, 646
+static int parser_action_row1524[] = {
+       2,
+       -1, 3, 1523,
+       17, 0, 1689
 };
 };
-static int parser_action_row1212[] = {
-       1,
-       -1, 1, 287
+static int parser_action_row1525[] = {
+       2,
+       -1, 3, 1524,
+       82, 0, 1690
 };
 };
-static int parser_action_row1213[] = {
-       1,
-       -1, 1, 300
+static int parser_action_row1526[] = {
+       3,
+       -1, 1, 191,
+       56, 0, 330,
+       58, 0, 1691
 };
 };
-static int parser_action_row1214[] = {
-       1,
-       -1, 1, 319
+static int parser_action_row1527[] = {
+       2,
+       -1, 3, 1526,
+       82, 0, 1693
 };
 };
-static int parser_action_row1215[] = {
-       20,
-       -1, 3, 1214,
-       41, 0, 911,
-       47, 0, 361,
-       53, 0, 383,
-       64, 0, 384,
-       65, 0, 385,
-       66, 0, 386,
-       67, 0, 387,
-       68, 0, 388,
-       69, 0, 389,
-       70, 0, 390,
-       71, 0, 391,
-       72, 0, 392,
-       73, 0, 393,
-       74, 0, 394,
-       75, 0, 395,
-       76, 0, 396,
-       77, 0, 397,
-       79, 0, 912,
-       80, 0, 398
+static int parser_action_row1528[] = {
+       3,
+       -1, 1, 193,
+       56, 0, 330,
+       58, 0, 1694
 };
 };
-static int parser_action_row1216[] = {
-       1,
-       -1, 1, 851
+static int parser_action_row1529[] = {
+       6,
+       -1, 3, 1528,
+       3, 0, 722,
+       13, 0, 1696,
+       14, 0, 1697,
+       29, 0, 39,
+       92, 0, 62
 };
 };
-static int parser_action_row1217[] = {
-       4,
-       -1, 3, 1216,
-       32, 0, 1335,
-       47, 0, 1336,
-       51, 0, 1337
+static int parser_action_row1530[] = {
+       2,
+       -1, 3, 1529,
+       58, 0, 1702
 };
 };
-static int parser_action_row1218[] = {
-       1,
-       -1, 1, 557
+static int parser_action_row1531[] = {
+       2,
+       -1, 1, 269,
+       13, 0, 456
 };
 };
-static int parser_action_row1219[] = {
+static int parser_action_row1532[] = {
+       3,
+       -1, 3, 1531,
+       52, 0, 1704,
+       81, 0, 865
+};
+static int parser_action_row1533[] = {
+       3,
+       -1, 3, 1532,
+       13, 0, 1533,
+       14, 0, 1706
+};
+static int parser_action_row1534[] = {
+       7,
+       -1, 3, 1533,
+       0, 0, 87,
+       1, 0, 88,
+       3, 0, 383,
+       15, 0, 384,
+       16, 0, 385,
+       81, 0, 387
+};
+static int parser_action_row1535[] = {
        33,
        33,
-       -1, 3, 1218,
+       -1, 3, 1534,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       8, 0, 507,
+       8, 0, 540,
        11, 0, 28,
        14, 0, 30,
        17, 0, 31,
        11, 0, 28,
        14, 0, 30,
        17, 0, 31,
@@ -12642,414 +15128,442 @@ static int parser_action_row1219[] = {
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
-       79, 0, 54,
-       80, 0, 55,
-       81, 0, 56,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
-};
-static int parser_action_row1220[] = {
-       3,
-       -1, 1, 531,
-       0, 0, 1,
-       1, 0, 2
-};
-static int parser_action_row1221[] = {
-       1,
-       -1, 1, 306
-};
-static int parser_action_row1222[] = {
-       2,
-       -1, 1, 292,
-       56, 0, 312
+       80, 0, 54,
+       81, 0, 55,
+       82, 0, 56,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row1223[] = {
+static int parser_action_row1536[] = {
        2,
        2,
-       -1, 3, 1222,
-       52, 0, 1341
+       -1, 3, 1535,
+       14, 0, 1711
 };
 };
-static int parser_action_row1224[] = {
+static int parser_action_row1537[] = {
        3,
        3,
-       -1, 3, 1223,
-       0, 0, 1,
-       1, 0, 2
-};
-static int parser_action_row1225[] = {
-       23,
-       -1, 3, 1224,
-       11, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
-       38, 0, 173,
-       40, 0, 174,
-       41, 0, 175,
-       42, 0, 47,
-       43, 0, 48,
-       44, 0, 49,
-       45, 0, 50,
-       48, 0, 176,
-       51, 0, 52,
-       53, 0, 53,
-       65, 0, 177,
-       79, 0, 54,
-       80, 0, 178,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
-};
-static int parser_action_row1226[] = {
-       2,
-       -1, 3, 1225,
-       79, 0, 928
-};
-static int parser_action_row1227[] = {
-       1,
-       -1, 1, 109
-};
-static int parser_action_row1228[] = {
-       1,
-       -1, 1, 845
-};
-static int parser_action_row1229[] = {
-       2,
-       -1, 3, 1228,
-       54, 0, 1345
-};
-static int parser_action_row1230[] = {
-       1,
-       -1, 1, 85
+       -1, 1, 361,
+       35, 0, 730,
+       78, 0, 731
 };
 };
-static int parser_action_row1231[] = {
-       8,
-       -1, 1, 258,
-       8, 0, 1346,
-       12, 0, 773,
-       15, 0, 774,
-       16, 0, 775,
+static int parser_action_row1538[] = {
+       4,
+       -1, 1, 331,
        20, 0, 32,
        21, 0, 33,
        22, 0, 34
 };
        20, 0, 32,
        21, 0, 33,
        22, 0, 34
 };
-static int parser_action_row1232[] = {
-       1,
-       -1, 1, 93
-};
-static int parser_action_row1233[] = {
-       1,
-       -1, 1, 97
-};
-static int parser_action_row1234[] = {
-       1,
-       -1, 1, 99
-};
-static int parser_action_row1235[] = {
-       5,
-       -1, 1, 531,
+static int parser_action_row1539[] = {
+       3,
+       -1, 1, 656,
        0, 0, 1,
        0, 0, 1,
-       1, 0, 2,
-       51, 0, 527,
-       56, 0, 312
+       1, 0, 2
 };
 };
-static int parser_action_row1236[] = {
-       2,
-       -1, 3, 1235,
-       56, 0, 312
+static int parser_action_row1540[] = {
+       1,
+       -1, 1, 229
 };
 };
-static int parser_action_row1237[] = {
-       5,
-       -1, 1, 531,
-       0, 0, 1,
-       1, 0, 2,
-       51, 0, 1116,
-       56, 0, 312
+static int parser_action_row1541[] = {
+       3,
+       -1, 1, 225,
+       13, 0, 456,
+       58, 0, 1715
 };
 };
-static int parser_action_row1238[] = {
+static int parser_action_row1542[] = {
        2,
        2,
-       -1, 3, 1237,
-       14, 0, 1351
+       -1, 3, 1541,
+       16, 0, 1717
 };
 };
-static int parser_action_row1239[] = {
+static int parser_action_row1543[] = {
        8,
        8,
-       -1, 1, 179,
-       12, 0, 1255,
-       16, 1, 258,
+       -1, 1, 223,
+       12, 0, 1537,
+       13, 0, 456,
+       16, 1, 331,
        20, 0, 32,
        21, 0, 33,
        22, 0, 34,
        20, 0, 32,
        21, 0, 33,
        22, 0, 34,
-       56, 0, 312,
-       58, 0, 1352
+       58, 0, 1718
 };
 };
-static int parser_action_row1240[] = {
+static int parser_action_row1544[] = {
        3,
        3,
-       -1, 1, 147,
-       56, 0, 312,
-       58, 0, 1355
-};
-static int parser_action_row1241[] = {
-       5,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        0, 0, 1,
-       1, 0, 2,
-       51, 0, 1116,
-       56, 0, 312
+       1, 0, 2
 };
 };
-static int parser_action_row1242[] = {
+static int parser_action_row1545[] = {
+       2,
+       -1, 1, 197,
+       58, 0, 1722
+};
+static int parser_action_row1546[] = {
        6,
        6,
-       -1, 3, 1241,
-       3, 0, 639,
-       13, 0, 1358,
+       -1, 3, 1545,
+       3, 0, 722,
+       13, 0, 1723,
        29, 0, 39,
        29, 0, 39,
-       85, 0, 1359,
-       91, 0, 62
-};
-static int parser_action_row1243[] = {
-       2,
-       -1, 3, 1242,
-       81, 0, 1362
+       86, 0, 1724,
+       92, 0, 62
 };
 };
-static int parser_action_row1244[] = {
+static int parser_action_row1547[] = {
        2,
        2,
-       -1, 3, 1243,
-       17, 0, 1363
+       -1, 3, 1546,
+       19, 0, 1727
 };
 };
-static int parser_action_row1245[] = {
-       2,
-       -1, 3, 1244,
-       81, 0, 1364
+static int parser_action_row1548[] = {
+       4,
+       -1, 3, 1547,
+       3, 0, 722,
+       29, 0, 39,
+       92, 0, 62
 };
 };
-static int parser_action_row1246[] = {
+static int parser_action_row1549[] = {
        3,
        3,
-       -1, 1, 148,
-       56, 0, 312,
-       58, 0, 1365
+       -1, 3, 1548,
+       29, 0, 39,
+       92, 0, 62
 };
 };
-static int parser_action_row1247[] = {
-       2,
-       -1, 3, 1246,
-       81, 0, 1367
+static int parser_action_row1550[] = {
+       1,
+       -1, 1, 305
 };
 };
-static int parser_action_row1248[] = {
-       3,
-       -1, 1, 150,
-       56, 0, 312,
-       58, 0, 1368
+static int parser_action_row1551[] = {
+       1,
+       -1, 1, 1122
 };
 };
-static int parser_action_row1249[] = {
-       6,
-       -1, 3, 1248,
-       3, 0, 639,
-       13, 0, 1370,
-       14, 0, 1371,
-       29, 0, 39,
-       91, 0, 62
+static int parser_action_row1552[] = {
+       1,
+       -1, 1, 1117
 };
 };
-static int parser_action_row1250[] = {
+static int parser_action_row1553[] = {
        2,
        2,
-       -1, 3, 1249,
-       58, 0, 1374
+       -1, 3, 1552,
+       56, 0, 1731
 };
 };
-static int parser_action_row1251[] = {
+static int parser_action_row1554[] = {
+       4,
+       -1, 3, 1553,
+       0, 0, 87,
+       1, 0, 88,
+       79, 0, 205
+};
+static int parser_action_row1555[] = {
+       23,
+       -1, 3, 1554,
+       11, 0, 170,
+       23, 0, 171,
+       32, 0, 172,
+       38, 0, 173,
+       40, 0, 174,
+       41, 0, 175,
+       42, 0, 47,
+       43, 0, 48,
+       44, 0, 49,
+       45, 0, 50,
+       48, 0, 176,
+       51, 0, 52,
+       53, 0, 53,
+       65, 0, 177,
+       80, 0, 54,
+       81, 0, 178,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
+};
+static int parser_action_row1556[] = {
+       23,
+       -1, 3, 1555,
+       11, 0, 170,
+       23, 0, 171,
+       32, 0, 172,
+       38, 0, 173,
+       40, 0, 174,
+       41, 0, 175,
+       42, 0, 47,
+       43, 0, 48,
+       44, 0, 49,
+       45, 0, 50,
+       48, 0, 176,
+       51, 0, 52,
+       53, 0, 53,
+       65, 0, 177,
+       80, 0, 54,
+       81, 0, 178,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
+};
+static int parser_action_row1557[] = {
        1,
        1,
-       -1, 1, 202
+       -1, 1, 808
 };
 };
-static int parser_action_row1252[] = {
-       3,
-       -1, 3, 1251,
-       52, 0, 1375,
-       80, 0, 751
+static int parser_action_row1558[] = {
+       1,
+       -1, 1, 813
 };
 };
-static int parser_action_row1253[] = {
-       2,
-       -1, 3, 1252,
-       14, 0, 1377
+static int parser_action_row1559[] = {
+       5,
+       -1, 3, 1558,
+       11, 0, 621,
+       46, 0, 622,
+       81, 0, 1736,
+       82, 0, 1737
+};
+static int parser_action_row1560[] = {
+       23,
+       -1, 3, 1559,
+       11, 0, 170,
+       23, 0, 171,
+       32, 0, 172,
+       38, 0, 173,
+       40, 0, 174,
+       41, 0, 175,
+       42, 0, 47,
+       43, 0, 48,
+       44, 0, 49,
+       45, 0, 50,
+       48, 0, 176,
+       51, 0, 52,
+       53, 0, 53,
+       65, 0, 177,
+       80, 0, 54,
+       81, 0, 178,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row1254[] = {
-       33,
-       -1, 3, 1253,
-       0, 0, 1,
-       1, 0, 2,
-       8, 0, 507,
-       11, 0, 28,
-       14, 0, 30,
-       17, 0, 31,
-       23, 0, 35,
-       26, 0, 36,
-       27, 0, 37,
-       28, 0, 38,
-       33, 0, 40,
-       34, 0, 41,
-       35, 0, 42,
-       36, 0, 43,
-       37, 0, 44,
-       38, 0, 45,
-       41, 0, 46,
+static int parser_action_row1561[] = {
+       23,
+       -1, 3, 1560,
+       11, 0, 170,
+       23, 0, 171,
+       32, 0, 172,
+       38, 0, 173,
+       40, 0, 174,
+       41, 0, 175,
        42, 0, 47,
        43, 0, 48,
        44, 0, 49,
        45, 0, 50,
        42, 0, 47,
        43, 0, 48,
        44, 0, 49,
        45, 0, 50,
-       50, 0, 51,
+       48, 0, 176,
        51, 0, 52,
        53, 0, 53,
        51, 0, 52,
        53, 0, 53,
-       79, 0, 54,
-       80, 0, 55,
-       81, 0, 56,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       65, 0, 177,
+       80, 0, 54,
+       81, 0, 178,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row1255[] = {
-       3,
-       -1, 1, 288,
-       35, 0, 645,
-       78, 0, 646
+static int parser_action_row1562[] = {
+       1,
+       -1, 1, 101
 };
 };
-static int parser_action_row1256[] = {
-       4,
-       -1, 1, 258,
+static int parser_action_row1563[] = {
+       8,
+       -1, 1, 331,
+       8, 0, 1740,
+       12, 0, 892,
+       15, 0, 893,
+       16, 0, 894,
        20, 0, 32,
        21, 0, 33,
        22, 0, 34
 };
        20, 0, 32,
        21, 0, 33,
        22, 0, 34
 };
-static int parser_action_row1257[] = {
-       3,
-       -1, 1, 531,
-       0, 0, 1,
-       1, 0, 2
+static int parser_action_row1564[] = {
+       1,
+       -1, 1, 117
 };
 };
-static int parser_action_row1258[] = {
+static int parser_action_row1565[] = {
+       1,
+       -1, 1, 125
+};
+static int parser_action_row1566[] = {
        2,
        2,
-       -1, 1, 182,
-       58, 0, 1382
+       -1, 3, 1565,
+       45, 0, 1741
 };
 };
-static int parser_action_row1259[] = {
+static int parser_action_row1567[] = {
        2,
        2,
-       -1, 3, 1258,
-       16, 0, 1383
+       -1, 3, 1566,
+       52, 0, 1742
 };
 };
-static int parser_action_row1260[] = {
-       7,
-       -1, 1, 180,
-       12, 0, 1255,
-       16, 1, 258,
-       20, 0, 32,
-       21, 0, 33,
-       22, 0, 34,
-       58, 0, 1384
+static int parser_action_row1568[] = {
+       4,
+       -1, 3, 1567,
+       0, 0, 87,
+       1, 0, 88,
+       79, 0, 205
 };
 };
-static int parser_action_row1261[] = {
+static int parser_action_row1569[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1262[] = {
+static int parser_action_row1570[] = {
        2,
        2,
-       -1, 1, 154,
-       58, 0, 1387
-};
-static int parser_action_row1263[] = {
-       6,
-       -1, 3, 1262,
-       3, 0, 639,
-       13, 0, 1388,
-       29, 0, 39,
-       85, 0, 1389,
-       91, 0, 62
+       -1, 3, 1569,
+       45, 0, 1746
 };
 };
-static int parser_action_row1264[] = {
+static int parser_action_row1571[] = {
        2,
        2,
-       -1, 3, 1263,
-       19, 0, 1392
+       -1, 3, 1570,
+       52, 0, 1747
 };
 };
-static int parser_action_row1265[] = {
-       4,
-       -1, 3, 1264,
-       3, 0, 639,
-       29, 0, 39,
-       91, 0, 62
+static int parser_action_row1572[] = {
+       1,
+       -1, 1, 689
 };
 };
-static int parser_action_row1266[] = {
-       3,
-       -1, 3, 1265,
-       29, 0, 39,
-       91, 0, 62
+static int parser_action_row1573[] = {
+       1,
+       -1, 1, 100
 };
 };
-static int parser_action_row1267[] = {
+static int parser_action_row1574[] = {
+       8,
+       -1, 1, 331,
+       8, 0, 1748,
+       12, 0, 892,
+       15, 0, 893,
+       16, 0, 894,
+       20, 0, 32,
+       21, 0, 33,
+       22, 0, 34
+};
+static int parser_action_row1575[] = {
        1,
        1,
-       -1, 1, 236
+       -1, 1, 116
 };
 };
-static int parser_action_row1268[] = {
-       2,
-       -1, 3, 1267,
-       45, 0, 1396
+static int parser_action_row1576[] = {
+       1,
+       -1, 1, 124
 };
 };
-static int parser_action_row1269[] = {
-       2,
-       -1, 3, 1268,
-       52, 0, 1397
+static int parser_action_row1577[] = {
+       1,
+       -1, 1, 88
 };
 };
-static int parser_action_row1270[] = {
+static int parser_action_row1578[] = {
+       9,
+       -1, 1, 331,
+       8, 0, 1749,
+       12, 0, 892,
+       15, 0, 893,
+       16, 0, 894,
+       20, 0, 32,
+       21, 0, 33,
+       22, 0, 34,
+       41, 0, 895
+};
+static int parser_action_row1579[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1271[] = {
-       2,
-       -1, 3, 1270,
-       45, 0, 1399
+static int parser_action_row1580[] = {
+       8,
+       -1, 1, 331,
+       8, 0, 1751,
+       12, 0, 892,
+       15, 0, 893,
+       16, 0, 894,
+       20, 0, 32,
+       21, 0, 33,
+       22, 0, 34
 };
 };
-static int parser_action_row1272[] = {
-       2,
-       -1, 3, 1271,
-       52, 0, 1400
+static int parser_action_row1581[] = {
+       1,
+       -1, 1, 96
 };
 };
-static int parser_action_row1273[] = {
+static int parser_action_row1582[] = {
+       8,
+       -1, 1, 331,
+       8, 0, 1752,
+       12, 0, 892,
+       15, 0, 893,
+       16, 0, 894,
+       20, 0, 32,
+       21, 0, 33,
+       22, 0, 34
+};
+static int parser_action_row1583[] = {
        1,
        1,
-       -1, 1, 558
+       -1, 1, 112
 };
 };
-static int parser_action_row1274[] = {
+static int parser_action_row1584[] = {
        1,
        1,
-       -1, 1, 86
+       -1, 1, 130
 };
 };
-static int parser_action_row1275[] = {
+static int parser_action_row1585[] = {
+       1,
+       -1, 1, 102
+};
+static int parser_action_row1586[] = {
        8,
        8,
-       -1, 1, 258,
-       8, 0, 1401,
-       12, 0, 773,
-       15, 0, 774,
-       16, 0, 775,
+       -1, 1, 331,
+       8, 0, 1753,
+       12, 0, 892,
+       15, 0, 893,
+       16, 0, 894,
        20, 0, 32,
        21, 0, 33,
        22, 0, 34
 };
        20, 0, 32,
        21, 0, 33,
        22, 0, 34
 };
-static int parser_action_row1276[] = {
+static int parser_action_row1587[] = {
        1,
        1,
-       -1, 1, 94
+       -1, 1, 118
 };
 };
-static int parser_action_row1277[] = {
+static int parser_action_row1588[] = {
        1,
        1,
-       -1, 1, 98
+       -1, 1, 126
 };
 };
-static int parser_action_row1278[] = {
+static int parser_action_row1589[] = {
        1,
        1,
-       -1, 1, 100
+       -1, 1, 1007
 };
 };
-static int parser_action_row1279[] = {
-       1,
-       -1, 1, 675
+static int parser_action_row1590[] = {
+       23,
+       -1, 3, 1589,
+       11, 0, 170,
+       23, 0, 171,
+       32, 0, 172,
+       38, 0, 173,
+       40, 0, 174,
+       41, 0, 175,
+       42, 0, 47,
+       43, 0, 48,
+       44, 0, 49,
+       45, 0, 50,
+       48, 0, 176,
+       51, 0, 52,
+       53, 0, 53,
+       65, 0, 177,
+       80, 0, 54,
+       81, 0, 374,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row1280[] = {
+static int parser_action_row1591[] = {
        23,
        23,
-       -1, 3, 1279,
+       -1, 3, 1590,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -13064,139 +15578,145 @@ static int parser_action_row1280[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 355,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 374,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row1281[] = {
+static int parser_action_row1592[] = {
+       3,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row1593[] = {
        34,
        34,
-       -1, 3, 1280,
+       -1, 3, 1592,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       8, 0, 689,
-       11, 0, 690,
-       14, 0, 691,
-       17, 0, 692,
-       23, 0, 693,
-       25, 0, 694,
-       26, 0, 695,
-       27, 0, 696,
-       28, 0, 697,
-       33, 0, 698,
-       34, 0, 699,
-       35, 0, 700,
-       36, 0, 701,
-       37, 0, 702,
+       8, 0, 785,
+       11, 0, 786,
+       14, 0, 787,
+       17, 0, 788,
+       23, 0, 789,
+       25, 0, 790,
+       26, 0, 791,
+       27, 0, 792,
+       28, 0, 793,
+       33, 0, 794,
+       34, 0, 795,
+       35, 0, 796,
+       36, 0, 797,
+       37, 0, 798,
        38, 0, 45,
        38, 0, 45,
-       41, 0, 703,
+       41, 0, 799,
        42, 0, 47,
        43, 0, 48,
        44, 0, 49,
        45, 0, 50,
        42, 0, 47,
        43, 0, 48,
        44, 0, 49,
        45, 0, 50,
-       50, 0, 704,
+       50, 0, 800,
        51, 0, 52,
        53, 0, 53,
        51, 0, 52,
        53, 0, 53,
-       79, 0, 54,
-       80, 0, 705,
-       81, 0, 706,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 801,
+       82, 0, 802,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row1282[] = {
+static int parser_action_row1594[] = {
        33,
        33,
-       -1, 3, 1281,
+       -1, 3, 1593,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       8, 0, 810,
-       11, 0, 690,
-       14, 0, 691,
-       17, 0, 692,
-       23, 0, 693,
-       26, 0, 695,
-       27, 0, 696,
-       28, 0, 697,
-       33, 0, 698,
-       34, 0, 699,
-       35, 0, 700,
-       36, 0, 701,
-       37, 0, 702,
+       8, 0, 946,
+       11, 0, 786,
+       14, 0, 787,
+       17, 0, 788,
+       23, 0, 789,
+       26, 0, 791,
+       27, 0, 792,
+       28, 0, 793,
+       33, 0, 794,
+       34, 0, 795,
+       35, 0, 796,
+       36, 0, 797,
+       37, 0, 798,
        38, 0, 45,
        38, 0, 45,
-       41, 0, 703,
+       41, 0, 799,
        42, 0, 47,
        43, 0, 48,
        44, 0, 49,
        45, 0, 50,
        42, 0, 47,
        43, 0, 48,
        44, 0, 49,
        45, 0, 50,
-       50, 0, 704,
+       50, 0, 800,
        51, 0, 52,
        53, 0, 53,
        51, 0, 52,
        53, 0, 53,
-       79, 0, 54,
-       80, 0, 705,
-       81, 0, 706,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 801,
+       82, 0, 802,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row1283[] = {
+static int parser_action_row1595[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1284[] = {
+static int parser_action_row1596[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1285[] = {
+static int parser_action_row1597[] = {
        1,
        1,
-       -1, 1, 699
+       -1, 1, 1033
 };
 };
-static int parser_action_row1286[] = {
+static int parser_action_row1598[] = {
        2,
        2,
-       -1, 1, 337,
-       25, 1, 630
+       -1, 1, 417,
+       25, 1, 960
 };
 };
-static int parser_action_row1287[] = {
+static int parser_action_row1599[] = {
        2,
        2,
-       -1, 1, 336,
-       25, 1, 629
+       -1, 1, 416,
+       25, 1, 959
 };
 };
-static int parser_action_row1288[] = {
+static int parser_action_row1600[] = {
        1,
        1,
-       -1, 1, 660
+       -1, 1, 990
 };
 };
-static int parser_action_row1289[] = {
+static int parser_action_row1601[] = {
        2,
        2,
-       -1, 1, 372,
-       25, 1, 658
+       -1, 1, 452,
+       25, 1, 988
 };
 };
-static int parser_action_row1290[] = {
+static int parser_action_row1602[] = {
        4,
        4,
-       -1, 1, 474,
-       58, 0, 1408,
-       59, 0, 215,
-       60, 0, 216
+       -1, 1, 558,
+       58, 0, 1762,
+       59, 0, 220,
+       60, 0, 221
 };
 };
-static int parser_action_row1291[] = {
+static int parser_action_row1603[] = {
        3,
        3,
-       -1, 1, 366,
-       25, 1, 652,
-       78, 0, 500
+       -1, 1, 446,
+       25, 1, 982,
+       78, 0, 533
 };
 };
-static int parser_action_row1292[] = {
+static int parser_action_row1604[] = {
        23,
        23,
-       -1, 3, 1291,
+       -1, 3, 1603,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -13211,18 +15731,18 @@ static int parser_action_row1292[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 355,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 374,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row1293[] = {
+static int parser_action_row1605[] = {
        23,
        23,
-       -1, 3, 1292,
+       -1, 3, 1604,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -13237,39 +15757,39 @@ static int parser_action_row1293[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 355,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 374,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row1294[] = {
+static int parser_action_row1606[] = {
        2,
        2,
-       -1, 3, 1293,
-       14, 0, 1413
+       -1, 3, 1605,
+       14, 0, 1767
 };
 };
-static int parser_action_row1295[] = {
+static int parser_action_row1607[] = {
        1,
        1,
-       -1, 1, 428
+       -1, 1, 512
 };
 };
-static int parser_action_row1296[] = {
+static int parser_action_row1608[] = {
        2,
        2,
-       -1, 3, 1295,
+       -1, 3, 1607,
        49, 0, 191
 };
        49, 0, 191
 };
-static int parser_action_row1297[] = {
+static int parser_action_row1609[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1298[] = {
+static int parser_action_row1610[] = {
        31,
        31,
-       -1, 1, 391,
-       8, 0, 983,
+       -1, 1, 471,
+       8, 0, 1183,
        11, 0, 28,
        14, 0, 30,
        17, 0, 31,
        11, 0, 28,
        14, 0, 30,
        17, 0, 31,
@@ -13291,27 +15811,27 @@ static int parser_action_row1298[] = {
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
-       79, 0, 54,
-       80, 0, 55,
-       81, 0, 56,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 55,
+       82, 0, 56,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row1299[] = {
+static int parser_action_row1611[] = {
        1,
        1,
-       -1, 1, 667
+       -1, 1, 997
 };
 };
-static int parser_action_row1300[] = {
+static int parser_action_row1612[] = {
        2,
        2,
-       -1, 3, 1299,
+       -1, 3, 1611,
        49, 0, 191
 };
        49, 0, 191
 };
-static int parser_action_row1301[] = {
+static int parser_action_row1613[] = {
        23,
        23,
-       -1, 3, 1300,
+       -1, 3, 1612,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -13326,235 +15846,270 @@ static int parser_action_row1301[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 355,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 374,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
+};
+static int parser_action_row1614[] = {
+       1,
+       -1, 1, 778
+};
+static int parser_action_row1615[] = {
+       1,
+       -1, 1, 411
 };
 };
-static int parser_action_row1302[] = {
+static int parser_action_row1616[] = {
        2,
        2,
-       -1, 3, 1301,
-       24, 0, 1418
+       -1, 3, 1615,
+       24, 0, 1772
 };
 };
-static int parser_action_row1303[] = {
+static int parser_action_row1617[] = {
+       2,
+       -1, 1, 893,
+       79, 0, 545
+};
+static int parser_action_row1618[] = {
        1,
        1,
-       -1, 1, 570
+       -1, 1, 894
 };
 };
-static int parser_action_row1304[] = {
+static int parser_action_row1619[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1305[] = {
+static int parser_action_row1620[] = {
        1,
        1,
-       -1, 1, 605
+       -1, 1, 738
 };
 };
-static int parser_action_row1306[] = {
+static int parser_action_row1621[] = {
        2,
        2,
-       -1, 3, 1305,
-       63, 0, 1303
+       -1, 3, 1620,
+       63, 0, 1618
 };
 };
-static int parser_action_row1307[] = {
+static int parser_action_row1622[] = {
        5,
        5,
-       -1, 3, 1306,
-       11, 0, 1326,
-       46, 0, 1327,
-       80, 0, 1328,
-       81, 0, 1420
+       -1, 3, 1621,
+       11, 0, 1646,
+       46, 0, 1647,
+       81, 0, 1648,
+       82, 0, 1775
 };
 };
-static int parser_action_row1308[] = {
+static int parser_action_row1623[] = {
        1,
        1,
-       -1, 1, 578
+       -1, 1, 768
 };
 };
-static int parser_action_row1309[] = {
+static int parser_action_row1624[] = {
+       1,
+       -1, 1, 569
+};
+static int parser_action_row1625[] = {
+       1,
+       -1, 1, 567
+};
+static int parser_action_row1626[] = {
+       1,
+       -1, 1, 711
+};
+static int parser_action_row1627[] = {
        21,
        21,
-       -1, 3, 1308,
-       11, 0, 863,
-       32, 0, 865,
-       38, 0, 866,
-       40, 0, 867,
-       41, 0, 868,
-       42, 0, 869,
-       43, 0, 870,
-       44, 0, 871,
-       45, 0, 872,
-       48, 0, 873,
-       51, 0, 874,
-       65, 0, 875,
-       79, 0, 54,
-       80, 0, 876,
-       81, 0, 877,
-       82, 0, 878,
-       83, 0, 879,
-       84, 0, 880,
-       85, 0, 881,
-       86, 0, 61
+       -1, 3, 1626,
+       11, 0, 1010,
+       32, 0, 1012,
+       38, 0, 1013,
+       40, 0, 1014,
+       41, 0, 1015,
+       42, 0, 1016,
+       43, 0, 1017,
+       44, 0, 1018,
+       45, 0, 1019,
+       48, 0, 1020,
+       51, 0, 1021,
+       65, 0, 1022,
+       80, 0, 54,
+       81, 0, 1023,
+       82, 0, 1024,
+       83, 0, 1025,
+       84, 0, 1026,
+       85, 0, 1027,
+       86, 0, 1028,
+       87, 0, 61
 };
 };
-static int parser_action_row1310[] = {
+static int parser_action_row1628[] = {
        1,
        1,
-       -1, 1, 577
+       -1, 1, 710
 };
 };
-static int parser_action_row1311[] = {
+static int parser_action_row1629[] = {
        3,
        3,
-       -1, 1, 588,
-       64, 0, 1046,
-       65, 0, 1047
+       -1, 1, 721,
+       64, 0, 1260,
+       65, 0, 1261
 };
 };
-static int parser_action_row1312[] = {
+static int parser_action_row1630[] = {
        3,
        3,
-       -1, 1, 591,
-       64, 0, 1046,
-       65, 0, 1047
+       -1, 1, 724,
+       64, 0, 1260,
+       65, 0, 1261
 };
 };
-static int parser_action_row1313[] = {
+static int parser_action_row1631[] = {
        3,
        3,
-       -1, 1, 584,
-       64, 0, 1046,
-       65, 0, 1047
+       -1, 1, 717,
+       64, 0, 1260,
+       65, 0, 1261
 };
 };
-static int parser_action_row1314[] = {
+static int parser_action_row1632[] = {
+       2,
+       -1, 3, 1631,
+       80, 0, 1777
+};
+static int parser_action_row1633[] = {
+       2,
+       -1, 1, 700,
+       79, 0, 205
+};
+static int parser_action_row1634[] = {
        1,
        1,
-       -1, 1, 593
+       -1, 1, 726
 };
 };
-static int parser_action_row1315[] = {
+static int parser_action_row1635[] = {
        4,
        4,
-       -1, 1, 595,
-       66, 0, 1055,
-       67, 0, 1056,
-       68, 0, 1057
+       -1, 1, 728,
+       66, 0, 1269,
+       67, 0, 1270,
+       68, 0, 1271
 };
 };
-static int parser_action_row1316[] = {
+static int parser_action_row1636[] = {
        4,
        4,
-       -1, 1, 596,
-       66, 0, 1055,
-       67, 0, 1056,
-       68, 0, 1057
+       -1, 1, 729,
+       66, 0, 1269,
+       67, 0, 1270,
+       68, 0, 1271
 };
 };
-static int parser_action_row1317[] = {
+static int parser_action_row1637[] = {
        3,
        3,
-       -1, 1, 583,
-       64, 0, 1046,
-       65, 0, 1047
+       -1, 1, 716,
+       64, 0, 1260,
+       65, 0, 1261
 };
 };
-static int parser_action_row1318[] = {
+static int parser_action_row1638[] = {
        3,
        3,
-       -1, 1, 585,
-       64, 0, 1046,
-       65, 0, 1047
+       -1, 1, 718,
+       64, 0, 1260,
+       65, 0, 1261
 };
 };
-static int parser_action_row1319[] = {
+static int parser_action_row1639[] = {
        3,
        3,
-       -1, 1, 586,
-       64, 0, 1046,
-       65, 0, 1047
+       -1, 1, 719,
+       64, 0, 1260,
+       65, 0, 1261
 };
 };
-static int parser_action_row1320[] = {
+static int parser_action_row1640[] = {
        3,
        3,
-       -1, 1, 587,
-       64, 0, 1046,
-       65, 0, 1047
+       -1, 1, 720,
+       64, 0, 1260,
+       65, 0, 1261
 };
 };
-static int parser_action_row1321[] = {
+static int parser_action_row1641[] = {
        3,
        3,
-       -1, 1, 589,
-       64, 0, 1046,
-       65, 0, 1047
+       -1, 1, 722,
+       64, 0, 1260,
+       65, 0, 1261
 };
 };
-static int parser_action_row1322[] = {
+static int parser_action_row1642[] = {
        3,
        3,
-       -1, 1, 590,
-       64, 0, 1046,
-       65, 0, 1047
+       -1, 1, 723,
+       64, 0, 1260,
+       65, 0, 1261
 };
 };
-static int parser_action_row1323[] = {
+static int parser_action_row1643[] = {
        3,
        3,
-       -1, 1, 592,
-       64, 0, 1046,
-       65, 0, 1047
+       -1, 1, 725,
+       64, 0, 1260,
+       65, 0, 1261
 };
 };
-static int parser_action_row1324[] = {
+static int parser_action_row1644[] = {
        1,
        1,
-       -1, 1, 598
+       -1, 1, 731
 };
 };
-static int parser_action_row1325[] = {
+static int parser_action_row1645[] = {
        1,
        1,
-       -1, 1, 599
+       -1, 1, 732
 };
 };
-static int parser_action_row1326[] = {
+static int parser_action_row1646[] = {
        1,
        1,
-       -1, 1, 600
+       -1, 1, 733
 };
 };
-static int parser_action_row1327[] = {
+static int parser_action_row1647[] = {
        2,
        2,
-       -1, 1, 506,
-       51, 0, 272
+       -1, 1, 631,
+       51, 0, 282
 };
 };
-static int parser_action_row1328[] = {
+static int parser_action_row1648[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1329[] = {
+static int parser_action_row1649[] = {
        2,
        2,
-       -1, 1, 506,
-       51, 0, 272
+       -1, 1, 631,
+       51, 0, 282
 };
 };
-static int parser_action_row1330[] = {
+static int parser_action_row1650[] = {
        1,
        1,
-       -1, 1, 608
+       -1, 1, 741
 };
 };
-static int parser_action_row1331[] = {
+static int parser_action_row1651[] = {
        1,
        1,
-       -1, 1, 388
+       -1, 1, 468
 };
 };
-static int parser_action_row1332[] = {
+static int parser_action_row1652[] = {
        1,
        1,
-       -1, 1, 379
+       -1, 1, 459
 };
 };
-static int parser_action_row1333[] = {
+static int parser_action_row1653[] = {
        1,
        1,
-       -1, 1, 385
+       -1, 1, 465
 };
 };
-static int parser_action_row1334[] = {
+static int parser_action_row1654[] = {
        2,
        2,
-       -1, 1, 283,
-       58, 1, 566
+       -1, 1, 356,
+       58, 1, 697
 };
 };
-static int parser_action_row1335[] = {
+static int parser_action_row1655[] = {
        1,
        1,
-       -1, 1, 314
+       -1, 1, 390
 };
 };
-static int parser_action_row1336[] = {
+static int parser_action_row1656[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1337[] = {
+static int parser_action_row1657[] = {
        1,
        1,
-       -1, 1, 322
+       -1, 1, 398
 };
 };
-static int parser_action_row1338[] = {
+static int parser_action_row1658[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1339[] = {
+static int parser_action_row1659[] = {
        3,
        3,
-       -1, 3, 1338,
+       -1, 3, 1658,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1340[] = {
+static int parser_action_row1660[] = {
        23,
        23,
-       -1, 3, 1339,
+       -1, 3, 1659,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -13569,75 +16124,100 @@ static int parser_action_row1340[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 178,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 178,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row1341[] = {
+static int parser_action_row1661[] = {
        1,
        1,
-       -1, 1, 294
+       -1, 1, 367
 };
 };
-static int parser_action_row1342[] = {
+static int parser_action_row1662[] = {
        2,
        2,
-       -1, 1, 293,
-       56, 0, 312
+       -1, 1, 366,
+       56, 0, 330
 };
 };
-static int parser_action_row1343[] = {
+static int parser_action_row1663[] = {
        1,
        1,
-       -1, 1, 307
+       -1, 1, 383
 };
 };
-static int parser_action_row1344[] = {
+static int parser_action_row1664[] = {
        3,
        3,
-       -1, 3, 1343,
+       -1, 3, 1663,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1345[] = {
+static int parser_action_row1665[] = {
        1,
        1,
-       -1, 1, 111
+       -1, 1, 145
 };
 };
-static int parser_action_row1346[] = {
+static int parser_action_row1666[] = {
        1,
        1,
-       -1, 1, 110
+       -1, 1, 144
 };
 };
-static int parser_action_row1347[] = {
+static int parser_action_row1667[] = {
        1,
        1,
-       -1, 1, 101
+       -1, 1, 131
 };
 };
-static int parser_action_row1348[] = {
+static int parser_action_row1668[] = {
+       1,
+       -1, 1, 103
+};
+static int parser_action_row1669[] = {
+       8,
+       -1, 1, 331,
+       8, 0, 1788,
+       12, 0, 892,
+       15, 0, 893,
+       16, 0, 894,
+       20, 0, 32,
+       21, 0, 33,
+       22, 0, 34
+};
+static int parser_action_row1670[] = {
+       1,
+       -1, 1, 119
+};
+static int parser_action_row1671[] = {
+       1,
+       -1, 1, 127
+};
+static int parser_action_row1672[] = {
        6,
        6,
-       -1, 3, 1347,
-       3, 0, 639,
-       13, 0, 1431,
-       14, 0, 1432,
+       -1, 3, 1671,
+       3, 0, 722,
+       13, 0, 1789,
+       14, 0, 1790,
        29, 0, 39,
        29, 0, 39,
-       91, 0, 62
+       92, 0, 62
 };
 };
-static int parser_action_row1349[] = {
+static int parser_action_row1673[] = {
        2,
        2,
-       -1, 3, 1348,
-       58, 0, 1435
-};
-static int parser_action_row1350[] = {
-       1,
-       -1, 1, 203
+       -1, 3, 1672,
+       58, 0, 1795
 };
 };
-static int parser_action_row1351[] = {
+static int parser_action_row1674[] = {
        2,
        2,
-       -1, 3, 1350,
-       14, 0, 1436
+       -1, 1, 270,
+       13, 0, 456
 };
 };
-static int parser_action_row1352[] = {
+static int parser_action_row1675[] = {
+       3,
+       -1, 3, 1674,
+       13, 0, 1533,
+       14, 0, 1797
+};
+static int parser_action_row1676[] = {
        33,
        33,
-       -1, 3, 1351,
+       -1, 3, 1675,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       8, 0, 507,
+       8, 0, 540,
        11, 0, 28,
        14, 0, 30,
        17, 0, 31,
        11, 0, 28,
        14, 0, 30,
        17, 0, 31,
@@ -13659,136 +16239,153 @@ static int parser_action_row1352[] = {
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
-       79, 0, 54,
-       80, 0, 55,
-       81, 0, 56,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 55,
+       82, 0, 56,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row1353[] = {
+static int parser_action_row1677[] = {
+       2,
+       -1, 3, 1676,
+       14, 0, 1800
+};
+static int parser_action_row1678[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1354[] = {
-       2,
-       -1, 1, 183,
-       58, 0, 1439
+static int parser_action_row1679[] = {
+       1,
+       -1, 1, 230
 };
 };
-static int parser_action_row1355[] = {
-       7,
-       -1, 1, 181,
-       12, 0, 1255,
-       16, 1, 258,
+static int parser_action_row1680[] = {
+       3,
+       -1, 1, 226,
+       13, 0, 456,
+       58, 0, 1802
+};
+static int parser_action_row1681[] = {
+       8,
+       -1, 1, 224,
+       12, 0, 1537,
+       13, 0, 456,
+       16, 1, 331,
        20, 0, 32,
        21, 0, 33,
        22, 0, 34,
        20, 0, 32,
        21, 0, 33,
        22, 0, 34,
-       58, 0, 1440
+       58, 0, 1804
 };
 };
-static int parser_action_row1356[] = {
+static int parser_action_row1682[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1357[] = {
+static int parser_action_row1683[] = {
        2,
        2,
-       -1, 1, 155,
-       58, 0, 1443
+       -1, 1, 198,
+       58, 0, 1808
 };
 };
-static int parser_action_row1358[] = {
+static int parser_action_row1684[] = {
        6,
        6,
-       -1, 3, 1357,
-       3, 0, 639,
-       13, 0, 1444,
+       -1, 3, 1683,
+       3, 0, 722,
+       13, 0, 1809,
        29, 0, 39,
        29, 0, 39,
-       85, 0, 1445,
-       91, 0, 62
+       86, 0, 1810,
+       92, 0, 62
 };
 };
-static int parser_action_row1359[] = {
+static int parser_action_row1685[] = {
        2,
        2,
-       -1, 3, 1358,
-       19, 0, 1448
+       -1, 3, 1684,
+       19, 0, 1813
 };
 };
-static int parser_action_row1360[] = {
+static int parser_action_row1686[] = {
        4,
        4,
-       -1, 3, 1359,
-       3, 0, 639,
+       -1, 3, 1685,
+       3, 0, 722,
        29, 0, 39,
        29, 0, 39,
-       91, 0, 62
+       92, 0, 62
 };
 };
-static int parser_action_row1361[] = {
+static int parser_action_row1687[] = {
        3,
        3,
-       -1, 3, 1360,
+       -1, 3, 1686,
        29, 0, 39,
        29, 0, 39,
-       91, 0, 62
+       92, 0, 62
 };
 };
-static int parser_action_row1362[] = {
+static int parser_action_row1688[] = {
        1,
        1,
-       -1, 1, 237
+       -1, 1, 306
 };
 };
-static int parser_action_row1363[] = {
+static int parser_action_row1689[] = {
        3,
        3,
-       -1, 1, 149,
-       56, 0, 312,
-       58, 0, 1452
+       -1, 1, 192,
+       56, 0, 330,
+       58, 0, 1817
 };
 };
-static int parser_action_row1364[] = {
+static int parser_action_row1690[] = {
        2,
        2,
-       -1, 3, 1363,
-       81, 0, 1454
+       -1, 3, 1689,
+       82, 0, 1819
 };
 };
-static int parser_action_row1365[] = {
+static int parser_action_row1691[] = {
        3,
        3,
-       -1, 1, 152,
-       56, 0, 312,
-       58, 0, 1455
+       -1, 1, 195,
+       56, 0, 330,
+       58, 0, 1820
 };
 };
-static int parser_action_row1366[] = {
+static int parser_action_row1692[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1367[] = {
+static int parser_action_row1693[] = {
        2,
        2,
-       -1, 1, 156,
-       58, 0, 1458
+       -1, 1, 199,
+       58, 0, 1823
 };
 };
-static int parser_action_row1368[] = {
+static int parser_action_row1694[] = {
        3,
        3,
-       -1, 1, 151,
-       56, 0, 312,
-       58, 0, 1459
+       -1, 1, 194,
+       56, 0, 330,
+       58, 0, 1824
 };
 };
-static int parser_action_row1369[] = {
+static int parser_action_row1695[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1370[] = {
+static int parser_action_row1696[] = {
        2,
        2,
-       -1, 1, 158,
-       58, 0, 1462
-};
-static int parser_action_row1371[] = {
-       4,
-       -1, 3, 1370,
-       5, 0, 1463,
-       18, 0, 1464,
-       19, 0, 1465
+       -1, 1, 201,
+       58, 0, 1827
 };
 };
-static int parser_action_row1372[] = {
+static int parser_action_row1697[] = {
+       10,
+       -1, 3, 1696,
+       0, 0, 87,
+       1, 0, 88,
+       3, 0, 383,
+       5, 0, 1828,
+       15, 0, 384,
+       16, 0, 385,
+       18, 0, 1829,
+       19, 0, 1830,
+       81, 0, 387
+};
+static int parser_action_row1698[] = {
        33,
        33,
-       -1, 3, 1371,
+       -1, 3, 1697,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       8, 0, 507,
+       8, 0, 540,
        11, 0, 28,
        14, 0, 30,
        17, 0, 31,
        11, 0, 28,
        14, 0, 30,
        17, 0, 31,
@@ -13810,49 +16407,62 @@ static int parser_action_row1372[] = {
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
-       79, 0, 54,
-       80, 0, 55,
-       81, 0, 56,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 55,
+       82, 0, 56,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row1373[] = {
+static int parser_action_row1699[] = {
+       1,
+       -1, 1, 163
+};
+static int parser_action_row1700[] = {
+       2,
+       -1, 3, 1699,
+       14, 0, 1832
+};
+static int parser_action_row1701[] = {
        3,
        3,
-       -1, 3, 1372,
+       -1, 3, 1700,
        29, 0, 39,
        29, 0, 39,
-       91, 0, 62
+       92, 0, 62
 };
 };
-static int parser_action_row1374[] = {
+static int parser_action_row1702[] = {
        1,
        1,
-       -1, 1, 142
+       -1, 1, 185
 };
 };
-static int parser_action_row1375[] = {
+static int parser_action_row1703[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1376[] = {
+static int parser_action_row1704[] = {
+       1,
+       -1, 1, 271
+};
+static int parser_action_row1705[] = {
        4,
        4,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       56, 0, 312
+       56, 0, 330
 };
 };
-static int parser_action_row1377[] = {
+static int parser_action_row1706[] = {
        2,
        2,
-       -1, 3, 1376,
-       52, 0, 1470
+       -1, 3, 1705,
+       52, 0, 1836
 };
 };
-static int parser_action_row1378[] = {
+static int parser_action_row1707[] = {
        33,
        33,
-       -1, 3, 1377,
+       -1, 3, 1706,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       8, 0, 507,
+       8, 0, 540,
        11, 0, 28,
        14, 0, 30,
        17, 0, 31,
        11, 0, 28,
        14, 0, 30,
        17, 0, 31,
@@ -13874,35 +16484,86 @@ static int parser_action_row1378[] = {
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
-       79, 0, 54,
-       80, 0, 55,
-       81, 0, 56,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 55,
+       82, 0, 56,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row1379[] = {
+static int parser_action_row1708[] = {
        2,
        2,
-       -1, 1, 194,
-       8, 0, 1472
+       -1, 3, 1707,
+       14, 0, 1838
 };
 };
-static int parser_action_row1380[] = {
+static int parser_action_row1709[] = {
        1,
        1,
-       -1, 1, 289
+       -1, 1, 323
+};
+static int parser_action_row1710[] = {
+       3,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row1711[] = {
+       2,
+       -1, 1, 253,
+       8, 0, 1840
+};
+static int parser_action_row1712[] = {
+       33,
+       -1, 3, 1711,
+       0, 0, 1,
+       1, 0, 2,
+       8, 0, 540,
+       11, 0, 28,
+       14, 0, 30,
+       17, 0, 31,
+       23, 0, 35,
+       26, 0, 36,
+       27, 0, 37,
+       28, 0, 38,
+       33, 0, 40,
+       34, 0, 41,
+       35, 0, 42,
+       36, 0, 43,
+       37, 0, 44,
+       38, 0, 45,
+       41, 0, 46,
+       42, 0, 47,
+       43, 0, 48,
+       44, 0, 49,
+       45, 0, 50,
+       50, 0, 51,
+       51, 0, 52,
+       53, 0, 53,
+       80, 0, 54,
+       81, 0, 55,
+       82, 0, 56,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
+};
+static int parser_action_row1713[] = {
+       1,
+       -1, 1, 362
 };
 };
-static int parser_action_row1381[] = {
+static int parser_action_row1714[] = {
        2,
        2,
-       -1, 3, 1380,
-       16, 0, 1473
+       -1, 3, 1713,
+       16, 0, 1842
 };
 };
-static int parser_action_row1382[] = {
+static int parser_action_row1715[] = {
        23,
        23,
-       -1, 3, 1381,
+       -1, 3, 1714,
        11, 0, 170,
        11, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
+       23, 0, 1843,
+       32, 0, 1844,
        38, 0, 173,
        40, 0, 174,
        41, 0, 175,
        38, 0, 173,
        40, 0, 174,
        41, 0, 175,
@@ -13914,39 +16575,48 @@ static int parser_action_row1382[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 206,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row1383[] = {
+static int parser_action_row1716[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1384[] = {
+static int parser_action_row1717[] = {
        1,
        1,
-       -1, 1, 256
+       -1, 1, 233
 };
 };
-static int parser_action_row1385[] = {
+static int parser_action_row1718[] = {
+       1,
+       -1, 1, 329
+};
+static int parser_action_row1719[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1386[] = {
-       2,
-       -1, 1, 184,
-       58, 0, 1477
+static int parser_action_row1720[] = {
+       1,
+       -1, 1, 231
 };
 };
-static int parser_action_row1387[] = {
+static int parser_action_row1721[] = {
+       3,
+       -1, 1, 227,
+       13, 0, 456,
+       58, 0, 1852
+};
+static int parser_action_row1722[] = {
        23,
        23,
-       -1, 3, 1386,
+       -1, 3, 1721,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -13961,78 +16631,156 @@ static int parser_action_row1387[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 206,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row1388[] = {
+static int parser_action_row1723[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1389[] = {
+static int parser_action_row1724[] = {
        2,
        2,
-       -1, 3, 1388,
-       19, 0, 1480
+       -1, 3, 1723,
+       19, 0, 1856
 };
 };
-static int parser_action_row1390[] = {
+static int parser_action_row1725[] = {
        4,
        4,
-       -1, 3, 1389,
-       3, 0, 639,
+       -1, 3, 1724,
+       3, 0, 722,
        29, 0, 39,
        29, 0, 39,
-       91, 0, 62
+       92, 0, 62
 };
 };
-static int parser_action_row1391[] = {
+static int parser_action_row1726[] = {
        3,
        3,
-       -1, 3, 1390,
+       -1, 3, 1725,
        29, 0, 39,
        29, 0, 39,
-       91, 0, 62
+       92, 0, 62
 };
 };
-static int parser_action_row1392[] = {
+static int parser_action_row1727[] = {
        1,
        1,
-       -1, 1, 238
+       -1, 1, 307
 };
 };
-static int parser_action_row1393[] = {
+static int parser_action_row1728[] = {
        5,
        5,
-       -1, 1, 204,
-       3, 0, 639,
+       -1, 1, 273,
+       3, 0, 722,
        29, 0, 39,
        29, 0, 39,
-       85, 0, 1484,
-       91, 0, 62
+       86, 0, 1860,
+       92, 0, 62
 };
 };
-static int parser_action_row1394[] = {
+static int parser_action_row1729[] = {
        3,
        3,
-       -1, 3, 1393,
+       -1, 3, 1728,
        29, 0, 39,
        29, 0, 39,
-       91, 0, 62
+       92, 0, 62
 };
 };
-static int parser_action_row1395[] = {
+static int parser_action_row1730[] = {
+       1,
+       -1, 1, 309
+};
+static int parser_action_row1731[] = {
        1,
        1,
-       -1, 1, 240
+       -1, 1, 313
 };
 };
-static int parser_action_row1396[] = {
+static int parser_action_row1732[] = {
+       23,
+       -1, 3, 1731,
+       11, 0, 170,
+       23, 0, 171,
+       32, 0, 172,
+       38, 0, 173,
+       40, 0, 174,
+       41, 0, 175,
+       42, 0, 47,
+       43, 0, 48,
+       44, 0, 49,
+       45, 0, 50,
+       48, 0, 176,
+       51, 0, 52,
+       53, 0, 53,
+       65, 0, 177,
+       80, 0, 54,
+       81, 0, 178,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
+};
+static int parser_action_row1733[] = {
+       3,
+       -1, 3, 1732,
+       0, 0, 87,
+       1, 0, 88
+};
+static int parser_action_row1734[] = {
        1,
        1,
-       -1, 1, 244
+       -1, 1, 1245
 };
 };
-static int parser_action_row1397[] = {
+static int parser_action_row1735[] = {
+       1,
+       -1, 1, 810
+};
+static int parser_action_row1736[] = {
+       1,
+       -1, 1, 815
+};
+static int parser_action_row1737[] = {
+       2,
+       -1, 1, 631,
+       51, 0, 282
+};
+static int parser_action_row1738[] = {
+       4,
+       -1, 1, 854,
+       58, 0, 1867,
+       59, 0, 220,
+       60, 0, 221
+};
+static int parser_action_row1739[] = {
+       1,
+       -1, 1, 811
+};
+static int parser_action_row1740[] = {
+       1,
+       -1, 1, 816
+};
+static int parser_action_row1741[] = {
+       1,
+       -1, 1, 133
+};
+static int parser_action_row1742[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1398[] = {
+static int parser_action_row1743[] = {
        1,
        1,
-       -1, 1, 495
+       -1, 1, 591
 };
 };
-static int parser_action_row1399[] = {
+static int parser_action_row1744[] = {
+       3,
+       -1, 3, 1743,
+       0, 0, 87,
+       1, 0, 88
+};
+static int parser_action_row1745[] = {
+       1,
+       -1, 1, 614
+};
+static int parser_action_row1746[] = {
        21,
        21,
-       -1, 3, 1398,
+       -1, 3, 1745,
        11, 0, 122,
        23, 0, 123,
        32, 0, 124,
        11, 0, 122,
        23, 0, 123,
        32, 0, 124,
@@ -14045,55 +16793,112 @@ static int parser_action_row1399[] = {
        45, 0, 131,
        48, 0, 132,
        65, 0, 134,
        45, 0, 131,
        48, 0, 132,
        65, 0, 134,
-       79, 0, 54,
-       80, 0, 135,
-       81, 0, 136,
-       82, 0, 137,
-       83, 0, 138,
-       84, 0, 139,
-       85, 0, 140,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 135,
+       82, 0, 136,
+       83, 0, 137,
+       84, 0, 138,
+       85, 0, 139,
+       86, 0, 140,
+       87, 0, 61
 };
 };
-static int parser_action_row1400[] = {
+static int parser_action_row1747[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1401[] = {
+static int parser_action_row1748[] = {
        1,
        1,
-       -1, 1, 769
+       -1, 1, 881
 };
 };
-static int parser_action_row1402[] = {
+static int parser_action_row1749[] = {
        1,
        1,
-       -1, 1, 102
+       -1, 1, 132
 };
 };
-static int parser_action_row1403[] = {
+static int parser_action_row1750[] = {
        1,
        1,
-       -1, 1, 676
+       -1, 1, 104
 };
 };
-static int parser_action_row1404[] = {
+static int parser_action_row1751[] = {
+       8,
+       -1, 1, 331,
+       8, 0, 1873,
+       12, 0, 892,
+       15, 0, 893,
+       16, 0, 894,
+       20, 0, 32,
+       21, 0, 33,
+       22, 0, 34
+};
+static int parser_action_row1752[] = {
+       1,
+       -1, 1, 120
+};
+static int parser_action_row1753[] = {
+       1,
+       -1, 1, 128
+};
+static int parser_action_row1754[] = {
+       1,
+       -1, 1, 134
+};
+static int parser_action_row1755[] = {
+       1,
+       -1, 1, 1009
+};
+static int parser_action_row1756[] = {
+       1,
+       -1, 1, 1008
+};
+static int parser_action_row1757[] = {
+       23,
+       -1, 3, 1756,
+       11, 0, 170,
+       23, 0, 171,
+       32, 0, 172,
+       38, 0, 173,
+       40, 0, 174,
+       41, 0, 175,
+       42, 0, 47,
+       43, 0, 48,
+       44, 0, 49,
+       45, 0, 50,
+       48, 0, 176,
+       51, 0, 52,
+       53, 0, 53,
+       65, 0, 177,
+       80, 0, 54,
+       81, 0, 374,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
+};
+static int parser_action_row1758[] = {
        2,
        2,
-       -1, 3, 1403,
-       25, 0, 1491
+       -1, 3, 1757,
+       25, 0, 1875
 };
 };
-static int parser_action_row1405[] = {
+static int parser_action_row1759[] = {
        1,
        1,
-       -1, 1, 693
+       -1, 1, 1027
 };
 };
-static int parser_action_row1406[] = {
+static int parser_action_row1760[] = {
        2,
        2,
-       -1, 3, 1405,
+       -1, 3, 1759,
        49, 0, 191
 };
        49, 0, 191
 };
-static int parser_action_row1407[] = {
+static int parser_action_row1761[] = {
        2,
        2,
-       -1, 3, 1406,
-       29, 0, 1493
+       -1, 3, 1760,
+       29, 0, 1877
 };
 };
-static int parser_action_row1408[] = {
+static int parser_action_row1762[] = {
        23,
        23,
-       -1, 3, 1407,
+       -1, 3, 1761,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -14108,18 +16913,18 @@ static int parser_action_row1408[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 206,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
-};
-static int parser_action_row1409[] = {
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
+};
+static int parser_action_row1763[] = {
        23,
        23,
-       -1, 3, 1408,
+       -1, 3, 1762,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -14134,18 +16939,18 @@ static int parser_action_row1409[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 355,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
-};
-static int parser_action_row1410[] = {
+       80, 0, 54,
+       81, 0, 374,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
+};
+static int parser_action_row1764[] = {
        23,
        23,
-       -1, 3, 1409,
+       -1, 3, 1763,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -14160,30 +16965,30 @@ static int parser_action_row1410[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 355,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 374,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row1411[] = {
+static int parser_action_row1765[] = {
        1,
        1,
-       -1, 1, 654
+       -1, 1, 984
 };
 };
-static int parser_action_row1412[] = {
+static int parser_action_row1766[] = {
        1,
        1,
-       -1, 1, 677
+       -1, 1, 1011
 };
 };
-static int parser_action_row1413[] = {
+static int parser_action_row1767[] = {
        1,
        1,
-       -1, 1, 682
+       -1, 1, 1016
 };
 };
-static int parser_action_row1414[] = {
+static int parser_action_row1768[] = {
        33,
        33,
-       -1, 3, 1413,
+       -1, 3, 1767,
        0, 0, 1,
        1, 0, 2,
        8, 0, 155,
        0, 0, 1,
        1, 0, 2,
        8, 0, 155,
@@ -14208,22 +17013,22 @@ static int parser_action_row1414[] = {
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
-       79, 0, 54,
-       80, 0, 55,
-       81, 0, 56,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 55,
+       82, 0, 56,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row1415[] = {
+static int parser_action_row1769[] = {
        1,
        1,
-       -1, 1, 426
+       -1, 1, 510
 };
 };
-static int parser_action_row1416[] = {
+static int parser_action_row1770[] = {
        23,
        23,
-       -1, 3, 1415,
+       -1, 3, 1769,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -14238,99 +17043,122 @@ static int parser_action_row1416[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 206,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row1417[] = {
+static int parser_action_row1771[] = {
        2,
        2,
-       -1, 1, 379,
-       25, 1, 664
+       -1, 1, 459,
+       25, 1, 994
 };
 };
-static int parser_action_row1418[] = {
+static int parser_action_row1772[] = {
        1,
        1,
-       -1, 1, 670
+       -1, 1, 1000
 };
 };
-static int parser_action_row1419[] = {
+static int parser_action_row1773[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1420[] = {
+static int parser_action_row1774[] = {
+       1,
+       -1, 1, 895
+};
+static int parser_action_row1775[] = {
        2,
        2,
-       -1, 3, 1419,
-       80, 0, 1501
+       -1, 3, 1774,
+       81, 0, 1885
 };
 };
-static int parser_action_row1421[] = {
+static int parser_action_row1776[] = {
        2,
        2,
-       -1, 1, 606,
-       63, 1, 608
+       -1, 1, 739,
+       63, 1, 741
 };
 };
-static int parser_action_row1422[] = {
+static int parser_action_row1777[] = {
        1,
        1,
-       -1, 1, 579
+       -1, 1, 712
 };
 };
-static int parser_action_row1423[] = {
+static int parser_action_row1778[] = {
+       2,
+       -1, 1, 701,
+       79, 0, 205
+};
+static int parser_action_row1779[] = {
        1,
        1,
-       -1, 1, 614
+       -1, 1, 702
 };
 };
-static int parser_action_row1424[] = {
+static int parser_action_row1780[] = {
+       1,
+       -1, 1, 747
+};
+static int parser_action_row1781[] = {
        2,
        2,
-       -1, 3, 1423,
-       51, 0, 1502
+       -1, 3, 1780,
+       51, 0, 1887
 };
 };
-static int parser_action_row1425[] = {
+static int parser_action_row1782[] = {
        1,
        1,
-       -1, 1, 610
+       -1, 1, 743
 };
 };
-static int parser_action_row1426[] = {
+static int parser_action_row1783[] = {
        2,
        2,
-       -1, 3, 1425,
-       47, 0, 1503
+       -1, 3, 1782,
+       47, 0, 1888
 };
 };
-static int parser_action_row1427[] = {
+static int parser_action_row1784[] = {
        3,
        3,
-       -1, 3, 1426,
-       47, 0, 361,
-       79, 0, 362
+       -1, 3, 1783,
+       47, 0, 390,
+       80, 0, 391
 };
 };
-static int parser_action_row1428[] = {
+static int parser_action_row1785[] = {
        1,
        1,
-       -1, 1, 308
+       -1, 1, 384
 };
 };
-static int parser_action_row1429[] = {
+static int parser_action_row1786[] = {
        3,
        3,
-       -1, 3, 1428,
+       -1, 3, 1785,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1430[] = {
+static int parser_action_row1787[] = {
        1,
        1,
-       -1, 1, 295
+       -1, 1, 368
 };
 };
-static int parser_action_row1431[] = {
+static int parser_action_row1788[] = {
        1,
        1,
-       -1, 1, 309
+       -1, 1, 385
 };
 };
-static int parser_action_row1432[] = {
-       4,
-       -1, 3, 1431,
-       5, 0, 1506,
-       18, 0, 1507,
-       19, 0, 1508
+static int parser_action_row1789[] = {
+       1,
+       -1, 1, 135
 };
 };
-static int parser_action_row1433[] = {
+static int parser_action_row1790[] = {
+       10,
+       -1, 3, 1789,
+       0, 0, 87,
+       1, 0, 88,
+       3, 0, 383,
+       5, 0, 1891,
+       15, 0, 384,
+       16, 0, 385,
+       18, 0, 1892,
+       19, 0, 1893,
+       81, 0, 387
+};
+static int parser_action_row1791[] = {
        33,
        33,
-       -1, 3, 1432,
+       -1, 3, 1790,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       8, 0, 507,
+       8, 0, 540,
        11, 0, 28,
        14, 0, 30,
        17, 0, 31,
        11, 0, 28,
        14, 0, 30,
        17, 0, 31,
@@ -14352,37 +17180,50 @@ static int parser_action_row1433[] = {
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
-       79, 0, 54,
-       80, 0, 55,
-       81, 0, 56,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 55,
+       82, 0, 56,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row1434[] = {
+static int parser_action_row1792[] = {
+       1,
+       -1, 1, 164
+};
+static int parser_action_row1793[] = {
+       2,
+       -1, 3, 1792,
+       14, 0, 1895
+};
+static int parser_action_row1794[] = {
        3,
        3,
-       -1, 3, 1433,
+       -1, 3, 1793,
        29, 0, 39,
        29, 0, 39,
-       91, 0, 62
+       92, 0, 62
 };
 };
-static int parser_action_row1435[] = {
+static int parser_action_row1795[] = {
        1,
        1,
-       -1, 1, 143
+       -1, 1, 186
 };
 };
-static int parser_action_row1436[] = {
+static int parser_action_row1796[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1437[] = {
+static int parser_action_row1797[] = {
+       1,
+       -1, 1, 272
+};
+static int parser_action_row1798[] = {
        33,
        33,
-       -1, 3, 1436,
+       -1, 3, 1797,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       8, 0, 507,
+       8, 0, 540,
        11, 0, 28,
        14, 0, 30,
        17, 0, 31,
        11, 0, 28,
        14, 0, 30,
        17, 0, 31,
@@ -14404,26 +17245,67 @@ static int parser_action_row1437[] = {
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
        50, 0, 51,
        51, 0, 52,
        53, 0, 53,
-       79, 0, 54,
-       80, 0, 55,
-       81, 0, 56,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 55,
+       82, 0, 56,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row1438[] = {
+static int parser_action_row1799[] = {
        2,
        2,
-       -1, 1, 195,
-       8, 0, 1513
+       -1, 3, 1798,
+       14, 0, 1899
 };
 };
-static int parser_action_row1439[] = {
+static int parser_action_row1800[] = {
+       2,
+       -1, 1, 254,
+       8, 0, 1900
+};
+static int parser_action_row1801[] = {
+       33,
+       -1, 3, 1800,
+       0, 0, 1,
+       1, 0, 2,
+       8, 0, 540,
+       11, 0, 28,
+       14, 0, 30,
+       17, 0, 31,
+       23, 0, 35,
+       26, 0, 36,
+       27, 0, 37,
+       28, 0, 38,
+       33, 0, 40,
+       34, 0, 41,
+       35, 0, 42,
+       36, 0, 43,
+       37, 0, 44,
+       38, 0, 45,
+       41, 0, 46,
+       42, 0, 47,
+       43, 0, 48,
+       44, 0, 49,
+       45, 0, 50,
+       50, 0, 51,
+       51, 0, 52,
+       53, 0, 53,
+       80, 0, 54,
+       81, 0, 55,
+       82, 0, 56,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
+};
+static int parser_action_row1802[] = {
        23,
        23,
-       -1, 3, 1438,
+       -1, 3, 1801,
        11, 0, 170,
        11, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
+       23, 0, 1843,
+       32, 0, 1844,
        38, 0, 173,
        40, 0, 174,
        41, 0, 175,
        38, 0, 173,
        40, 0, 174,
        41, 0, 175,
@@ -14435,35 +17317,44 @@ static int parser_action_row1439[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 206,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row1440[] = {
+static int parser_action_row1803[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1441[] = {
+static int parser_action_row1804[] = {
+       1,
+       -1, 1, 234
+};
+static int parser_action_row1805[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1442[] = {
-       2,
-       -1, 1, 185,
-       58, 0, 1517
+static int parser_action_row1806[] = {
+       1,
+       -1, 1, 232
 };
 };
-static int parser_action_row1443[] = {
+static int parser_action_row1807[] = {
+       3,
+       -1, 1, 228,
+       13, 0, 456,
+       58, 0, 1905
+};
+static int parser_action_row1808[] = {
        23,
        23,
-       -1, 3, 1442,
+       -1, 3, 1807,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -14478,96 +17369,96 @@ static int parser_action_row1443[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 206,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row1444[] = {
+static int parser_action_row1809[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1445[] = {
+static int parser_action_row1810[] = {
        2,
        2,
-       -1, 3, 1444,
-       19, 0, 1520
+       -1, 3, 1809,
+       19, 0, 1909
 };
 };
-static int parser_action_row1446[] = {
+static int parser_action_row1811[] = {
        4,
        4,
-       -1, 3, 1445,
-       3, 0, 639,
+       -1, 3, 1810,
+       3, 0, 722,
        29, 0, 39,
        29, 0, 39,
-       91, 0, 62
+       92, 0, 62
 };
 };
-static int parser_action_row1447[] = {
+static int parser_action_row1812[] = {
        3,
        3,
-       -1, 3, 1446,
+       -1, 3, 1811,
        29, 0, 39,
        29, 0, 39,
-       91, 0, 62
+       92, 0, 62
 };
 };
-static int parser_action_row1448[] = {
+static int parser_action_row1813[] = {
        1,
        1,
-       -1, 1, 239
+       -1, 1, 308
 };
 };
-static int parser_action_row1449[] = {
+static int parser_action_row1814[] = {
        5,
        5,
-       -1, 1, 205,
-       3, 0, 639,
+       -1, 1, 274,
+       3, 0, 722,
        29, 0, 39,
        29, 0, 39,
-       85, 0, 1524,
-       91, 0, 62
+       86, 0, 1913,
+       92, 0, 62
 };
 };
-static int parser_action_row1450[] = {
+static int parser_action_row1815[] = {
        3,
        3,
-       -1, 3, 1449,
+       -1, 3, 1814,
        29, 0, 39,
        29, 0, 39,
-       91, 0, 62
+       92, 0, 62
 };
 };
-static int parser_action_row1451[] = {
+static int parser_action_row1816[] = {
        1,
        1,
-       -1, 1, 241
+       -1, 1, 310
 };
 };
-static int parser_action_row1452[] = {
+static int parser_action_row1817[] = {
        1,
        1,
-       -1, 1, 245
+       -1, 1, 314
 };
 };
-static int parser_action_row1453[] = {
+static int parser_action_row1818[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1454[] = {
+static int parser_action_row1819[] = {
        2,
        2,
-       -1, 1, 157,
-       58, 0, 1529
+       -1, 1, 200,
+       58, 0, 1918
 };
 };
-static int parser_action_row1455[] = {
+static int parser_action_row1820[] = {
        3,
        3,
-       -1, 1, 153,
-       56, 0, 312,
-       58, 0, 1530
+       -1, 1, 196,
+       56, 0, 330,
+       58, 0, 1919
 };
 };
-static int parser_action_row1456[] = {
+static int parser_action_row1821[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1457[] = {
+static int parser_action_row1822[] = {
        2,
        2,
-       -1, 1, 160,
-       58, 0, 1533
+       -1, 1, 203,
+       58, 0, 1922
 };
 };
-static int parser_action_row1458[] = {
+static int parser_action_row1823[] = {
        23,
        23,
-       -1, 3, 1457,
+       -1, 3, 1822,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -14582,35 +17473,35 @@ static int parser_action_row1458[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 206,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row1459[] = {
+static int parser_action_row1824[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1460[] = {
+static int parser_action_row1825[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1461[] = {
+static int parser_action_row1826[] = {
        2,
        2,
-       -1, 1, 159,
-       58, 0, 1537
+       -1, 1, 202,
+       58, 0, 1926
 };
 };
-static int parser_action_row1462[] = {
+static int parser_action_row1827[] = {
        23,
        23,
-       -1, 3, 1461,
+       -1, 3, 1826,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -14625,49 +17516,85 @@ static int parser_action_row1462[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 206,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row1463[] = {
+static int parser_action_row1828[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1464[] = {
+static int parser_action_row1829[] = {
        1,
        1,
-       -1, 1, 122
+       -1, 1, 165
 };
 };
-static int parser_action_row1465[] = {
+static int parser_action_row1830[] = {
        1,
        1,
-       -1, 1, 124
+       -1, 1, 167
 };
 };
-static int parser_action_row1466[] = {
+static int parser_action_row1831[] = {
        5,
        5,
-       -1, 1, 126,
-       3, 0, 639,
+       -1, 1, 169,
+       3, 0, 722,
        29, 0, 39,
        29, 0, 39,
-       85, 0, 1540,
-       91, 0, 62
+       86, 0, 1929,
+       92, 0, 62
 };
 };
-static int parser_action_row1467[] = {
+static int parser_action_row1832[] = {
        2,
        2,
-       -1, 1, 116,
-       8, 0, 1543
+       -1, 1, 153,
+       8, 0, 1932
 };
 };
-static int parser_action_row1468[] = {
+static int parser_action_row1833[] = {
+       33,
+       -1, 3, 1832,
+       0, 0, 1,
+       1, 0, 2,
+       8, 0, 540,
+       11, 0, 28,
+       14, 0, 30,
+       17, 0, 31,
+       23, 0, 35,
+       26, 0, 36,
+       27, 0, 37,
+       28, 0, 38,
+       33, 0, 40,
+       34, 0, 41,
+       35, 0, 42,
+       36, 0, 43,
+       37, 0, 44,
+       38, 0, 45,
+       41, 0, 46,
+       42, 0, 47,
+       43, 0, 48,
+       44, 0, 49,
+       45, 0, 50,
+       50, 0, 51,
+       51, 0, 52,
+       53, 0, 53,
+       80, 0, 54,
+       81, 0, 55,
+       82, 0, 56,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
+};
+static int parser_action_row1834[] = {
        1,
        1,
-       -1, 1, 144
+       -1, 1, 187
 };
 };
-static int parser_action_row1469[] = {
+static int parser_action_row1835[] = {
        23,
        23,
-       -1, 3, 1468,
+       -1, 3, 1834,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -14682,51 +17609,139 @@ static int parser_action_row1469[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 178,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 178,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row1470[] = {
+static int parser_action_row1836[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1471[] = {
+static int parser_action_row1837[] = {
        4,
        4,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       56, 0, 312
+       56, 0, 330
 };
 };
-static int parser_action_row1472[] = {
+static int parser_action_row1838[] = {
        2,
        2,
-       -1, 1, 196,
-       8, 0, 1547
+       -1, 1, 255,
+       8, 0, 1937
 };
 };
-static int parser_action_row1473[] = {
+static int parser_action_row1839[] = {
+       33,
+       -1, 3, 1838,
+       0, 0, 1,
+       1, 0, 2,
+       8, 0, 540,
+       11, 0, 28,
+       14, 0, 30,
+       17, 0, 31,
+       23, 0, 35,
+       26, 0, 36,
+       27, 0, 37,
+       28, 0, 38,
+       33, 0, 40,
+       34, 0, 41,
+       35, 0, 42,
+       36, 0, 43,
+       37, 0, 44,
+       38, 0, 45,
+       41, 0, 46,
+       42, 0, 47,
+       43, 0, 48,
+       44, 0, 49,
+       45, 0, 50,
+       50, 0, 51,
+       51, 0, 52,
+       53, 0, 53,
+       80, 0, 54,
+       81, 0, 55,
+       82, 0, 56,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
+};
+static int parser_action_row1840[] = {
        1,
        1,
-       -1, 1, 198
+       -1, 1, 324
 };
 };
-static int parser_action_row1474[] = {
+static int parser_action_row1841[] = {
        1,
        1,
-       -1, 1, 257
+       -1, 1, 261
 };
 };
-static int parser_action_row1475[] = {
+static int parser_action_row1842[] = {
+       2,
+       -1, 1, 257,
+       8, 0, 1939
+};
+static int parser_action_row1843[] = {
        1,
        1,
-       -1, 1, 186
+       -1, 1, 330
 };
 };
-static int parser_action_row1476[] = {
+static int parser_action_row1844[] = {
+       3,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row1845[] = {
+       3,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row1846[] = {
+       11,
+       -1, 1, 1175,
+       39, 0, 1942,
+       64, 0, 354,
+       65, 0, 355,
+       69, 0, 1943,
+       70, 0, 1944,
+       71, 0, 1945,
+       72, 0, 1946,
+       74, 0, 1947,
+       75, 0, 1948,
+       77, 0, 1949
+};
+static int parser_action_row1847[] = {
+       2,
+       -1, 1, 237,
+       13, 0, 456
+};
+static int parser_action_row1848[] = {
+       3,
+       -1, 1, 1167,
+       30, 0, 1951,
+       31, 0, 1952
+};
+static int parser_action_row1849[] = {
+       1,
+       -1, 1, 1169
+};
+static int parser_action_row1850[] = {
+       3,
+       -1, 1, 1173,
+       73, 0, 1953,
+       76, 0, 1954
+};
+static int parser_action_row1851[] = {
        23,
        23,
-       -1, 3, 1475,
+       -1, 3, 1850,
        11, 0, 170,
        11, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
+       23, 0, 1843,
+       32, 0, 1844,
        38, 0, 173,
        40, 0, 174,
        41, 0, 175,
        38, 0, 173,
        40, 0, 174,
        41, 0, 175,
@@ -14738,21 +17753,21 @@ static int parser_action_row1476[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 206,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
-};
-static int parser_action_row1477[] = {
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
+};
+static int parser_action_row1852[] = {
        23,
        23,
-       -1, 3, 1476,
+       -1, 3, 1851,
        11, 0, 170,
        11, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
+       23, 0, 1843,
+       32, 0, 1844,
        38, 0, 173,
        40, 0, 174,
        41, 0, 175,
        38, 0, 173,
        40, 0, 174,
        41, 0, 175,
@@ -14764,28 +17779,32 @@ static int parser_action_row1477[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 206,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row1478[] = {
+static int parser_action_row1853[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1479[] = {
+static int parser_action_row1854[] = {
        1,
        1,
-       -1, 1, 162
+       -1, 1, 235
 };
 };
-static int parser_action_row1480[] = {
+static int parser_action_row1855[] = {
+       1,
+       -1, 1, 205
+};
+static int parser_action_row1856[] = {
        23,
        23,
-       -1, 3, 1479,
+       -1, 3, 1855,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -14800,149 +17819,228 @@ static int parser_action_row1480[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 206,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
-};
-static int parser_action_row1481[] = {
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
+};
+static int parser_action_row1857[] = {
        5,
        5,
-       -1, 1, 206,
-       3, 0, 639,
+       -1, 1, 275,
+       3, 0, 722,
        29, 0, 39,
        29, 0, 39,
-       85, 0, 1552,
-       91, 0, 62
+       86, 0, 1959,
+       92, 0, 62
 };
 };
-static int parser_action_row1482[] = {
+static int parser_action_row1858[] = {
        3,
        3,
-       -1, 3, 1481,
+       -1, 3, 1857,
        29, 0, 39,
        29, 0, 39,
-       91, 0, 62
+       92, 0, 62
 };
 };
-static int parser_action_row1483[] = {
+static int parser_action_row1859[] = {
        1,
        1,
-       -1, 1, 242
+       -1, 1, 311
 };
 };
-static int parser_action_row1484[] = {
+static int parser_action_row1860[] = {
        1,
        1,
-       -1, 1, 246
+       -1, 1, 315
 };
 };
-static int parser_action_row1485[] = {
+static int parser_action_row1861[] = {
        4,
        4,
-       -1, 1, 208,
-       3, 0, 639,
+       -1, 1, 277,
+       3, 0, 722,
        29, 0, 39,
        29, 0, 39,
-       91, 0, 62
+       92, 0, 62
 };
 };
-static int parser_action_row1486[] = {
+static int parser_action_row1862[] = {
        3,
        3,
-       -1, 1, 212,
+       -1, 1, 281,
        29, 0, 39,
        29, 0, 39,
-       91, 0, 62
+       92, 0, 62
 };
 };
-static int parser_action_row1487[] = {
+static int parser_action_row1863[] = {
        1,
        1,
-       -1, 1, 220
+       -1, 1, 289
 };
 };
-static int parser_action_row1488[] = {
+static int parser_action_row1864[] = {
        1,
        1,
-       -1, 1, 248
+       -1, 1, 317
 };
 };
-static int parser_action_row1489[] = {
+static int parser_action_row1865[] = {
+       1,
+       -1, 1, 1128
+};
+static int parser_action_row1866[] = {
+       1,
+       -1, 1, 1246
+};
+static int parser_action_row1867[] = {
+       4,
+       -1, 1, 856,
+       58, 0, 1966,
+       59, 0, 220,
+       60, 0, 221
+};
+static int parser_action_row1868[] = {
+       23,
+       -1, 3, 1867,
+       11, 0, 170,
+       23, 0, 171,
+       32, 0, 172,
+       38, 0, 173,
+       40, 0, 174,
+       41, 0, 175,
+       42, 0, 47,
+       43, 0, 48,
+       44, 0, 49,
+       45, 0, 50,
+       48, 0, 176,
+       51, 0, 52,
+       53, 0, 53,
+       65, 0, 177,
+       80, 0, 54,
+       81, 0, 178,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
+};
+static int parser_action_row1869[] = {
+       23,
+       -1, 3, 1868,
+       11, 0, 170,
+       23, 0, 171,
+       32, 0, 172,
+       38, 0, 173,
+       40, 0, 174,
+       41, 0, 175,
+       42, 0, 47,
+       43, 0, 48,
+       44, 0, 49,
+       45, 0, 50,
+       48, 0, 176,
+       51, 0, 52,
+       53, 0, 53,
+       65, 0, 177,
+       80, 0, 54,
+       81, 0, 178,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
+};
+static int parser_action_row1870[] = {
        2,
        2,
-       -1, 3, 1488,
-       52, 0, 1559
+       -1, 3, 1869,
+       52, 0, 1970
 };
 };
-static int parser_action_row1490[] = {
+static int parser_action_row1871[] = {
+       1,
+       -1, 1, 615
+};
+static int parser_action_row1872[] = {
        1,
        1,
-       -1, 1, 717
+       -1, 1, 821
 };
 };
-static int parser_action_row1491[] = {
+static int parser_action_row1873[] = {
        2,
        2,
-       -1, 3, 1490,
-       52, 0, 1560
+       -1, 3, 1872,
+       52, 0, 1971
 };
 };
-static int parser_action_row1492[] = {
+static int parser_action_row1874[] = {
+       1,
+       -1, 1, 136
+};
+static int parser_action_row1875[] = {
+       1,
+       -1, 1, 1010
+};
+static int parser_action_row1876[] = {
        33,
        33,
-       -1, 3, 1491,
+       -1, 3, 1875,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       8, 0, 1151,
-       11, 0, 690,
-       14, 0, 691,
-       17, 0, 692,
-       23, 0, 693,
-       26, 0, 695,
-       27, 0, 696,
-       28, 0, 697,
-       33, 0, 698,
-       34, 0, 699,
-       35, 0, 700,
-       36, 0, 701,
-       37, 0, 702,
+       8, 0, 1417,
+       11, 0, 786,
+       14, 0, 787,
+       17, 0, 788,
+       23, 0, 789,
+       26, 0, 791,
+       27, 0, 792,
+       28, 0, 793,
+       33, 0, 794,
+       34, 0, 795,
+       35, 0, 796,
+       36, 0, 797,
+       37, 0, 798,
        38, 0, 45,
        38, 0, 45,
-       41, 0, 703,
+       41, 0, 799,
        42, 0, 47,
        43, 0, 48,
        44, 0, 49,
        45, 0, 50,
        42, 0, 47,
        43, 0, 48,
        44, 0, 49,
        45, 0, 50,
-       50, 0, 704,
+       50, 0, 800,
        51, 0, 52,
        53, 0, 53,
        51, 0, 52,
        53, 0, 53,
-       79, 0, 54,
-       80, 0, 705,
-       81, 0, 706,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 801,
+       82, 0, 802,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row1493[] = {
+static int parser_action_row1877[] = {
        2,
        2,
-       -1, 1, 423,
-       25, 1, 692
+       -1, 1, 507,
+       25, 1, 1026
 };
 };
-static int parser_action_row1494[] = {
+static int parser_action_row1878[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1495[] = {
+static int parser_action_row1879[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1496[] = {
+static int parser_action_row1880[] = {
        1,
        1,
-       -1, 1, 679
+       -1, 1, 1013
 };
 };
-static int parser_action_row1497[] = {
+static int parser_action_row1881[] = {
        1,
        1,
-       -1, 1, 684
+       -1, 1, 1018
 };
 };
-static int parser_action_row1498[] = {
+static int parser_action_row1882[] = {
        1,
        1,
-       -1, 1, 427
+       -1, 1, 511
 };
 };
-static int parser_action_row1499[] = {
+static int parser_action_row1883[] = {
        2,
        2,
-       -1, 3, 1498,
+       -1, 3, 1882,
        49, 0, 191
 };
        49, 0, 191
 };
-static int parser_action_row1500[] = {
+static int parser_action_row1884[] = {
        1,
        1,
-       -1, 1, 439
+       -1, 1, 523
 };
 };
-static int parser_action_row1501[] = {
+static int parser_action_row1885[] = {
        23,
        23,
-       -1, 3, 1500,
+       -1, 3, 1884,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -14957,68 +18055,108 @@ static int parser_action_row1501[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 206,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row1502[] = {
+static int parser_action_row1886[] = {
        2,
        2,
-       -1, 1, 506,
-       51, 0, 272
+       -1, 1, 631,
+       51, 0, 282
 };
 };
-static int parser_action_row1503[] = {
+static int parser_action_row1887[] = {
+       1,
+       -1, 1, 703
+};
+static int parser_action_row1888[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1504[] = {
+static int parser_action_row1889[] = {
        1,
        1,
-       -1, 1, 323
+       -1, 1, 399
 };
 };
-static int parser_action_row1505[] = {
+static int parser_action_row1890[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1506[] = {
+static int parser_action_row1891[] = {
        1,
        1,
-       -1, 1, 310
+       -1, 1, 386
 };
 };
-static int parser_action_row1507[] = {
+static int parser_action_row1892[] = {
        1,
        1,
-       -1, 1, 123
+       -1, 1, 166
 };
 };
-static int parser_action_row1508[] = {
+static int parser_action_row1893[] = {
        1,
        1,
-       -1, 1, 125
+       -1, 1, 168
 };
 };
-static int parser_action_row1509[] = {
+static int parser_action_row1894[] = {
        5,
        5,
-       -1, 1, 127,
-       3, 0, 639,
+       -1, 1, 170,
+       3, 0, 722,
        29, 0, 39,
        29, 0, 39,
-       85, 0, 1569,
-       91, 0, 62
+       86, 0, 1980,
+       92, 0, 62
 };
 };
-static int parser_action_row1510[] = {
+static int parser_action_row1895[] = {
        2,
        2,
-       -1, 1, 117,
-       8, 0, 1572
+       -1, 1, 154,
+       8, 0, 1983
+};
+static int parser_action_row1896[] = {
+       33,
+       -1, 3, 1895,
+       0, 0, 1,
+       1, 0, 2,
+       8, 0, 540,
+       11, 0, 28,
+       14, 0, 30,
+       17, 0, 31,
+       23, 0, 35,
+       26, 0, 36,
+       27, 0, 37,
+       28, 0, 38,
+       33, 0, 40,
+       34, 0, 41,
+       35, 0, 42,
+       36, 0, 43,
+       37, 0, 44,
+       38, 0, 45,
+       41, 0, 46,
+       42, 0, 47,
+       43, 0, 48,
+       44, 0, 49,
+       45, 0, 50,
+       50, 0, 51,
+       51, 0, 52,
+       53, 0, 53,
+       80, 0, 54,
+       81, 0, 55,
+       82, 0, 56,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row1511[] = {
+static int parser_action_row1897[] = {
        1,
        1,
-       -1, 1, 145
+       -1, 1, 188
 };
 };
-static int parser_action_row1512[] = {
+static int parser_action_row1898[] = {
        23,
        23,
-       -1, 3, 1511,
+       -1, 3, 1897,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -15033,34 +18171,76 @@ static int parser_action_row1512[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 178,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 178,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row1513[] = {
+static int parser_action_row1899[] = {
        2,
        2,
-       -1, 1, 197,
-       8, 0, 1574
+       -1, 1, 256,
+       8, 0, 1986
 };
 };
-static int parser_action_row1514[] = {
-       1,
-       -1, 1, 199
+static int parser_action_row1900[] = {
+       33,
+       -1, 3, 1899,
+       0, 0, 1,
+       1, 0, 2,
+       8, 0, 540,
+       11, 0, 28,
+       14, 0, 30,
+       17, 0, 31,
+       23, 0, 35,
+       26, 0, 36,
+       27, 0, 37,
+       28, 0, 38,
+       33, 0, 40,
+       34, 0, 41,
+       35, 0, 42,
+       36, 0, 43,
+       37, 0, 44,
+       38, 0, 45,
+       41, 0, 46,
+       42, 0, 47,
+       43, 0, 48,
+       44, 0, 49,
+       45, 0, 50,
+       50, 0, 51,
+       51, 0, 52,
+       53, 0, 53,
+       80, 0, 54,
+       81, 0, 55,
+       82, 0, 56,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row1515[] = {
+static int parser_action_row1901[] = {
        1,
        1,
-       -1, 1, 187
+       -1, 1, 262
 };
 };
-static int parser_action_row1516[] = {
+static int parser_action_row1902[] = {
+       2,
+       -1, 1, 258,
+       8, 0, 1988
+};
+static int parser_action_row1903[] = {
+       2,
+       -1, 1, 238,
+       13, 0, 456
+};
+static int parser_action_row1904[] = {
        23,
        23,
-       -1, 3, 1515,
+       -1, 3, 1903,
        11, 0, 170,
        11, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
+       23, 0, 1843,
+       32, 0, 1844,
        38, 0, 173,
        40, 0, 174,
        41, 0, 175,
        38, 0, 173,
        40, 0, 174,
        41, 0, 175,
@@ -15072,21 +18252,21 @@ static int parser_action_row1516[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 206,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
-};
-static int parser_action_row1517[] = {
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
+};
+static int parser_action_row1905[] = {
        23,
        23,
-       -1, 3, 1516,
+       -1, 3, 1904,
        11, 0, 170,
        11, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
+       23, 0, 1843,
+       32, 0, 1844,
        38, 0, 173,
        40, 0, 174,
        41, 0, 175,
        38, 0, 173,
        40, 0, 174,
        41, 0, 175,
@@ -15098,28 +18278,32 @@ static int parser_action_row1517[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 206,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row1518[] = {
+static int parser_action_row1906[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1519[] = {
+static int parser_action_row1907[] = {
        1,
        1,
-       -1, 1, 163
+       -1, 1, 236
 };
 };
-static int parser_action_row1520[] = {
+static int parser_action_row1908[] = {
+       1,
+       -1, 1, 206
+};
+static int parser_action_row1909[] = {
        23,
        23,
-       -1, 3, 1519,
+       -1, 3, 1908,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -15134,61 +18318,61 @@ static int parser_action_row1520[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 206,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
-};
-static int parser_action_row1521[] = {
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
+};
+static int parser_action_row1910[] = {
        5,
        5,
-       -1, 1, 207,
-       3, 0, 639,
+       -1, 1, 276,
+       3, 0, 722,
        29, 0, 39,
        29, 0, 39,
-       85, 0, 1579,
-       91, 0, 62
+       86, 0, 1994,
+       92, 0, 62
 };
 };
-static int parser_action_row1522[] = {
+static int parser_action_row1911[] = {
        3,
        3,
-       -1, 3, 1521,
+       -1, 3, 1910,
        29, 0, 39,
        29, 0, 39,
-       91, 0, 62
+       92, 0, 62
 };
 };
-static int parser_action_row1523[] = {
+static int parser_action_row1912[] = {
        1,
        1,
-       -1, 1, 243
+       -1, 1, 312
 };
 };
-static int parser_action_row1524[] = {
+static int parser_action_row1913[] = {
        1,
        1,
-       -1, 1, 247
+       -1, 1, 316
 };
 };
-static int parser_action_row1525[] = {
+static int parser_action_row1914[] = {
        4,
        4,
-       -1, 1, 209,
-       3, 0, 639,
+       -1, 1, 278,
+       3, 0, 722,
        29, 0, 39,
        29, 0, 39,
-       91, 0, 62
+       92, 0, 62
 };
 };
-static int parser_action_row1526[] = {
+static int parser_action_row1915[] = {
        3,
        3,
-       -1, 1, 213,
+       -1, 1, 282,
        29, 0, 39,
        29, 0, 39,
-       91, 0, 62
+       92, 0, 62
 };
 };
-static int parser_action_row1527[] = {
+static int parser_action_row1916[] = {
        1,
        1,
-       -1, 1, 221
+       -1, 1, 290
 };
 };
-static int parser_action_row1528[] = {
+static int parser_action_row1917[] = {
        1,
        1,
-       -1, 1, 249
+       -1, 1, 318
 };
 };
-static int parser_action_row1529[] = {
+static int parser_action_row1918[] = {
        23,
        23,
-       -1, 3, 1528,
+       -1, 3, 1917,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -15203,35 +18387,35 @@ static int parser_action_row1529[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 206,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row1530[] = {
+static int parser_action_row1919[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1531[] = {
+static int parser_action_row1920[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1532[] = {
+static int parser_action_row1921[] = {
        2,
        2,
-       -1, 1, 161,
-       58, 0, 1589
+       -1, 1, 204,
+       58, 0, 2004
 };
 };
-static int parser_action_row1533[] = {
+static int parser_action_row1922[] = {
        23,
        23,
-       -1, 3, 1532,
+       -1, 3, 1921,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -15246,28 +18430,28 @@ static int parser_action_row1533[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 206,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row1534[] = {
+static int parser_action_row1923[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1535[] = {
+static int parser_action_row1924[] = {
        1,
        1,
-       -1, 1, 164
+       -1, 1, 207
 };
 };
-static int parser_action_row1536[] = {
+static int parser_action_row1925[] = {
        23,
        23,
-       -1, 3, 1535,
+       -1, 3, 1924,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -15282,18 +18466,18 @@ static int parser_action_row1536[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 206,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
-};
-static int parser_action_row1537[] = {
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
+};
+static int parser_action_row1926[] = {
        23,
        23,
-       -1, 3, 1536,
+       -1, 3, 1925,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -15308,28 +18492,28 @@ static int parser_action_row1537[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 206,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row1538[] = {
+static int parser_action_row1927[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1539[] = {
+static int parser_action_row1928[] = {
        1,
        1,
-       -1, 1, 166
+       -1, 1, 209
 };
 };
-static int parser_action_row1540[] = {
+static int parser_action_row1929[] = {
        23,
        23,
-       -1, 3, 1539,
+       -1, 3, 1928,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -15344,67 +18528,73 @@ static int parser_action_row1540[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 206,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
-};
-static int parser_action_row1541[] = {
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
+};
+static int parser_action_row1930[] = {
        4,
        4,
-       -1, 1, 128,
-       3, 0, 639,
+       -1, 1, 171,
+       3, 0, 722,
        29, 0, 39,
        29, 0, 39,
-       91, 0, 62
+       92, 0, 62
 };
 };
-static int parser_action_row1542[] = {
+static int parser_action_row1931[] = {
        3,
        3,
-       -1, 1, 130,
+       -1, 1, 173,
        29, 0, 39,
        29, 0, 39,
-       91, 0, 62
+       92, 0, 62
 };
 };
-static int parser_action_row1543[] = {
+static int parser_action_row1932[] = {
        1,
        1,
-       -1, 1, 134
+       -1, 1, 177
 };
 };
-static int parser_action_row1544[] = {
+static int parser_action_row1933[] = {
        1,
        1,
-       -1, 1, 118
+       -1, 1, 157
 };
 };
-static int parser_action_row1545[] = {
+static int parser_action_row1934[] = {
+       2,
+       -1, 1, 155,
+       8, 0, 2014
+};
+static int parser_action_row1935[] = {
        1,
        1,
-       -1, 1, 120
+       -1, 1, 161
 };
 };
-static int parser_action_row1546[] = {
+static int parser_action_row1936[] = {
        3,
        3,
-       -1, 1, 280,
-       35, 0, 645,
-       78, 0, 646
+       -1, 1, 353,
+       35, 0, 730,
+       78, 0, 731
 };
 };
-static int parser_action_row1547[] = {
+static int parser_action_row1937[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1548[] = {
+static int parser_action_row1938[] = {
        1,
        1,
-       -1, 1, 200
+       -1, 1, 263
 };
 };
-static int parser_action_row1549[] = {
-       1,
-       -1, 1, 190
+static int parser_action_row1939[] = {
+       2,
+       -1, 1, 259,
+       8, 0, 2017
 };
 };
-static int parser_action_row1550[] = {
+static int parser_action_row1940[] = {
        1,
        1,
-       -1, 1, 188
+       -1, 1, 265
 };
 };
-static int parser_action_row1551[] = {
+static int parser_action_row1941[] = {
        23,
        23,
-       -1, 3, 1550,
+       -1, 3, 1940,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -15419,69 +18609,267 @@ static int parser_action_row1551[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 206,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
+};
+static int parser_action_row1942[] = {
+       22,
+       -1, 3, 1941,
+       11, 0, 170,
+       32, 0, 1844,
+       38, 0, 173,
+       40, 0, 174,
+       41, 0, 175,
+       42, 0, 47,
+       43, 0, 48,
+       44, 0, 49,
+       45, 0, 50,
+       48, 0, 176,
+       51, 0, 52,
+       53, 0, 53,
+       65, 0, 177,
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row1552[] = {
+static int parser_action_row1943[] = {
+       3,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row1944[] = {
+       3,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row1945[] = {
+       3,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row1946[] = {
+       3,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row1947[] = {
+       3,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row1948[] = {
+       3,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row1949[] = {
+       3,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row1950[] = {
+       3,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row1951[] = {
        1,
        1,
-       -1, 1, 170
+       -1, 1, 245
 };
 };
-static int parser_action_row1553[] = {
+static int parser_action_row1952[] = {
+       3,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row1953[] = {
+       4,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2,
+       25, 0, 2029
+};
+static int parser_action_row1954[] = {
+       3,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row1955[] = {
+       3,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row1956[] = {
+       2,
+       -1, 1, 241,
+       13, 0, 456
+};
+static int parser_action_row1957[] = {
+       2,
+       -1, 1, 239,
+       13, 0, 456
+};
+static int parser_action_row1958[] = {
+       23,
+       -1, 3, 1957,
+       11, 0, 170,
+       23, 0, 1843,
+       32, 0, 1844,
+       38, 0, 173,
+       40, 0, 174,
+       41, 0, 175,
+       42, 0, 47,
+       43, 0, 48,
+       44, 0, 49,
+       45, 0, 50,
+       48, 0, 176,
+       51, 0, 52,
+       53, 0, 53,
+       65, 0, 177,
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
+};
+static int parser_action_row1959[] = {
+       1,
+       -1, 1, 213
+};
+static int parser_action_row1960[] = {
        4,
        4,
-       -1, 1, 210,
-       3, 0, 639,
+       -1, 1, 279,
+       3, 0, 722,
        29, 0, 39,
        29, 0, 39,
-       91, 0, 62
+       92, 0, 62
 };
 };
-static int parser_action_row1554[] = {
+static int parser_action_row1961[] = {
        3,
        3,
-       -1, 1, 214,
+       -1, 1, 283,
        29, 0, 39,
        29, 0, 39,
-       91, 0, 62
+       92, 0, 62
 };
 };
-static int parser_action_row1555[] = {
+static int parser_action_row1962[] = {
        1,
        1,
-       -1, 1, 222
+       -1, 1, 291
 };
 };
-static int parser_action_row1556[] = {
+static int parser_action_row1963[] = {
        1,
        1,
-       -1, 1, 250
+       -1, 1, 319
 };
 };
-static int parser_action_row1557[] = {
+static int parser_action_row1964[] = {
        3,
        3,
-       -1, 1, 216,
+       -1, 1, 285,
        29, 0, 39,
        29, 0, 39,
-       91, 0, 62
+       92, 0, 62
+};
+static int parser_action_row1965[] = {
+       1,
+       -1, 1, 293
+};
+static int parser_action_row1966[] = {
+       1,
+       -1, 1, 297
+};
+static int parser_action_row1967[] = {
+       23,
+       -1, 3, 1966,
+       11, 0, 170,
+       23, 0, 171,
+       32, 0, 172,
+       38, 0, 173,
+       40, 0, 174,
+       41, 0, 175,
+       42, 0, 47,
+       43, 0, 48,
+       44, 0, 49,
+       45, 0, 50,
+       48, 0, 176,
+       51, 0, 52,
+       53, 0, 53,
+       65, 0, 177,
+       80, 0, 54,
+       81, 0, 178,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
+};
+static int parser_action_row1968[] = {
+       23,
+       -1, 3, 1967,
+       11, 0, 170,
+       23, 0, 171,
+       32, 0, 172,
+       38, 0, 173,
+       40, 0, 174,
+       41, 0, 175,
+       42, 0, 47,
+       43, 0, 48,
+       44, 0, 49,
+       45, 0, 50,
+       48, 0, 176,
+       51, 0, 52,
+       53, 0, 53,
+       65, 0, 177,
+       80, 0, 54,
+       81, 0, 178,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row1558[] = {
+static int parser_action_row1969[] = {
        1,
        1,
-       -1, 1, 224
+       -1, 1, 807
 };
 };
-static int parser_action_row1559[] = {
+static int parser_action_row1970[] = {
        1,
        1,
-       -1, 1, 228
+       -1, 1, 812
 };
 };
-static int parser_action_row1560[] = {
+static int parser_action_row1971[] = {
        1,
        1,
-       -1, 1, 496
+       -1, 1, 592
 };
 };
-static int parser_action_row1561[] = {
+static int parser_action_row1972[] = {
        1,
        1,
-       -1, 1, 770
+       -1, 1, 882
 };
 };
-static int parser_action_row1562[] = {
+static int parser_action_row1973[] = {
        1,
        1,
-       -1, 1, 689
+       -1, 1, 1023
 };
 };
-static int parser_action_row1563[] = {
+static int parser_action_row1974[] = {
        23,
        23,
-       -1, 3, 1562,
+       -1, 3, 1973,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -15496,89 +18884,109 @@ static int parser_action_row1563[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 206,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row1564[] = {
+static int parser_action_row1975[] = {
        2,
        2,
-       -1, 3, 1563,
-       14, 0, 1607
+       -1, 3, 1974,
+       14, 0, 2043
 };
 };
-static int parser_action_row1565[] = {
+static int parser_action_row1976[] = {
        1,
        1,
-       -1, 1, 425
+       -1, 1, 509
 };
 };
-static int parser_action_row1566[] = {
+static int parser_action_row1977[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1567[] = {
+static int parser_action_row1978[] = {
        1,
        1,
-       -1, 1, 616
+       -1, 1, 749
 };
 };
-static int parser_action_row1568[] = {
+static int parser_action_row1979[] = {
        4,
        4,
-       -1, 3, 1567,
-       32, 0, 1609,
-       47, 0, 361,
-       79, 0, 362
+       -1, 3, 1978,
+       32, 0, 2045,
+       47, 0, 390,
+       80, 0, 391
 };
 };
-static int parser_action_row1569[] = {
+static int parser_action_row1980[] = {
        2,
        2,
-       -1, 3, 1568,
-       52, 0, 1611
+       -1, 3, 1979,
+       52, 0, 2047
 };
 };
-static int parser_action_row1570[] = {
+static int parser_action_row1981[] = {
        4,
        4,
-       -1, 1, 129,
-       3, 0, 639,
+       -1, 1, 172,
+       3, 0, 722,
        29, 0, 39,
        29, 0, 39,
-       91, 0, 62
+       92, 0, 62
 };
 };
-static int parser_action_row1571[] = {
+static int parser_action_row1982[] = {
        3,
        3,
-       -1, 1, 131,
+       -1, 1, 174,
        29, 0, 39,
        29, 0, 39,
-       91, 0, 62
+       92, 0, 62
 };
 };
-static int parser_action_row1572[] = {
+static int parser_action_row1983[] = {
        1,
        1,
-       -1, 1, 135
+       -1, 1, 178
 };
 };
-static int parser_action_row1573[] = {
+static int parser_action_row1984[] = {
        1,
        1,
-       -1, 1, 119
+       -1, 1, 158
 };
 };
-static int parser_action_row1574[] = {
+static int parser_action_row1985[] = {
+       2,
+       -1, 1, 156,
+       8, 0, 2051
+};
+static int parser_action_row1986[] = {
        1,
        1,
-       -1, 1, 121
+       -1, 1, 162
 };
 };
-static int parser_action_row1575[] = {
+static int parser_action_row1987[] = {
        1,
        1,
-       -1, 1, 201
+       -1, 1, 264
 };
 };
-static int parser_action_row1576[] = {
+static int parser_action_row1988[] = {
+       2,
+       -1, 1, 260,
+       8, 0, 2052
+};
+static int parser_action_row1989[] = {
        1,
        1,
-       -1, 1, 191
+       -1, 1, 266
 };
 };
-static int parser_action_row1577[] = {
+static int parser_action_row1990[] = {
        1,
        1,
-       -1, 1, 189
+       -1, 1, 246
 };
 };
-static int parser_action_row1578[] = {
+static int parser_action_row1991[] = {
+       2,
+       -1, 1, 242,
+       13, 0, 456
+};
+static int parser_action_row1992[] = {
+       2,
+       -1, 1, 240,
+       13, 0, 456
+};
+static int parser_action_row1993[] = {
        23,
        23,
-       -1, 3, 1577,
+       -1, 3, 1992,
        11, 0, 170,
        11, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
+       23, 0, 1843,
+       32, 0, 1844,
        38, 0, 173,
        40, 0, 174,
        41, 0, 175,
        38, 0, 173,
        40, 0, 174,
        41, 0, 175,
@@ -15590,61 +18998,61 @@ static int parser_action_row1578[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 206,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row1579[] = {
+static int parser_action_row1994[] = {
        1,
        1,
-       -1, 1, 171
+       -1, 1, 214
 };
 };
-static int parser_action_row1580[] = {
+static int parser_action_row1995[] = {
        4,
        4,
-       -1, 1, 211,
-       3, 0, 639,
+       -1, 1, 280,
+       3, 0, 722,
        29, 0, 39,
        29, 0, 39,
-       91, 0, 62
+       92, 0, 62
 };
 };
-static int parser_action_row1581[] = {
+static int parser_action_row1996[] = {
        3,
        3,
-       -1, 1, 215,
+       -1, 1, 284,
        29, 0, 39,
        29, 0, 39,
-       91, 0, 62
+       92, 0, 62
 };
 };
-static int parser_action_row1582[] = {
+static int parser_action_row1997[] = {
        1,
        1,
-       -1, 1, 223
+       -1, 1, 292
 };
 };
-static int parser_action_row1583[] = {
+static int parser_action_row1998[] = {
        1,
        1,
-       -1, 1, 251
+       -1, 1, 320
 };
 };
-static int parser_action_row1584[] = {
+static int parser_action_row1999[] = {
        3,
        3,
-       -1, 1, 217,
+       -1, 1, 286,
        29, 0, 39,
        29, 0, 39,
-       91, 0, 62
+       92, 0, 62
 };
 };
-static int parser_action_row1585[] = {
+static int parser_action_row2000[] = {
        1,
        1,
-       -1, 1, 225
+       -1, 1, 294
 };
 };
-static int parser_action_row1586[] = {
+static int parser_action_row2001[] = {
        1,
        1,
-       -1, 1, 229
+       -1, 1, 298
 };
 };
-static int parser_action_row1587[] = {
+static int parser_action_row2002[] = {
        1,
        1,
-       -1, 1, 165
+       -1, 1, 208
 };
 };
-static int parser_action_row1588[] = {
+static int parser_action_row2003[] = {
        23,
        23,
-       -1, 3, 1587,
+       -1, 3, 2002,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -15659,18 +19067,18 @@ static int parser_action_row1588[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 206,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
-};
-static int parser_action_row1589[] = {
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
+};
+static int parser_action_row2004[] = {
        23,
        23,
-       -1, 3, 1588,
+       -1, 3, 2003,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -15685,28 +19093,62 @@ static int parser_action_row1589[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 206,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row1590[] = {
+static int parser_action_row2005[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1591[] = {
+static int parser_action_row2006[] = {
        1,
        1,
-       -1, 1, 168
+       -1, 1, 211
 };
 };
-static int parser_action_row1592[] = {
+static int parser_action_row2007[] = {
+       23,
+       -1, 3, 2006,
+       11, 0, 170,
+       23, 0, 171,
+       32, 0, 172,
+       38, 0, 173,
+       40, 0, 174,
+       41, 0, 175,
+       42, 0, 47,
+       43, 0, 48,
+       44, 0, 49,
+       45, 0, 50,
+       48, 0, 176,
+       51, 0, 52,
+       53, 0, 53,
+       65, 0, 177,
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
+};
+static int parser_action_row2008[] = {
+       1,
+       -1, 1, 215
+};
+static int parser_action_row2009[] = {
+       1,
+       -1, 1, 210
+};
+static int parser_action_row2010[] = {
        23,
        23,
-       -1, 3, 1591,
+       -1, 3, 2009,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -15721,29 +19163,319 @@ static int parser_action_row1592[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 206,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
-};
-static int parser_action_row1593[] = {
-       1,
-       -1, 1, 172
-};
-static int parser_action_row1594[] = {
-       1,
-       -1, 1, 167
-};
-static int parser_action_row1595[] = {
-       23,
-       -1, 3, 1594,
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
+};
+static int parser_action_row2011[] = {
+       1,
+       -1, 1, 217
+};
+static int parser_action_row2012[] = {
+       3,
+       -1, 1, 175,
+       29, 0, 39,
+       92, 0, 62
+};
+static int parser_action_row2013[] = {
+       1,
+       -1, 1, 179
+};
+static int parser_action_row2014[] = {
+       1,
+       -1, 1, 181
+};
+static int parser_action_row2015[] = {
+       1,
+       -1, 1, 159
+};
+static int parser_action_row2016[] = {
+       1,
+       -1, 1, 355
+};
+static int parser_action_row2017[] = {
+       3,
+       -1, 1, 354,
+       35, 0, 730,
+       78, 0, 731
+};
+static int parser_action_row2018[] = {
+       1,
+       -1, 1, 267
+};
+static int parser_action_row2019[] = {
+       3,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2020[] = {
+       1,
+       -1, 1, 1174
+};
+static int parser_action_row2021[] = {
+       3,
+       -1, 3, 2020,
+       47, 0, 390,
+       80, 0, 391
+};
+static int parser_action_row2022[] = {
+       21,
+       -1, 3, 2021,
+       11, 0, 170,
+       38, 0, 173,
+       40, 0, 174,
+       41, 0, 175,
+       42, 0, 47,
+       43, 0, 48,
+       44, 0, 49,
+       45, 0, 50,
+       48, 0, 176,
+       51, 0, 52,
+       53, 0, 53,
+       65, 0, 177,
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
+};
+static int parser_action_row2023[] = {
+       21,
+       -1, 3, 2022,
+       11, 0, 170,
+       38, 0, 173,
+       40, 0, 174,
+       41, 0, 175,
+       42, 0, 47,
+       43, 0, 48,
+       44, 0, 49,
+       45, 0, 50,
+       48, 0, 176,
+       51, 0, 52,
+       53, 0, 53,
+       65, 0, 177,
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
+};
+static int parser_action_row2024[] = {
+       21,
+       -1, 3, 2023,
+       11, 0, 170,
+       38, 0, 173,
+       40, 0, 174,
+       41, 0, 175,
+       42, 0, 47,
+       43, 0, 48,
+       44, 0, 49,
+       45, 0, 50,
+       48, 0, 176,
+       51, 0, 52,
+       53, 0, 53,
+       65, 0, 177,
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
+};
+static int parser_action_row2025[] = {
+       21,
+       -1, 3, 2024,
+       11, 0, 170,
+       38, 0, 173,
+       40, 0, 174,
+       41, 0, 175,
+       42, 0, 47,
+       43, 0, 48,
+       44, 0, 49,
+       45, 0, 50,
+       48, 0, 176,
+       51, 0, 52,
+       53, 0, 53,
+       65, 0, 177,
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
+};
+static int parser_action_row2026[] = {
+       21,
+       -1, 3, 2025,
+       11, 0, 170,
+       38, 0, 173,
+       40, 0, 174,
+       41, 0, 175,
+       42, 0, 47,
+       43, 0, 48,
+       44, 0, 49,
+       45, 0, 50,
+       48, 0, 176,
+       51, 0, 52,
+       53, 0, 53,
+       65, 0, 177,
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
+};
+static int parser_action_row2027[] = {
+       21,
+       -1, 3, 2026,
+       11, 0, 170,
+       38, 0, 173,
+       40, 0, 174,
+       41, 0, 175,
+       42, 0, 47,
+       43, 0, 48,
+       44, 0, 49,
+       45, 0, 50,
+       48, 0, 176,
+       51, 0, 52,
+       53, 0, 53,
+       65, 0, 177,
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
+};
+static int parser_action_row2028[] = {
+       21,
+       -1, 3, 2027,
+       11, 0, 170,
+       38, 0, 173,
+       40, 0, 174,
+       41, 0, 175,
+       42, 0, 47,
+       43, 0, 48,
+       44, 0, 49,
+       45, 0, 50,
+       48, 0, 176,
+       51, 0, 52,
+       53, 0, 53,
+       65, 0, 177,
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
+};
+static int parser_action_row2029[] = {
+       22,
+       -1, 3, 2028,
+       11, 0, 170,
+       32, 0, 1844,
+       38, 0, 173,
+       40, 0, 174,
+       41, 0, 175,
+       42, 0, 47,
+       43, 0, 48,
+       44, 0, 49,
+       45, 0, 50,
+       48, 0, 176,
+       51, 0, 52,
+       53, 0, 53,
+       65, 0, 177,
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
+};
+static int parser_action_row2030[] = {
+       3,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2031[] = {
+       22,
+       -1, 3, 2030,
+       11, 0, 170,
+       32, 0, 1844,
+       38, 0, 173,
+       40, 0, 174,
+       41, 0, 175,
+       42, 0, 47,
+       43, 0, 48,
+       44, 0, 49,
+       45, 0, 50,
+       48, 0, 176,
+       51, 0, 52,
+       53, 0, 53,
+       65, 0, 177,
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
+};
+static int parser_action_row2032[] = {
+       21,
+       -1, 3, 2031,
+       11, 0, 170,
+       38, 0, 173,
+       40, 0, 174,
+       41, 0, 175,
+       42, 0, 47,
+       43, 0, 48,
+       44, 0, 49,
+       45, 0, 50,
+       48, 0, 176,
+       51, 0, 52,
+       53, 0, 53,
+       65, 0, 177,
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
+};
+static int parser_action_row2033[] = {
+       21,
+       -1, 3, 2032,
        11, 0, 170,
        11, 0, 170,
-       23, 0, 171,
-       32, 0, 172,
        38, 0, 173,
        40, 0, 174,
        41, 0, 175,
        38, 0, 173,
        40, 0, 174,
        41, 0, 175,
@@ -15755,175 +19487,181 @@ static int parser_action_row1595[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 206,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
-};
-static int parser_action_row1596[] = {
-       1,
-       -1, 1, 174
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row1597[] = {
-       3,
-       -1, 1, 132,
-       29, 0, 39,
-       91, 0, 62
-};
-static int parser_action_row1598[] = {
+static int parser_action_row2034[] = {
        1,
        1,
-       -1, 1, 136
+       -1, 1, 249
 };
 };
-static int parser_action_row1599[] = {
+static int parser_action_row2035[] = {
        1,
        1,
-       -1, 1, 138
+       -1, 1, 247
 };
 };
-static int parser_action_row1600[] = {
-       1,
-       -1, 1, 282
+static int parser_action_row2036[] = {
+       2,
+       -1, 1, 243,
+       13, 0, 456
 };
 };
-static int parser_action_row1601[] = {
+static int parser_action_row2037[] = {
        3,
        3,
-       -1, 1, 281,
-       35, 0, 645,
-       78, 0, 646
+       -1, 1, 287,
+       29, 0, 39,
+       92, 0, 62
 };
 };
-static int parser_action_row1602[] = {
+static int parser_action_row2038[] = {
        1,
        1,
-       -1, 1, 192
+       -1, 1, 295
 };
 };
-static int parser_action_row1603[] = {
-       3,
-       -1, 1, 218,
-       29, 0, 39,
-       91, 0, 62
+static int parser_action_row2039[] = {
+       1,
+       -1, 1, 299
 };
 };
-static int parser_action_row1604[] = {
+static int parser_action_row2040[] = {
        1,
        1,
-       -1, 1, 226
+       -1, 1, 301
 };
 };
-static int parser_action_row1605[] = {
+static int parser_action_row2041[] = {
        1,
        1,
-       -1, 1, 230
+       -1, 1, 809
 };
 };
-static int parser_action_row1606[] = {
+static int parser_action_row2042[] = {
        1,
        1,
-       -1, 1, 232
+       -1, 1, 814
 };
 };
-static int parser_action_row1607[] = {
+static int parser_action_row2043[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1608[] = {
+static int parser_action_row2044[] = {
        33,
        33,
-       -1, 3, 1607,
+       -1, 3, 2043,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       8, 0, 810,
-       11, 0, 690,
-       14, 0, 691,
-       17, 0, 692,
-       23, 0, 693,
-       26, 0, 695,
-       27, 0, 696,
-       28, 0, 697,
-       33, 0, 698,
-       34, 0, 699,
-       35, 0, 700,
-       36, 0, 701,
-       37, 0, 702,
+       8, 0, 946,
+       11, 0, 786,
+       14, 0, 787,
+       17, 0, 788,
+       23, 0, 789,
+       26, 0, 791,
+       27, 0, 792,
+       28, 0, 793,
+       33, 0, 794,
+       34, 0, 795,
+       35, 0, 796,
+       36, 0, 797,
+       37, 0, 798,
        38, 0, 45,
        38, 0, 45,
-       41, 0, 703,
+       41, 0, 799,
        42, 0, 47,
        43, 0, 48,
        44, 0, 49,
        45, 0, 50,
        42, 0, 47,
        43, 0, 48,
        44, 0, 49,
        45, 0, 50,
-       50, 0, 704,
+       50, 0, 800,
        51, 0, 52,
        53, 0, 53,
        51, 0, 52,
        53, 0, 53,
-       79, 0, 54,
-       80, 0, 705,
-       81, 0, 706,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 801,
+       82, 0, 802,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row1609[] = {
+static int parser_action_row2045[] = {
        2,
        2,
-       -1, 3, 1608,
-       25, 0, 1631
+       -1, 3, 2044,
+       25, 0, 2086
 };
 };
-static int parser_action_row1610[] = {
+static int parser_action_row2046[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1611[] = {
+static int parser_action_row2047[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1612[] = {
+static int parser_action_row2048[] = {
        1,
        1,
-       -1, 1, 321
+       -1, 1, 397
 };
 };
-static int parser_action_row1613[] = {
+static int parser_action_row2049[] = {
        3,
        3,
-       -1, 1, 133,
+       -1, 1, 176,
        29, 0, 39,
        29, 0, 39,
-       91, 0, 62
+       92, 0, 62
 };
 };
-static int parser_action_row1614[] = {
+static int parser_action_row2050[] = {
        1,
        1,
-       -1, 1, 137
+       -1, 1, 180
 };
 };
-static int parser_action_row1615[] = {
+static int parser_action_row2051[] = {
        1,
        1,
-       -1, 1, 139
+       -1, 1, 182
 };
 };
-static int parser_action_row1616[] = {
+static int parser_action_row2052[] = {
        1,
        1,
-       -1, 1, 193
+       -1, 1, 160
 };
 };
-static int parser_action_row1617[] = {
+static int parser_action_row2053[] = {
+       1,
+       -1, 1, 268
+};
+static int parser_action_row2054[] = {
+       1,
+       -1, 1, 250
+};
+static int parser_action_row2055[] = {
+       1,
+       -1, 1, 248
+};
+static int parser_action_row2056[] = {
+       2,
+       -1, 1, 244,
+       13, 0, 456
+};
+static int parser_action_row2057[] = {
        3,
        3,
-       -1, 1, 219,
+       -1, 1, 288,
        29, 0, 39,
        29, 0, 39,
-       91, 0, 62
+       92, 0, 62
 };
 };
-static int parser_action_row1618[] = {
+static int parser_action_row2058[] = {
        1,
        1,
-       -1, 1, 227
+       -1, 1, 296
 };
 };
-static int parser_action_row1619[] = {
+static int parser_action_row2059[] = {
        1,
        1,
-       -1, 1, 231
+       -1, 1, 300
 };
 };
-static int parser_action_row1620[] = {
+static int parser_action_row2060[] = {
        1,
        1,
-       -1, 1, 233
+       -1, 1, 302
 };
 };
-static int parser_action_row1621[] = {
+static int parser_action_row2061[] = {
        1,
        1,
-       -1, 1, 173
+       -1, 1, 216
 };
 };
-static int parser_action_row1622[] = {
+static int parser_action_row2062[] = {
        1,
        1,
-       -1, 1, 169
+       -1, 1, 212
 };
 };
-static int parser_action_row1623[] = {
+static int parser_action_row2063[] = {
        23,
        23,
-       -1, 3, 1622,
+       -1, 3, 2062,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
        11, 0, 170,
        23, 0, 171,
        32, 0, 172,
@@ -15938,179 +19676,366 @@ static int parser_action_row1623[] = {
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
        51, 0, 52,
        53, 0, 53,
        65, 0, 177,
-       79, 0, 54,
-       80, 0, 206,
-       81, 0, 179,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row1624[] = {
+static int parser_action_row2064[] = {
        1,
        1,
-       -1, 1, 176
+       -1, 1, 219
 };
 };
-static int parser_action_row1625[] = {
+static int parser_action_row2065[] = {
        1,
        1,
-       -1, 1, 175
+       -1, 1, 218
 };
 };
-static int parser_action_row1626[] = {
+static int parser_action_row2066[] = {
        1,
        1,
-       -1, 1, 140
+       -1, 1, 183
 };
 };
-static int parser_action_row1627[] = {
+static int parser_action_row2067[] = {
        1,
        1,
-       -1, 1, 283
+       -1, 1, 356
 };
 };
-static int parser_action_row1628[] = {
+static int parser_action_row2068[] = {
+       2,
+       -1, 3, 2067,
+       24, 0, 2093
+};
+static int parser_action_row2069[] = {
        1,
        1,
-       -1, 1, 234
+       -1, 1, 1185
 };
 };
-static int parser_action_row1629[] = {
+static int parser_action_row2070[] = {
+       3,
+       -1, 1, 1176,
+       64, 0, 354,
+       65, 0, 355
+};
+static int parser_action_row2071[] = {
+       3,
+       -1, 1, 1177,
+       64, 0, 354,
+       65, 0, 355
+};
+static int parser_action_row2072[] = {
+       3,
+       -1, 1, 1178,
+       64, 0, 354,
+       65, 0, 355
+};
+static int parser_action_row2073[] = {
+       3,
+       -1, 1, 1179,
+       64, 0, 354,
+       65, 0, 355
+};
+static int parser_action_row2074[] = {
+       3,
+       -1, 1, 1181,
+       64, 0, 354,
+       65, 0, 355
+};
+static int parser_action_row2075[] = {
+       3,
+       -1, 1, 1182,
+       64, 0, 354,
+       65, 0, 355
+};
+static int parser_action_row2076[] = {
+       3,
+       -1, 1, 1184,
+       64, 0, 354,
+       65, 0, 355
+};
+static int parser_action_row2077[] = {
+       1,
+       -1, 1, 1171
+};
+static int parser_action_row2078[] = {
+       22,
+       -1, 3, 2077,
+       11, 0, 170,
+       32, 0, 1844,
+       38, 0, 173,
+       40, 0, 174,
+       41, 0, 175,
+       42, 0, 47,
+       43, 0, 48,
+       44, 0, 49,
+       45, 0, 50,
+       48, 0, 176,
+       51, 0, 52,
+       53, 0, 53,
+       65, 0, 177,
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
+};
+static int parser_action_row2079[] = {
+       1,
+       -1, 1, 1170
+};
+static int parser_action_row2080[] = {
+       3,
+       -1, 1, 1180,
+       64, 0, 354,
+       65, 0, 355
+};
+static int parser_action_row2081[] = {
+       3,
+       -1, 1, 1183,
+       64, 0, 354,
+       65, 0, 355
+};
+static int parser_action_row2082[] = {
+       1,
+       -1, 1, 251
+};
+static int parser_action_row2083[] = {
+       1,
+       -1, 1, 303
+};
+static int parser_action_row2084[] = {
        2,
        2,
-       -1, 3, 1628,
-       14, 0, 1637
+       -1, 3, 2083,
+       14, 0, 2095
 };
 };
-static int parser_action_row1630[] = {
+static int parser_action_row2085[] = {
        1,
        1,
-       -1, 1, 697
+       -1, 1, 1031
 };
 };
-static int parser_action_row1631[] = {
+static int parser_action_row2086[] = {
        2,
        2,
-       -1, 3, 1630,
+       -1, 3, 2085,
        49, 0, 191
 };
        49, 0, 191
 };
-static int parser_action_row1632[] = {
+static int parser_action_row2087[] = {
        3,
        3,
-       -1, 1, 531,
+       -1, 1, 656,
        0, 0, 1,
        1, 0, 2
 };
        0, 0, 1,
        1, 0, 2
 };
-static int parser_action_row1633[] = {
+static int parser_action_row2088[] = {
        2,
        2,
-       -1, 3, 1632,
-       45, 0, 1640
+       -1, 3, 2087,
+       45, 0, 2098
 };
 };
-static int parser_action_row1634[] = {
+static int parser_action_row2089[] = {
        2,
        2,
-       -1, 3, 1633,
-       52, 0, 1641
+       -1, 3, 2088,
+       52, 0, 2099
 };
 };
-static int parser_action_row1635[] = {
+static int parser_action_row2090[] = {
        1,
        1,
-       -1, 1, 141
+       -1, 1, 184
 };
 };
-static int parser_action_row1636[] = {
+static int parser_action_row2091[] = {
        1,
        1,
-       -1, 1, 235
+       -1, 1, 252
 };
 };
-static int parser_action_row1637[] = {
+static int parser_action_row2092[] = {
        1,
        1,
-       -1, 1, 177
+       -1, 1, 304
 };
 };
-static int parser_action_row1638[] = {
+static int parser_action_row2093[] = {
+       1,
+       -1, 1, 220
+};
+static int parser_action_row2094[] = {
+       3,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2095[] = {
+       1,
+       -1, 1, 1172
+};
+static int parser_action_row2096[] = {
        33,
        33,
-       -1, 3, 1637,
+       -1, 3, 2095,
        0, 0, 1,
        1, 0, 2,
        0, 0, 1,
        1, 0, 2,
-       8, 0, 810,
-       11, 0, 690,
-       14, 0, 691,
-       17, 0, 692,
-       23, 0, 693,
-       26, 0, 695,
-       27, 0, 696,
-       28, 0, 697,
-       33, 0, 698,
-       34, 0, 699,
-       35, 0, 700,
-       36, 0, 701,
-       37, 0, 702,
+       8, 0, 946,
+       11, 0, 786,
+       14, 0, 787,
+       17, 0, 788,
+       23, 0, 789,
+       26, 0, 791,
+       27, 0, 792,
+       28, 0, 793,
+       33, 0, 794,
+       34, 0, 795,
+       35, 0, 796,
+       36, 0, 797,
+       37, 0, 798,
        38, 0, 45,
        38, 0, 45,
-       41, 0, 703,
+       41, 0, 799,
        42, 0, 47,
        43, 0, 48,
        44, 0, 49,
        45, 0, 50,
        42, 0, 47,
        43, 0, 48,
        44, 0, 49,
        45, 0, 50,
-       50, 0, 704,
+       50, 0, 800,
        51, 0, 52,
        53, 0, 53,
        51, 0, 52,
        53, 0, 53,
-       79, 0, 54,
-       80, 0, 705,
-       81, 0, 706,
-       82, 0, 57,
-       83, 0, 58,
-       84, 0, 59,
-       85, 0, 60,
-       86, 0, 61
+       80, 0, 54,
+       81, 0, 801,
+       82, 0, 802,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
 };
 };
-static int parser_action_row1639[] = {
+static int parser_action_row2097[] = {
        2,
        2,
-       -1, 1, 426,
-       25, 1, 695
+       -1, 1, 510,
+       25, 1, 1029
 };
 };
-static int parser_action_row1640[] = {
+static int parser_action_row2098[] = {
        22,
        22,
-       -1, 3, 1639,
-       11, 0, 863,
-       23, 0, 864,
-       32, 0, 865,
-       38, 0, 866,
-       40, 0, 867,
-       41, 0, 868,
-       42, 0, 869,
-       43, 0, 870,
-       44, 0, 871,
-       45, 0, 872,
-       48, 0, 873,
-       51, 0, 874,
-       65, 0, 875,
-       79, 0, 54,
-       80, 0, 876,
-       81, 0, 877,
-       82, 0, 878,
-       83, 0, 879,
-       84, 0, 880,
-       85, 0, 881,
-       86, 0, 61
-};
-static int parser_action_row1641[] = {
-       3,
-       -1, 1, 531,
-       0, 0, 1,
-       1, 0, 2
-};
-static int parser_action_row1642[] = {
+       -1, 3, 2097,
+       11, 0, 1010,
+       23, 0, 1011,
+       32, 0, 1012,
+       38, 0, 1013,
+       40, 0, 1014,
+       41, 0, 1015,
+       42, 0, 1016,
+       43, 0, 1017,
+       44, 0, 1018,
+       45, 0, 1019,
+       48, 0, 1020,
+       51, 0, 1021,
+       65, 0, 1022,
+       80, 0, 54,
+       81, 0, 1023,
+       82, 0, 1024,
+       83, 0, 1025,
+       84, 0, 1026,
+       85, 0, 1027,
+       86, 0, 1028,
+       87, 0, 61
+};
+static int parser_action_row2099[] = {
+       3,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2100[] = {
        1,
        1,
-       -1, 1, 627
+       -1, 1, 769
 };
 };
-static int parser_action_row1643[] = {
+static int parser_action_row2101[] = {
+       23,
+       -1, 3, 2100,
+       11, 0, 170,
+       23, 0, 171,
+       32, 0, 172,
+       38, 0, 173,
+       40, 0, 174,
+       41, 0, 175,
+       42, 0, 47,
+       43, 0, 48,
+       44, 0, 49,
+       45, 0, 50,
+       48, 0, 176,
+       51, 0, 52,
+       53, 0, 53,
+       65, 0, 177,
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
+};
+static int parser_action_row2102[] = {
        1,
        1,
-       -1, 1, 696
+       -1, 1, 1030
 };
 };
-static int parser_action_row1644[] = {
+static int parser_action_row2103[] = {
        2,
        2,
-       -1, 3, 1643,
+       -1, 3, 2102,
        49, 0, 191
 };
        49, 0, 191
 };
-static int parser_action_row1645[] = {
+static int parser_action_row2104[] = {
        1,
        1,
-       -1, 1, 575
+       -1, 1, 708
 };
 };
-static int parser_action_row1646[] = {
+static int parser_action_row2105[] = {
        2,
        2,
-       -1, 3, 1645,
-       52, 0, 1647
+       -1, 3, 2104,
+       52, 0, 2107
 };
 };
-static int parser_action_row1647[] = {
+static int parser_action_row2106[] = {
+       3,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2107[] = {
        2,
        2,
-       -1, 1, 425,
-       25, 1, 694
+       -1, 1, 509,
+       25, 1, 1028
 };
 };
-static int parser_action_row1648[] = {
+static int parser_action_row2108[] = {
        1,
        1,
-       -1, 1, 628
+       -1, 1, 770
+};
+static int parser_action_row2109[] = {
+       2,
+       -1, 3, 2108,
+       25, 0, 2109
+};
+static int parser_action_row2110[] = {
+       3,
+       -1, 1, 656,
+       0, 0, 1,
+       1, 0, 2
+};
+static int parser_action_row2111[] = {
+       23,
+       -1, 3, 2110,
+       11, 0, 170,
+       23, 0, 1843,
+       32, 0, 1844,
+       38, 0, 173,
+       40, 0, 174,
+       41, 0, 175,
+       42, 0, 47,
+       43, 0, 48,
+       44, 0, 49,
+       45, 0, 50,
+       48, 0, 176,
+       51, 0, 52,
+       53, 0, 53,
+       65, 0, 177,
+       80, 0, 54,
+       81, 0, 211,
+       82, 0, 179,
+       83, 0, 57,
+       84, 0, 58,
+       85, 0, 59,
+       86, 0, 60,
+       87, 0, 61
+};
+static int parser_action_row2112[] = {
+       1,
+       -1, 1, 1168
 };
 
 const int* const parser_action_table[] = {
 };
 
 const int* const parser_action_table[] = {
@@ -17761,7 +21686,471 @@ const int* const parser_action_table[] = {
        parser_action_row1645,
        parser_action_row1646,
        parser_action_row1647,
        parser_action_row1645,
        parser_action_row1646,
        parser_action_row1647,
-       parser_action_row1648
+       parser_action_row1648,
+       parser_action_row1649,
+       parser_action_row1650,
+       parser_action_row1651,
+       parser_action_row1652,
+       parser_action_row1653,
+       parser_action_row1654,
+       parser_action_row1655,
+       parser_action_row1656,
+       parser_action_row1657,
+       parser_action_row1658,
+       parser_action_row1659,
+       parser_action_row1660,
+       parser_action_row1661,
+       parser_action_row1662,
+       parser_action_row1663,
+       parser_action_row1664,
+       parser_action_row1665,
+       parser_action_row1666,
+       parser_action_row1667,
+       parser_action_row1668,
+       parser_action_row1669,
+       parser_action_row1670,
+       parser_action_row1671,
+       parser_action_row1672,
+       parser_action_row1673,
+       parser_action_row1674,
+       parser_action_row1675,
+       parser_action_row1676,
+       parser_action_row1677,
+       parser_action_row1678,
+       parser_action_row1679,
+       parser_action_row1680,
+       parser_action_row1681,
+       parser_action_row1682,
+       parser_action_row1683,
+       parser_action_row1684,
+       parser_action_row1685,
+       parser_action_row1686,
+       parser_action_row1687,
+       parser_action_row1688,
+       parser_action_row1689,
+       parser_action_row1690,
+       parser_action_row1691,
+       parser_action_row1692,
+       parser_action_row1693,
+       parser_action_row1694,
+       parser_action_row1695,
+       parser_action_row1696,
+       parser_action_row1697,
+       parser_action_row1698,
+       parser_action_row1699,
+       parser_action_row1700,
+       parser_action_row1701,
+       parser_action_row1702,
+       parser_action_row1703,
+       parser_action_row1704,
+       parser_action_row1705,
+       parser_action_row1706,
+       parser_action_row1707,
+       parser_action_row1708,
+       parser_action_row1709,
+       parser_action_row1710,
+       parser_action_row1711,
+       parser_action_row1712,
+       parser_action_row1713,
+       parser_action_row1714,
+       parser_action_row1715,
+       parser_action_row1716,
+       parser_action_row1717,
+       parser_action_row1718,
+       parser_action_row1719,
+       parser_action_row1720,
+       parser_action_row1721,
+       parser_action_row1722,
+       parser_action_row1723,
+       parser_action_row1724,
+       parser_action_row1725,
+       parser_action_row1726,
+       parser_action_row1727,
+       parser_action_row1728,
+       parser_action_row1729,
+       parser_action_row1730,
+       parser_action_row1731,
+       parser_action_row1732,
+       parser_action_row1733,
+       parser_action_row1734,
+       parser_action_row1735,
+       parser_action_row1736,
+       parser_action_row1737,
+       parser_action_row1738,
+       parser_action_row1739,
+       parser_action_row1740,
+       parser_action_row1741,
+       parser_action_row1742,
+       parser_action_row1743,
+       parser_action_row1744,
+       parser_action_row1745,
+       parser_action_row1746,
+       parser_action_row1747,
+       parser_action_row1748,
+       parser_action_row1749,
+       parser_action_row1750,
+       parser_action_row1751,
+       parser_action_row1752,
+       parser_action_row1753,
+       parser_action_row1754,
+       parser_action_row1755,
+       parser_action_row1756,
+       parser_action_row1757,
+       parser_action_row1758,
+       parser_action_row1759,
+       parser_action_row1760,
+       parser_action_row1761,
+       parser_action_row1762,
+       parser_action_row1763,
+       parser_action_row1764,
+       parser_action_row1765,
+       parser_action_row1766,
+       parser_action_row1767,
+       parser_action_row1768,
+       parser_action_row1769,
+       parser_action_row1770,
+       parser_action_row1771,
+       parser_action_row1772,
+       parser_action_row1773,
+       parser_action_row1774,
+       parser_action_row1775,
+       parser_action_row1776,
+       parser_action_row1777,
+       parser_action_row1778,
+       parser_action_row1779,
+       parser_action_row1780,
+       parser_action_row1781,
+       parser_action_row1782,
+       parser_action_row1783,
+       parser_action_row1784,
+       parser_action_row1785,
+       parser_action_row1786,
+       parser_action_row1787,
+       parser_action_row1788,
+       parser_action_row1789,
+       parser_action_row1790,
+       parser_action_row1791,
+       parser_action_row1792,
+       parser_action_row1793,
+       parser_action_row1794,
+       parser_action_row1795,
+       parser_action_row1796,
+       parser_action_row1797,
+       parser_action_row1798,
+       parser_action_row1799,
+       parser_action_row1800,
+       parser_action_row1801,
+       parser_action_row1802,
+       parser_action_row1803,
+       parser_action_row1804,
+       parser_action_row1805,
+       parser_action_row1806,
+       parser_action_row1807,
+       parser_action_row1808,
+       parser_action_row1809,
+       parser_action_row1810,
+       parser_action_row1811,
+       parser_action_row1812,
+       parser_action_row1813,
+       parser_action_row1814,
+       parser_action_row1815,
+       parser_action_row1816,
+       parser_action_row1817,
+       parser_action_row1818,
+       parser_action_row1819,
+       parser_action_row1820,
+       parser_action_row1821,
+       parser_action_row1822,
+       parser_action_row1823,
+       parser_action_row1824,
+       parser_action_row1825,
+       parser_action_row1826,
+       parser_action_row1827,
+       parser_action_row1828,
+       parser_action_row1829,
+       parser_action_row1830,
+       parser_action_row1831,
+       parser_action_row1832,
+       parser_action_row1833,
+       parser_action_row1834,
+       parser_action_row1835,
+       parser_action_row1836,
+       parser_action_row1837,
+       parser_action_row1838,
+       parser_action_row1839,
+       parser_action_row1840,
+       parser_action_row1841,
+       parser_action_row1842,
+       parser_action_row1843,
+       parser_action_row1844,
+       parser_action_row1845,
+       parser_action_row1846,
+       parser_action_row1847,
+       parser_action_row1848,
+       parser_action_row1849,
+       parser_action_row1850,
+       parser_action_row1851,
+       parser_action_row1852,
+       parser_action_row1853,
+       parser_action_row1854,
+       parser_action_row1855,
+       parser_action_row1856,
+       parser_action_row1857,
+       parser_action_row1858,
+       parser_action_row1859,
+       parser_action_row1860,
+       parser_action_row1861,
+       parser_action_row1862,
+       parser_action_row1863,
+       parser_action_row1864,
+       parser_action_row1865,
+       parser_action_row1866,
+       parser_action_row1867,
+       parser_action_row1868,
+       parser_action_row1869,
+       parser_action_row1870,
+       parser_action_row1871,
+       parser_action_row1872,
+       parser_action_row1873,
+       parser_action_row1874,
+       parser_action_row1875,
+       parser_action_row1876,
+       parser_action_row1877,
+       parser_action_row1878,
+       parser_action_row1879,
+       parser_action_row1880,
+       parser_action_row1881,
+       parser_action_row1882,
+       parser_action_row1883,
+       parser_action_row1884,
+       parser_action_row1885,
+       parser_action_row1886,
+       parser_action_row1887,
+       parser_action_row1888,
+       parser_action_row1889,
+       parser_action_row1890,
+       parser_action_row1891,
+       parser_action_row1892,
+       parser_action_row1893,
+       parser_action_row1894,
+       parser_action_row1895,
+       parser_action_row1896,
+       parser_action_row1897,
+       parser_action_row1898,
+       parser_action_row1899,
+       parser_action_row1900,
+       parser_action_row1901,
+       parser_action_row1902,
+       parser_action_row1903,
+       parser_action_row1904,
+       parser_action_row1905,
+       parser_action_row1906,
+       parser_action_row1907,
+       parser_action_row1908,
+       parser_action_row1909,
+       parser_action_row1910,
+       parser_action_row1911,
+       parser_action_row1912,
+       parser_action_row1913,
+       parser_action_row1914,
+       parser_action_row1915,
+       parser_action_row1916,
+       parser_action_row1917,
+       parser_action_row1918,
+       parser_action_row1919,
+       parser_action_row1920,
+       parser_action_row1921,
+       parser_action_row1922,
+       parser_action_row1923,
+       parser_action_row1924,
+       parser_action_row1925,
+       parser_action_row1926,
+       parser_action_row1927,
+       parser_action_row1928,
+       parser_action_row1929,
+       parser_action_row1930,
+       parser_action_row1931,
+       parser_action_row1932,
+       parser_action_row1933,
+       parser_action_row1934,
+       parser_action_row1935,
+       parser_action_row1936,
+       parser_action_row1937,
+       parser_action_row1938,
+       parser_action_row1939,
+       parser_action_row1940,
+       parser_action_row1941,
+       parser_action_row1942,
+       parser_action_row1943,
+       parser_action_row1944,
+       parser_action_row1945,
+       parser_action_row1946,
+       parser_action_row1947,
+       parser_action_row1948,
+       parser_action_row1949,
+       parser_action_row1950,
+       parser_action_row1951,
+       parser_action_row1952,
+       parser_action_row1953,
+       parser_action_row1954,
+       parser_action_row1955,
+       parser_action_row1956,
+       parser_action_row1957,
+       parser_action_row1958,
+       parser_action_row1959,
+       parser_action_row1960,
+       parser_action_row1961,
+       parser_action_row1962,
+       parser_action_row1963,
+       parser_action_row1964,
+       parser_action_row1965,
+       parser_action_row1966,
+       parser_action_row1967,
+       parser_action_row1968,
+       parser_action_row1969,
+       parser_action_row1970,
+       parser_action_row1971,
+       parser_action_row1972,
+       parser_action_row1973,
+       parser_action_row1974,
+       parser_action_row1975,
+       parser_action_row1976,
+       parser_action_row1977,
+       parser_action_row1978,
+       parser_action_row1979,
+       parser_action_row1980,
+       parser_action_row1981,
+       parser_action_row1982,
+       parser_action_row1983,
+       parser_action_row1984,
+       parser_action_row1985,
+       parser_action_row1986,
+       parser_action_row1987,
+       parser_action_row1988,
+       parser_action_row1989,
+       parser_action_row1990,
+       parser_action_row1991,
+       parser_action_row1992,
+       parser_action_row1993,
+       parser_action_row1994,
+       parser_action_row1995,
+       parser_action_row1996,
+       parser_action_row1997,
+       parser_action_row1998,
+       parser_action_row1999,
+       parser_action_row2000,
+       parser_action_row2001,
+       parser_action_row2002,
+       parser_action_row2003,
+       parser_action_row2004,
+       parser_action_row2005,
+       parser_action_row2006,
+       parser_action_row2007,
+       parser_action_row2008,
+       parser_action_row2009,
+       parser_action_row2010,
+       parser_action_row2011,
+       parser_action_row2012,
+       parser_action_row2013,
+       parser_action_row2014,
+       parser_action_row2015,
+       parser_action_row2016,
+       parser_action_row2017,
+       parser_action_row2018,
+       parser_action_row2019,
+       parser_action_row2020,
+       parser_action_row2021,
+       parser_action_row2022,
+       parser_action_row2023,
+       parser_action_row2024,
+       parser_action_row2025,
+       parser_action_row2026,
+       parser_action_row2027,
+       parser_action_row2028,
+       parser_action_row2029,
+       parser_action_row2030,
+       parser_action_row2031,
+       parser_action_row2032,
+       parser_action_row2033,
+       parser_action_row2034,
+       parser_action_row2035,
+       parser_action_row2036,
+       parser_action_row2037,
+       parser_action_row2038,
+       parser_action_row2039,
+       parser_action_row2040,
+       parser_action_row2041,
+       parser_action_row2042,
+       parser_action_row2043,
+       parser_action_row2044,
+       parser_action_row2045,
+       parser_action_row2046,
+       parser_action_row2047,
+       parser_action_row2048,
+       parser_action_row2049,
+       parser_action_row2050,
+       parser_action_row2051,
+       parser_action_row2052,
+       parser_action_row2053,
+       parser_action_row2054,
+       parser_action_row2055,
+       parser_action_row2056,
+       parser_action_row2057,
+       parser_action_row2058,
+       parser_action_row2059,
+       parser_action_row2060,
+       parser_action_row2061,
+       parser_action_row2062,
+       parser_action_row2063,
+       parser_action_row2064,
+       parser_action_row2065,
+       parser_action_row2066,
+       parser_action_row2067,
+       parser_action_row2068,
+       parser_action_row2069,
+       parser_action_row2070,
+       parser_action_row2071,
+       parser_action_row2072,
+       parser_action_row2073,
+       parser_action_row2074,
+       parser_action_row2075,
+       parser_action_row2076,
+       parser_action_row2077,
+       parser_action_row2078,
+       parser_action_row2079,
+       parser_action_row2080,
+       parser_action_row2081,
+       parser_action_row2082,
+       parser_action_row2083,
+       parser_action_row2084,
+       parser_action_row2085,
+       parser_action_row2086,
+       parser_action_row2087,
+       parser_action_row2088,
+       parser_action_row2089,
+       parser_action_row2090,
+       parser_action_row2091,
+       parser_action_row2092,
+       parser_action_row2093,
+       parser_action_row2094,
+       parser_action_row2095,
+       parser_action_row2096,
+       parser_action_row2097,
+       parser_action_row2098,
+       parser_action_row2099,
+       parser_action_row2100,
+       parser_action_row2101,
+       parser_action_row2102,
+       parser_action_row2103,
+       parser_action_row2104,
+       parser_action_row2105,
+       parser_action_row2106,
+       parser_action_row2107,
+       parser_action_row2108,
+       parser_action_row2109,
+       parser_action_row2110,
+       parser_action_row2111,
+       parser_action_row2112
 };
 
 static int parser_goto_row1[] = {
 };
 
 static int parser_goto_row1[] = {
@@ -17790,28 +22179,28 @@ static int parser_goto_row4[] = {
        24, 114,
        25, 117,
        26, 119,
        24, 114,
        25, 117,
        26, 119,
-       92, 245,
-       93, 248,
-       94, 250,
-       98, 252,
-       99, 254,
-       103, 255,
-       111, 258,
-       112, 261,
-       113, 263,
-       115, 264,
-       116, 266,
-       118, 267,
-       246, 415,
-       247, 417,
-       249, 418,
-       253, 419,
-       259, 421,
-       260, 423,
-       262, 424,
-       265, 425,
-       416, 541,
-       422, 542
+       92, 255,
+       93, 258,
+       94, 260,
+       98, 262,
+       99, 264,
+       103, 265,
+       111, 268,
+       112, 271,
+       113, 273,
+       115, 274,
+       116, 276,
+       118, 277,
+       256, 444,
+       257, 446,
+       259, 447,
+       263, 448,
+       269, 450,
+       270, 452,
+       272, 453,
+       275, 454,
+       445, 585,
+       451, 586
 };
 static int parser_goto_row5[] = {
        1,
 };
 static int parser_goto_row5[] = {
        1,
@@ -17826,295 +22215,362 @@ static int parser_goto_row6[] = {
        98, 101,
        112, 101,
        115, 101,
        98, 101,
        112, 101,
        115, 101,
-       246, 101,
-       259, 101
+       256, 101,
+       269, 101
 };
 static int parser_goto_row7[] = {
        2,
 };
 static int parser_goto_row7[] = {
        2,
-       -1, 225,
-       154, 307
+       -1, 234,
+       154, 325
 };
 static int parser_goto_row8[] = {
        2,
 };
 static int parser_goto_row8[] = {
        2,
-       -1, 652,
-       579, 682
+       -1, 737,
+       627, 775
 };
 static int parser_goto_row9[] = {
        2,
 };
 static int parser_goto_row9[] = {
        2,
-       -1, 1089,
-       1091, 1227
+       -1, 1306,
+       1308, 1499
 };
 static int parser_goto_row10[] = {
        2,
 };
 static int parser_goto_row10[] = {
        2,
-       -1, 929,
-       1225, 1344
+       -1, 1079,
+       1497, 1664
 };
 static int parser_goto_row11[] = {
 };
 static int parser_goto_row11[] = {
-       9,
-       -1, 653,
-       658, 780,
-       685, 780,
-       766, 780,
-       770, 780,
-       800, 780,
-       803, 780,
-       931, 780,
-       970, 780
+       17,
+       -1, 738,
+       744, 901,
+       778, 901,
+       883, 901,
+       888, 901,
+       909, 901,
+       930, 901,
+       934, 901,
+       942, 901,
+       1081, 901,
+       1089, 901,
+       1136, 901,
+       1159, 901,
+       1167, 901,
+       1177, 901,
+       1317, 901,
+       1391, 901
 };
 static int parser_goto_row12[] = {
 };
 static int parser_goto_row12[] = {
-       17,
-       -1, 654,
-       659, 783,
-       686, 783,
-       767, 783,
-       771, 783,
-       782, 783,
-       801, 783,
-       804, 783,
-       807, 783,
-       932, 783,
-       935, 783,
-       939, 783,
-       971, 783,
-       974, 783,
-       978, 783,
-       1094, 783,
-       1135, 783
+       33,
+       -1, 739,
+       745, 904,
+       779, 904,
+       884, 904,
+       889, 904,
+       903, 904,
+       910, 904,
+       931, 904,
+       935, 904,
+       938, 904,
+       943, 904,
+       1082, 904,
+       1085, 904,
+       1090, 904,
+       1093, 904,
+       1137, 904,
+       1140, 904,
+       1160, 904,
+       1163, 904,
+       1168, 904,
+       1171, 904,
+       1178, 904,
+       1181, 904,
+       1311, 904,
+       1318, 904,
+       1321, 904,
+       1366, 904,
+       1385, 904,
+       1392, 904,
+       1395, 904,
+       1403, 904,
+       1507, 904,
+       1578, 904
 };
 static int parser_goto_row13[] = {
        1,
 };
 static int parser_goto_row13[] = {
        1,
-       -1, 655
+       -1, 740
 };
 static int parser_goto_row14[] = {
 };
 static int parser_goto_row14[] = {
-       1,
-       -1, 777
+       25,
+       -1, 457,
+       567, 718,
+       571, 725,
+       625, 770,
+       1331, 1521,
+       1344, 1539,
+       1517, 1678,
+       1528, 1698,
+       1530, 1703,
+       1540, 1716,
+       1542, 1719,
+       1671, 1791,
+       1673, 1796,
+       1679, 1803,
+       1680, 1805,
+       1720, 1853,
+       1806, 1906,
+       1846, 1950,
+       1902, 1989,
+       1955, 2033,
+       1956, 2034,
+       1990, 2053,
+       1991, 2054,
+       2035, 2081,
+       2055, 2090
 };
 static int parser_goto_row15[] = {
 };
 static int parser_goto_row15[] = {
-       2,
-       -1, 778,
-       777, 946
+       8,
+       -1, 726,
+       625, 771,
+       1342, 1535,
+       1516, 1676,
+       1528, 1699,
+       1532, 1707,
+       1671, 1792,
+       1674, 1798
 };
 static int parser_goto_row16[] = {
 };
 static int parser_goto_row16[] = {
-       4,
-       -1, 1257,
-       1238, 1353,
-       1259, 1385,
-       1354, 1441
+       1,
+       -1, 897
 };
 static int parser_goto_row17[] = {
 };
 static int parser_goto_row17[] = {
+       2,
+       -1, 898,
+       897, 1100
+};
+static int parser_goto_row18[] = {
+       4,
+       -1, 1540,
+       1517, 1679,
+       1542, 1720,
+       1680, 1806
+};
+static int parser_goto_row19[] = {
        20,
        20,
-       -1, 779,
+       -1, 899,
        11, 63,
        22, 63,
        29, 154,
        11, 63,
        22, 63,
        29, 154,
-       97, 251,
-       102, 251,
-       105, 257,
-       256, 420,
-       773, 943,
-       777, 947,
-       778, 949,
-       945, 1108,
-       946, 1110,
-       948, 1112,
-       1109, 1243,
-       1120, 1258,
-       1238, 1258,
-       1255, 1380,
-       1259, 1258,
-       1354, 1258
+       97, 261,
+       102, 261,
+       105, 267,
+       266, 449,
+       892, 1097,
+       897, 1101,
+       898, 1103,
+       1099, 1332,
+       1100, 1334,
+       1102, 1336,
+       1333, 1523,
+       1344, 1541,
+       1517, 1541,
+       1537, 1713,
+       1542, 1541,
+       1680, 1541
 };
 };
-static int parser_goto_row18[] = {
+static int parser_goto_row20[] = {
        10,
        10,
-       -1, 913,
-       223, 399,
-       306, 461,
-       950, 1114,
-       952, 1117,
-       954, 1122,
-       1074, 1213,
-       1102, 1234,
-       1104, 1236,
-       1106, 1240
+       -1, 1061,
+       232, 427,
+       324, 492,
+       1104, 1338,
+       1106, 1341,
+       1108, 1346,
+       1289, 1484,
+       1326, 1513,
+       1328, 1515,
+       1330, 1519
 };
 };
-static int parser_goto_row19[] = {
+static int parser_goto_row21[] = {
        12,
        12,
-       -1, 528,
-       461, 577,
-       952, 1118,
-       954, 1123,
-       1104, 1237,
-       1106, 1241,
-       1114, 1248,
-       1117, 1252,
-       1122, 1262,
-       1234, 1347,
-       1236, 1350,
-       1240, 1357
+       -1, 571,
+       492, 625,
+       1106, 1342,
+       1108, 1347,
+       1328, 1516,
+       1330, 1520,
+       1338, 1528,
+       1341, 1532,
+       1346, 1545,
+       1513, 1671,
+       1515, 1674,
+       1519, 1683
 };
 };
-static int parser_goto_row20[] = {
+static int parser_goto_row22[] = {
        2,
        2,
-       -1, 924,
-       922, 1082
+       -1, 1074,
+       1072, 1298
 };
 };
-static int parser_goto_row21[] = {
+static int parser_goto_row23[] = {
        3,
        3,
-       -1, 752,
-       1083, 1222,
-       1251, 1376
+       -1, 866,
+       1299, 1493,
+       1531, 1705
 };
 };
-static int parser_goto_row22[] = {
+static int parser_goto_row24[] = {
        2,
        2,
-       -1, 908,
-       910, 1072
+       -1, 1056,
+       1058, 1287
 };
 };
-static int parser_goto_row23[] = {
+static int parser_goto_row25[] = {
        2,
        2,
-       -1, 753,
-       1071, 1212
+       -1, 867,
+       1286, 1483
 };
 };
-static int parser_goto_row24[] = {
+static int parser_goto_row26[] = {
        9,
        9,
-       -1, 647,
-       644, 758,
-       904, 1067,
-       1066, 1209,
-       1070, 1211,
-       1210, 1333,
-       1254, 1379,
-       1545, 1599,
-       1600, 1626
+       -1, 732,
+       729, 875,
+       1051, 1281,
+       1280, 1479,
+       1285, 1482,
+       1481, 1653,
+       1536, 1712,
+       1935, 2015,
+       2016, 2066
 };
 };
-static int parser_goto_row25[] = {
+static int parser_goto_row27[] = {
        2,
        2,
-       -1, 648,
-       649, 761
+       -1, 733,
+       734, 878
 };
 };
-static int parser_goto_row26[] = {
+static int parser_goto_row28[] = {
        4,
        4,
-       -1, 926,
-       797, 968,
-       1468, 1544,
-       1511, 1573
+       -1, 1076,
+       927, 1157,
+       1834, 1934,
+       1897, 1985
 };
 };
-static int parser_goto_row27[] = {
+static int parser_goto_row29[] = {
        28,
        28,
-       -1, 642,
-       577, 679,
-       755, 919,
-       794, 965,
-       918, 1079,
-       964, 1130,
-       1123, 1265,
-       1241, 1360,
-       1248, 1372,
-       1262, 1390,
-       1264, 1393,
-       1347, 1433,
-       1357, 1446,
-       1359, 1449,
-       1389, 1481,
-       1392, 1485,
-       1445, 1521,
-       1448, 1525,
-       1465, 1541,
-       1480, 1553,
-       1484, 1556,
-       1508, 1570,
-       1520, 1580,
-       1524, 1583,
-       1540, 1596,
-       1552, 1602,
-       1569, 1612,
-       1579, 1616
+       -1, 727,
+       625, 772,
+       869, 1067,
+       923, 1153,
+       1066, 1294,
+       1152, 1379,
+       1347, 1548,
+       1520, 1686,
+       1528, 1700,
+       1545, 1725,
+       1547, 1728,
+       1671, 1793,
+       1683, 1811,
+       1685, 1814,
+       1724, 1857,
+       1727, 1861,
+       1810, 1910,
+       1813, 1914,
+       1830, 1930,
+       1856, 1960,
+       1860, 1963,
+       1893, 1981,
+       1909, 1995,
+       1913, 1998,
+       1929, 2011,
+       1959, 2036,
+       1980, 2048,
+       1994, 2056
 };
 };
-static int parser_goto_row28[] = {
+static int parser_goto_row30[] = {
        2,
        2,
-       -1, 1076,
-       1077, 1215
+       -1, 1291,
+       1292, 1486
 };
 };
-static int parser_goto_row29[] = {
+static int parser_goto_row31[] = {
        2,
        2,
-       -1, 914,
-       1214, 1334
+       -1, 1062,
+       1485, 1654
 };
 };
-static int parser_goto_row30[] = {
+static int parser_goto_row32[] = {
        1,
        1,
-       -1, 915
+       -1, 1063
 };
 };
-static int parser_goto_row31[] = {
+static int parser_goto_row33[] = {
        1,
        1,
-       -1, 916
+       -1, 1064
 };
 };
-static int parser_goto_row32[] = {
+static int parser_goto_row34[] = {
        1,
        -1, 64
 };
        1,
        -1, 64
 };
-static int parser_goto_row33[] = {
-       61,
+static int parser_goto_row35[] = {
+       65,
        -1, 65,
        -1, 65,
-       528, 643,
-       532, 656,
-       577, 680,
-       579, 683,
-       642, 757,
-       652, 764,
-       679, 796,
-       682, 798,
-       755, 920,
-       794, 966,
-       918, 1080,
-       919, 1081,
-       964, 1131,
-       965, 1132,
-       1079, 1217,
-       1123, 1266,
-       1130, 1272,
-       1241, 1361,
-       1248, 1373,
-       1262, 1391,
-       1264, 1394,
-       1265, 1395,
-       1347, 1434,
-       1357, 1447,
-       1359, 1450,
-       1360, 1451,
-       1372, 1467,
-       1389, 1482,
-       1390, 1483,
-       1392, 1486,
-       1393, 1487,
-       1433, 1510,
-       1445, 1522,
-       1446, 1523,
-       1448, 1526,
-       1449, 1527,
-       1465, 1542,
-       1480, 1554,
-       1481, 1555,
-       1484, 1557,
-       1485, 1558,
-       1508, 1571,
-       1520, 1581,
-       1521, 1582,
-       1524, 1584,
-       1525, 1585,
-       1540, 1597,
-       1541, 1598,
-       1552, 1603,
-       1553, 1604,
-       1556, 1605,
-       1569, 1613,
-       1570, 1614,
-       1579, 1617,
-       1580, 1618,
-       1583, 1619,
-       1596, 1625,
-       1602, 1627,
-       1612, 1634,
-       1616, 1635
+       571, 728,
+       575, 741,
+       625, 773,
+       627, 776,
+       727, 874,
+       737, 881,
+       746, 906,
+       772, 926,
+       775, 928,
+       780, 940,
+       869, 1068,
+       885, 1087,
+       923, 1154,
+       932, 1165,
+       1066, 1295,
+       1067, 1296,
+       1152, 1380,
+       1153, 1381,
+       1294, 1488,
+       1347, 1549,
+       1379, 1571,
+       1520, 1687,
+       1528, 1701,
+       1545, 1726,
+       1547, 1729,
+       1548, 1730,
+       1671, 1794,
+       1683, 1812,
+       1685, 1815,
+       1686, 1816,
+       1700, 1833,
+       1724, 1858,
+       1725, 1859,
+       1727, 1862,
+       1728, 1863,
+       1793, 1896,
+       1810, 1911,
+       1811, 1912,
+       1813, 1915,
+       1814, 1916,
+       1830, 1931,
+       1856, 1961,
+       1857, 1962,
+       1860, 1964,
+       1861, 1965,
+       1893, 1982,
+       1909, 1996,
+       1910, 1997,
+       1913, 1999,
+       1914, 2000,
+       1929, 2012,
+       1930, 2013,
+       1959, 2037,
+       1960, 2038,
+       1963, 2039,
+       1980, 2049,
+       1981, 2050,
+       1994, 2057,
+       1995, 2058,
+       1998, 2059,
+       2011, 2065,
+       2036, 2082,
+       2048, 2089,
+       2056, 2091
 };
 };
-static int parser_goto_row34[] = {
+static int parser_goto_row36[] = {
        5,
        -1, 9,
        16, 96,
        5,
        -1, 9,
        16, 96,
@@ -18122,138 +22578,157 @@ static int parser_goto_row34[] = {
        92, 96,
        111, 96
 };
        92, 96,
        111, 96
 };
-static int parser_goto_row35[] = {
-       18,
-       -1, 736,
-       202, 363,
-       205, 364,
-       276, 432,
-       323, 474,
-       434, 550,
-       447, 560,
-       465, 582,
-       485, 600,
-       754, 917,
-       830, 997,
-       944, 1107,
-       958, 1126,
-       963, 1129,
-       1022, 1170,
-       1214, 917,
-       1426, 1504,
-       1567, 1610
-};
-static int parser_goto_row36[] = {
-       2,
-       -1, 737,
-       735, 856
-};
 static int parser_goto_row37[] = {
 static int parser_goto_row37[] = {
-       2,
-       -1, 858,
-       859, 1023
+       23,
+       -1, 832,
+       210, 392,
+       478, 608,
+       496, 630,
+       518, 650,
+       550, 690,
+       844, 1002,
+       868, 1065,
+       900, 1117,
+       918, 1117,
+       966, 1198,
+       1005, 690,
+       1098, 1331,
+       1114, 690,
+       1142, 1372,
+       1145, 690,
+       1151, 1378,
+       1223, 1436,
+       1353, 1552,
+       1485, 1065,
+       1783, 1889,
+       1978, 2046,
+       2020, 2068
 };
 static int parser_goto_row38[] = {
 };
 static int parser_goto_row38[] = {
-       29,
-       -1, 1119,
-       160, 314,
-       399, 529,
-       461, 529,
-       750, 903,
-       751, 905,
-       760, 925,
-       815, 987,
-       906, 1069,
-       922, 925,
-       928, 1087,
-       1114, 529,
-       1115, 1250,
-       1120, 1259,
-       1121, 1261,
-       1221, 1340,
-       1234, 529,
-       1235, 1349,
-       1238, 1354,
-       1239, 1356,
-       1245, 1366,
-       1247, 1369,
-       1341, 1429,
-       1362, 1453,
-       1364, 1456,
-       1367, 1460,
-       1375, 1469,
-       1454, 1531,
-       1470, 1546
+       4,
+       -1, 833,
+       706, 851,
+       831, 992,
+       850, 1007
 };
 static int parser_goto_row39[] = {
 };
 static int parser_goto_row39[] = {
-       32,
+       2,
+       -1, 994,
+       995, 1224
+};
+static int parser_goto_row40[] = {
+       33,
+       -1, 1343,
+       160, 332,
+       333, 500,
+       427, 572,
+       492, 572,
+       864, 1050,
+       865, 1052,
+       877, 1075,
+       951, 1187,
+       1053, 1283,
+       1054, 1284,
+       1072, 1075,
+       1078, 1303,
+       1188, 1411,
+       1304, 1496,
+       1338, 572,
+       1339, 1530,
+       1344, 1542,
+       1345, 1544,
+       1492, 1660,
+       1513, 572,
+       1514, 1673,
+       1517, 1680,
+       1518, 1682,
+       1525, 1692,
+       1527, 1695,
+       1661, 1786,
+       1688, 1818,
+       1690, 1821,
+       1693, 1825,
+       1704, 1835,
+       1819, 1920,
+       1836, 1936
+};
+static int parser_goto_row41[] = {
+       40,
        -1, 156,
        37, 166,
        -1, 156,
        37, 166,
-       360, 508,
-       504, 618,
-       586, 721,
-       631, 743,
-       641, 756,
-       678, 795,
-       694, 817,
-       696, 166,
-       730, 743,
-       748, 899,
-       841, 1009,
-       853, 899,
-       996, 508,
-       1061, 1205,
-       1084, 1223,
-       1150, 618,
-       1163, 1294,
-       1165, 1205,
-       1218, 1338,
-       1253, 1378,
-       1281, 721,
-       1351, 1437,
-       1371, 1466,
-       1377, 1471,
-       1413, 1497,
-       1432, 1509,
-       1436, 1512,
-       1491, 1009,
-       1607, 1294,
-       1637, 1497
+       379, 541,
+       537, 668,
+       636, 817,
+       713, 856,
+       724, 872,
+       769, 924,
+       790, 953,
+       792, 166,
+       826, 856,
+       861, 1046,
+       873, 1071,
+       925, 1156,
+       977, 1210,
+       989, 1046,
+       1197, 541,
+       1275, 1475,
+       1300, 1494,
+       1416, 668,
+       1429, 1606,
+       1431, 1475,
+       1489, 1658,
+       1534, 1710,
+       1593, 817,
+       1675, 1799,
+       1697, 1831,
+       1706, 1837,
+       1711, 1841,
+       1767, 1881,
+       1790, 1894,
+       1797, 1898,
+       1800, 1901,
+       1832, 1933,
+       1838, 1938,
+       1875, 1210,
+       1895, 1984,
+       1899, 1987,
+       2043, 1606,
+       2095, 1881
 };
 };
-static int parser_goto_row40[] = {
+static int parser_goto_row42[] = {
        1,
        -1, 66
 };
        1,
        -1, 66
 };
-static int parser_goto_row41[] = {
+static int parser_goto_row43[] = {
        8,
        -1, 67,
        8,
        -1, 67,
-       711, 838,
-       744, 893,
-       848, 893,
-       900, 1063,
-       1017, 1063,
-       1206, 1330,
-       1297, 1330
+       807, 974,
+       857, 1040,
+       984, 1040,
+       1047, 1277,
+       1218, 1277,
+       1476, 1650,
+       1609, 1650
 };
 };
-static int parser_goto_row42[] = {
+static int parser_goto_row44[] = {
        7,
        7,
-       -1, 309,
-       509, 621,
-       811, 984,
-       848, 984,
-       1017, 984,
-       1152, 1286,
-       1297, 984
+       -1, 327,
+       542, 671,
+       947, 1184,
+       984, 1184,
+       1218, 1184,
+       1418, 1598,
+       1609, 1184
 };
 };
-static int parser_goto_row43[] = {
+static int parser_goto_row45[] = {
        5,
        5,
-       -1, 227,
-       229, 403,
-       464, 403,
-       1008, 403,
-       1060, 403
+       -1, 236,
+       238, 431,
+       495, 431,
+       1209, 431,
+       1274, 431
 };
 };
-static int parser_goto_row44[] = {
+static int parser_goto_row46[] = {
        25,
        -1, 157,
        11, 68,
        25,
        -1, 157,
        11, 68,
@@ -18261,325 +22736,422 @@ static int parser_goto_row44[] = {
        97, 68,
        102, 68,
        105, 68,
        97, 68,
        102, 68,
        105, 68,
-       158, 310,
-       228, 402,
-       404, 402,
-       463, 402,
-       509, 310,
-       581, 402,
-       585, 707,
-       711, 839,
-       744, 894,
-       811, 310,
-       848, 894,
-       900, 894,
-       1017, 894,
-       1059, 402,
-       1152, 310,
-       1204, 402,
-       1206, 894,
-       1280, 707,
-       1297, 894
+       158, 328,
+       237, 430,
+       432, 430,
+       494, 430,
+       542, 328,
+       629, 430,
+       635, 803,
+       807, 975,
+       857, 1041,
+       947, 328,
+       984, 1041,
+       1047, 1041,
+       1218, 1041,
+       1273, 430,
+       1418, 328,
+       1474, 430,
+       1476, 1041,
+       1592, 803,
+       1609, 1041
 };
 };
-static int parser_goto_row45[] = {
-       20,
+static int parser_goto_row47[] = {
+       24,
        -1, 192,
        42, 194,
        -1, 192,
        42, 194,
-       159, 311,
-       167, 317,
-       699, 823,
-       700, 825,
-       722, 842,
-       745, 895,
-       814, 985,
-       820, 990,
-       850, 1013,
-       901, 1064,
-       1019, 1167,
-       1207, 1331,
-       1295, 1414,
-       1299, 1416,
-       1405, 1492,
-       1498, 1564,
-       1630, 1638,
-       1643, 1646
-};
-static int parser_goto_row46[] = {
-       11,
-       -1, 478,
-       213, 376,
-       348, 499,
-       359, 499,
-       378, 522,
-       501, 522,
-       664, 788,
-       729, 847,
-       734, 847,
-       832, 376,
-       1290, 788
-};
-static int parser_goto_row47[] = {
-       1,
-       -1, 377
+       159, 329,
+       167, 336,
+       684, 840,
+       685, 842,
+       795, 959,
+       796, 961,
+       818, 978,
+       858, 1042,
+       950, 1185,
+       956, 1191,
+       986, 1214,
+       1048, 1278,
+       1110, 1349,
+       1111, 1351,
+       1220, 1433,
+       1477, 1651,
+       1607, 1768,
+       1611, 1770,
+       1759, 1876,
+       1882, 1975,
+       2085, 2096,
+       2102, 2106
 };
 static int parser_goto_row48[] = {
 };
 static int parser_goto_row48[] = {
-       7,
-       -1, 378,
-       354, 501,
-       359, 501,
-       501, 501,
-       734, 501,
-       832, 501,
-       1290, 501
+       11,
+       -1, 511,
+       218, 404,
+       367, 532,
+       378, 532,
+       406, 565,
+       534, 565,
+       751, 914,
+       825, 983,
+       830, 983,
+       968, 404,
+       1602, 914
 };
 static int parser_goto_row49[] = {
 };
 static int parser_goto_row49[] = {
-       2,
-       -1, 521,
-       500, 616
+       1,
+       -1, 405
 };
 static int parser_goto_row50[] = {
        7,
 };
 static int parser_goto_row50[] = {
        7,
-       -1, 897,
-       902, 1065,
-       1020, 1065,
-       1208, 1332,
-       1224, 1343,
-       1300, 1332,
-       1339, 1428
+       -1, 406,
+       373, 534,
+       378, 534,
+       534, 534,
+       830, 534,
+       968, 534,
+       1602, 534
 };
 static int parser_goto_row51[] = {
 };
 static int parser_goto_row51[] = {
-       1,
-       -1, 69
+       2,
+       -1, 564,
+       533, 666
 };
 static int parser_goto_row52[] = {
 };
 static int parser_goto_row52[] = {
-       1,
-       -1, 70
+       7,
+       -1, 1044,
+       1049, 1279,
+       1221, 1279,
+       1478, 1652,
+       1495, 1663,
+       1612, 1652,
+       1659, 1785
 };
 static int parser_goto_row53[] = {
 };
 static int parser_goto_row53[] = {
-       10,
-       -1, 217,
-       212, 374,
-       232, 408,
-       536, 666,
-       663, 787,
-       706, 834,
-       831, 999,
-       836, 1005,
-       1159, 1292,
-       1289, 1409
+       7,
+       -1, 69,
+       550, 691,
+       900, 1118,
+       918, 1118,
+       1005, 691,
+       1114, 691,
+       1145, 691
 };
 static int parser_goto_row54[] = {
 };
 static int parser_goto_row54[] = {
-       1,
-       -1, 71
+       5,
+       -1, 70,
+       550, 692,
+       1005, 692,
+       1114, 692,
+       1145, 692
 };
 static int parser_goto_row55[] = {
 };
 static int parser_goto_row55[] = {
-       1,
-       -1, 72
+       15,
+       -1, 222,
+       217, 402,
+       241, 436,
+       579, 753,
+       750, 913,
+       802, 970,
+       967, 1200,
+       972, 1206,
+       1116, 1357,
+       1355, 1555,
+       1360, 1560,
+       1425, 1604,
+       1601, 1763,
+       1737, 1868,
+       1866, 1967
 };
 static int parser_goto_row56[] = {
 };
 static int parser_goto_row56[] = {
-       3,
-       -1, 708,
-       711, 840,
-       838, 1007
+       7,
+       -1, 71,
+       550, 693,
+       900, 1119,
+       918, 1119,
+       1005, 693,
+       1114, 693,
+       1145, 693
 };
 static int parser_goto_row57[] = {
        1,
 };
 static int parser_goto_row57[] = {
        1,
-       -1, 73
+       -1, 72
 };
 static int parser_goto_row58[] = {
 };
 static int parser_goto_row58[] = {
-       1,
-       -1, 74
+       3,
+       -1, 804,
+       807, 976,
+       974, 1208
 };
 static int parser_goto_row59[] = {
 };
 static int parser_goto_row59[] = {
-       1,
-       -1, 75
+       7,
+       -1, 73,
+       550, 694,
+       900, 1120,
+       918, 1120,
+       1005, 694,
+       1114, 694,
+       1145, 694
 };
 static int parser_goto_row60[] = {
 };
 static int parser_goto_row60[] = {
-       1,
-       -1, 76
+       7,
+       -1, 74,
+       550, 695,
+       900, 1121,
+       918, 1121,
+       1005, 695,
+       1114, 695,
+       1145, 695
 };
 static int parser_goto_row61[] = {
 };
 static int parser_goto_row61[] = {
+       7,
+       -1, 75,
+       550, 696,
+       900, 1122,
+       918, 1122,
+       1005, 696,
+       1114, 696,
+       1145, 696
+};
+static int parser_goto_row62[] = {
+       7,
+       -1, 76,
+       550, 697,
+       900, 1123,
+       918, 1123,
+       1005, 697,
+       1114, 697,
+       1145, 697
+};
+static int parser_goto_row63[] = {
        2,
        -1, 197,
        2,
        -1, 197,
-       702, 827
+       798, 963
 };
 };
-static int parser_goto_row62[] = {
-       45,
-       -1, 898,
+static int parser_goto_row64[] = {
+       71,
+       -1, 1045,
        40, 180,
        41, 193,
        42, 195,
        44, 198,
        40, 180,
        41, 193,
        42, 195,
        44, 198,
-       192, 351,
-       194, 352,
-       197, 356,
-       214, 379,
-       217, 380,
-       373, 517,
-       374, 518,
-       407, 537,
-       408, 538,
-       466, 583,
-       513, 625,
-       584, 688,
-       665, 789,
-       666, 790,
-       698, 180,
-       699, 193,
-       700, 195,
-       702, 198,
-       762, 927,
-       786, 959,
-       787, 960,
-       797, 927,
-       823, 351,
-       825, 352,
-       827, 356,
-       833, 379,
-       834, 380,
-       998, 517,
-       999, 518,
-       1004, 537,
-       1005, 538,
-       1144, 583,
-       1154, 625,
-       1279, 688,
-       1291, 789,
-       1292, 790,
-       1408, 959,
-       1409, 960,
-       1468, 927,
-       1511, 927
+       192, 370,
+       194, 371,
+       197, 375,
+       219, 407,
+       222, 408,
+       401, 560,
+       402, 561,
+       435, 580,
+       436, 581,
+       497, 631,
+       555, 707,
+       632, 782,
+       633, 783,
+       683, 839,
+       684, 841,
+       685, 843,
+       752, 915,
+       753, 916,
+       784, 944,
+       794, 180,
+       795, 193,
+       796, 195,
+       798, 198,
+       840, 1000,
+       842, 1001,
+       879, 1077,
+       912, 1143,
+       913, 1144,
+       927, 1077,
+       959, 370,
+       961, 371,
+       963, 375,
+       969, 407,
+       970, 408,
+       1109, 1348,
+       1110, 1350,
+       1111, 1352,
+       1199, 560,
+       1200, 561,
+       1205, 580,
+       1206, 581,
+       1226, 1438,
+       1349, 1550,
+       1351, 1551,
+       1356, 1556,
+       1357, 1557,
+       1408, 631,
+       1420, 707,
+       1554, 1734,
+       1555, 1735,
+       1559, 1738,
+       1560, 1739,
+       1589, 782,
+       1590, 783,
+       1603, 915,
+       1604, 916,
+       1731, 1864,
+       1756, 944,
+       1762, 1143,
+       1763, 1144,
+       1834, 1077,
+       1867, 1968,
+       1868, 1969,
+       1897, 1077,
+       1966, 2040,
+       1967, 2041
 };
 };
-static int parser_goto_row63[] = {
+static int parser_goto_row65[] = {
        74,
        -1, 181,
        44, 199,
        74,
        -1, 181,
        44, 199,
-       52, 207,
-       164, 315,
-       165, 316,
+       52, 212,
+       164, 334,
+       165, 335,
        197, 199,
        197, 199,
-       209, 369,
-       239, 412,
-       274, 430,
-       282, 437,
-       321, 472,
-       405, 437,
-       409, 539,
-       429, 437,
-       698, 199,
-       699, 199,
-       700, 199,
-       702, 199,
-       724, 844,
-       740, 862,
-       791, 961,
-       816, 988,
-       818, 989,
-       823, 199,
-       825, 199,
-       827, 199,
-       833, 199,
-       834, 199,
-       846, 1012,
-       852, 199,
-       874, 1035,
-       998, 199,
-       999, 199,
-       1004, 199,
-       1005, 199,
-       1010, 1162,
-       1020, 199,
-       1027, 1171,
-       1144, 199,
-       1154, 199,
-       1279, 199,
-       1291, 199,
-       1292, 199,
-       1300, 199,
-       1381, 1474,
-       1386, 1478,
-       1407, 1494,
+       214, 397,
+       248, 441,
+       284, 461,
+       296, 468,
+       340, 505,
+       433, 468,
+       437, 582,
+       460, 468,
+       550, 698,
+       794, 199,
+       795, 199,
+       796, 199,
+       798, 199,
+       820, 980,
+       853, 1009,
+       920, 1149,
+       952, 1189,
+       954, 1190,
+       959, 199,
+       961, 199,
+       963, 199,
+       969, 199,
+       970, 199,
+       982, 1213,
+       988, 199,
+       1005, 698,
+       1021, 1245,
+       1114, 698,
+       1145, 698,
+       1199, 199,
+       1200, 199,
+       1205, 199,
+       1206, 199,
+       1211, 1428,
+       1221, 199,
+       1233, 1441,
        1408, 199,
        1408, 199,
-       1409, 199,
-       1415, 1499,
-       1438, 1514,
-       1442, 1518,
-       1457, 1534,
-       1461, 1538,
-       1475, 1548,
-       1476, 1549,
-       1479, 1551,
-       1500, 1565,
-       1515, 1575,
-       1516, 1576,
-       1519, 1578,
-       1528, 1586,
-       1532, 1590,
-       1535, 1592,
-       1536, 1593,
-       1539, 1595,
-       1550, 1601,
-       1562, 1606,
-       1577, 1615,
-       1587, 1620,
-       1588, 1621,
-       1591, 1623,
-       1594, 1624,
-       1622, 1636
+       1420, 199,
+       1589, 199,
+       1590, 199,
+       1603, 199,
+       1604, 199,
+       1612, 199,
+       1721, 1854,
+       1756, 199,
+       1761, 1878,
+       1762, 199,
+       1763, 199,
+       1769, 1883,
+       1807, 1907,
+       1822, 1923,
+       1826, 1927,
+       1855, 1958,
+       1884, 1976,
+       1908, 1993,
+       1917, 2001,
+       1921, 2005,
+       1924, 2007,
+       1925, 2008,
+       1928, 2010,
+       1940, 2018,
+       1973, 2042,
+       2002, 2060,
+       2003, 2061,
+       2006, 2063,
+       2009, 2064,
+       2062, 2092,
+       2100, 2105
 };
 };
-static int parser_goto_row64[] = {
+static int parser_goto_row66[] = {
        1,
        -1, 182
 };
        1,
        -1, 182
 };
-static int parser_goto_row65[] = {
+static int parser_goto_row67[] = {
        5,
        -1, 183,
        5,
        -1, 183,
-       322, 473,
-       479, 594,
-       481, 596,
-       595, 728
+       341, 506,
+       512, 644,
+       514, 646,
+       645, 824
 };
 };
-static int parser_goto_row66[] = {
+static int parser_goto_row68[] = {
        1,
        -1, 184
 };
        1,
        -1, 184
 };
-static int parser_goto_row67[] = {
-       11,
+static int parser_goto_row69[] = {
+       33,
        -1, 185,
        -1, 185,
-       482, 597,
-       483, 598,
-       484, 599,
-       488, 603,
-       489, 604,
-       490, 605,
-       491, 606,
-       492, 607,
-       493, 608,
-       494, 609
+       515, 647,
+       516, 648,
+       517, 649,
+       521, 653,
+       522, 654,
+       523, 655,
+       524, 656,
+       525, 657,
+       526, 658,
+       527, 659,
+       1714, 1845,
+       1801, 1845,
+       1850, 1845,
+       1851, 1845,
+       1903, 1845,
+       1904, 1845,
+       1941, 1845,
+       1957, 1845,
+       1992, 1845,
+       2021, 2069,
+       2022, 2070,
+       2023, 2071,
+       2024, 2072,
+       2025, 2073,
+       2026, 2074,
+       2027, 2075,
+       2028, 1845,
+       2030, 1845,
+       2031, 2079,
+       2032, 2080,
+       2077, 1845,
+       2110, 1845
 };
 };
-static int parser_goto_row68[] = {
+static int parser_goto_row70[] = {
        3,
        -1, 186,
        3,
        -1, 186,
-       486, 601,
-       487, 602
+       519, 651,
+       520, 652
 };
 };
-static int parser_goto_row69[] = {
+static int parser_goto_row71[] = {
        6,
        -1, 187,
        6,
        -1, 187,
-       324, 475,
-       327, 477,
-       495, 610,
-       496, 611,
-       497, 612
+       343, 508,
+       346, 510,
+       528, 660,
+       529, 661,
+       530, 662
 };
 };
-static int parser_goto_row70[] = {
+static int parser_goto_row72[] = {
        1,
        -1, 188
 };
        1,
        -1, 188
 };
-static int parser_goto_row71[] = {
-       111,
-       -1, 208,
+static int parser_goto_row73[] = {
+       149,
+       -1, 213,
        11, 77,
        22, 77,
        30, 77,
        11, 77,
        22, 77,
        30, 77,
@@ -18592,288 +23164,444 @@ static int parser_goto_row71[] = {
        102, 77,
        105, 77,
        158, 77,
        102, 77,
        105, 77,
        158, 77,
-       176, 326,
+       176, 345,
        192, 189,
        194, 189,
        197, 200,
        192, 189,
        194, 189,
        197, 200,
-       214, 189,
-       217, 189,
-       228, 77,
-       360, 77,
-       373, 189,
-       374, 189,
-       404, 77,
-       407, 189,
-       408, 189,
-       463, 77,
-       466, 189,
-       504, 77,
-       509, 77,
-       513, 189,
-       581, 77,
-       584, 189,
-       585, 709,
-       586, 77,
-       631, 77,
-       641, 77,
-       665, 189,
-       666, 189,
-       678, 77,
-       691, 709,
-       694, 77,
-       696, 709,
-       698, 200,
-       699, 200,
-       700, 200,
-       702, 200,
-       711, 77,
-       730, 709,
-       744, 77,
-       747, 189,
-       748, 77,
-       762, 189,
-       786, 189,
-       787, 189,
-       797, 189,
-       811, 77,
-       823, 200,
-       825, 200,
-       827, 200,
-       833, 200,
-       834, 200,
-       841, 77,
-       848, 77,
-       852, 200,
-       853, 709,
-       900, 77,
-       902, 189,
-       996, 709,
-       998, 200,
-       999, 200,
-       1004, 200,
-       1005, 200,
-       1017, 77,
-       1020, 200,
-       1059, 77,
-       1061, 77,
-       1084, 77,
-       1144, 200,
-       1150, 709,
-       1152, 77,
-       1154, 200,
-       1163, 77,
-       1165, 709,
-       1204, 77,
-       1206, 77,
-       1208, 189,
+       219, 189,
+       222, 189,
+       237, 77,
+       379, 77,
+       401, 189,
+       402, 189,
+       432, 77,
+       435, 189,
+       436, 189,
+       494, 77,
+       497, 189,
+       537, 77,
+       542, 77,
+       550, 699,
+       555, 189,
+       629, 77,
+       632, 189,
+       633, 189,
+       635, 805,
+       636, 77,
+       683, 189,
+       684, 189,
+       685, 189,
+       713, 77,
+       724, 77,
+       752, 189,
+       753, 189,
+       769, 77,
+       784, 189,
+       787, 805,
+       790, 77,
+       792, 805,
+       794, 200,
+       795, 200,
+       796, 200,
+       798, 200,
+       807, 77,
+       826, 805,
+       840, 189,
+       842, 189,
+       857, 77,
+       860, 189,
+       861, 77,
+       873, 77,
+       879, 189,
+       912, 189,
+       913, 189,
+       925, 77,
+       927, 189,
+       947, 77,
+       959, 200,
+       961, 200,
+       963, 200,
+       969, 200,
+       970, 200,
+       977, 77,
+       984, 77,
+       988, 200,
+       989, 805,
+       1005, 699,
+       1047, 77,
+       1049, 189,
+       1109, 189,
+       1110, 189,
+       1111, 189,
+       1114, 699,
+       1145, 699,
+       1197, 805,
+       1199, 200,
+       1200, 200,
+       1205, 200,
+       1206, 200,
        1218, 77,
        1218, 77,
-       1224, 189,
-       1253, 77,
-       1279, 200,
-       1280, 709,
-       1281, 709,
-       1291, 200,
-       1292, 200,
-       1297, 77,
-       1300, 200,
-       1339, 189,
-       1351, 77,
-       1371, 77,
-       1377, 77,
+       1221, 200,
+       1226, 189,
+       1273, 77,
+       1275, 77,
+       1300, 77,
+       1349, 189,
+       1351, 189,
+       1356, 189,
+       1357, 189,
        1408, 200,
        1408, 200,
-       1409, 200,
-       1413, 77,
-       1432, 77,
-       1436, 77,
-       1468, 189,
-       1491, 709,
-       1511, 189,
-       1607, 709,
-       1637, 709
+       1416, 805,
+       1418, 77,
+       1420, 200,
+       1429, 77,
+       1431, 805,
+       1474, 77,
+       1476, 77,
+       1478, 189,
+       1489, 77,
+       1495, 189,
+       1534, 77,
+       1554, 189,
+       1555, 189,
+       1559, 189,
+       1560, 189,
+       1589, 200,
+       1590, 200,
+       1592, 805,
+       1593, 805,
+       1603, 200,
+       1604, 200,
+       1609, 77,
+       1612, 200,
+       1659, 189,
+       1675, 77,
+       1697, 77,
+       1706, 77,
+       1711, 77,
+       1731, 189,
+       1756, 200,
+       1762, 200,
+       1763, 200,
+       1767, 77,
+       1790, 77,
+       1797, 77,
+       1800, 77,
+       1832, 77,
+       1834, 189,
+       1838, 77,
+       1867, 189,
+       1868, 189,
+       1875, 805,
+       1895, 77,
+       1897, 189,
+       1899, 77,
+       1966, 189,
+       1967, 189,
+       2043, 805,
+       2095, 805
 };
 };
-static int parser_goto_row72[] = {
-       60,
+static int parser_goto_row74[] = {
+       62,
        -1, 78,
        28, 141,
        46, 141,
        55, 141,
        132, 141,
        -1, 78,
        28, 141,
        46, 141,
        55, 141,
        132, 141,
-       240, 141,
-       275, 141,
-       277, 141,
-       283, 141,
-       441, 141,
-       443, 141,
-       444, 141,
-       445, 141,
-       446, 141,
-       448, 141,
-       449, 141,
-       450, 141,
-       451, 141,
-       452, 141,
-       453, 141,
-       454, 141,
-       455, 141,
-       456, 141,
-       457, 141,
-       458, 141,
-       459, 141,
-       533, 141,
-       535, 141,
-       555, 141,
-       690, 141,
-       703, 141,
-       705, 141,
-       741, 882,
-       837, 141,
-       873, 882,
-       1028, 882,
-       1030, 882,
-       1036, 882,
-       1157, 141,
-       1158, 141,
-       1184, 882,
-       1186, 882,
-       1187, 882,
-       1188, 882,
-       1189, 882,
-       1191, 882,
-       1192, 882,
-       1193, 882,
-       1194, 882,
-       1195, 882,
-       1196, 882,
-       1197, 882,
-       1198, 882,
-       1199, 882,
-       1200, 882,
-       1201, 882,
-       1202, 882,
-       1308, 882,
-       1398, 141,
-       1639, 882
+       250, 141,
+       285, 141,
+       287, 141,
+       297, 141,
+       472, 141,
+       474, 141,
+       475, 141,
+       476, 141,
+       477, 141,
+       479, 141,
+       480, 141,
+       481, 141,
+       482, 141,
+       483, 141,
+       484, 141,
+       485, 141,
+       486, 141,
+       487, 141,
+       488, 141,
+       489, 141,
+       490, 141,
+       576, 141,
+       578, 141,
+       603, 141,
+       786, 141,
+       799, 141,
+       801, 141,
+       854, 1029,
+       900, 141,
+       918, 141,
+       973, 141,
+       1020, 1029,
+       1234, 1029,
+       1236, 1029,
+       1246, 1029,
+       1423, 141,
+       1424, 141,
+       1454, 1029,
+       1456, 1029,
+       1457, 1029,
+       1458, 1029,
+       1459, 1029,
+       1461, 1029,
+       1462, 1029,
+       1463, 1029,
+       1464, 1029,
+       1465, 1029,
+       1466, 1029,
+       1467, 1029,
+       1468, 1029,
+       1469, 1029,
+       1470, 1029,
+       1471, 1029,
+       1472, 1029,
+       1626, 1029,
+       1745, 141,
+       2097, 1029
 };
 };
-static int parser_goto_row73[] = {
+static int parser_goto_row75[] = {
        1,
        -1, 79
 };
        1,
        -1, 79
 };
-static int parser_goto_row74[] = {
+static int parser_goto_row76[] = {
        1,
        -1, 80
 };
        1,
        -1, 80
 };
-static int parser_goto_row75[] = {
+static int parser_goto_row77[] = {
        2,
        2,
-       -1, 235,
-       238, 410
+       -1, 244,
+       247, 439
 };
 };
-static int parser_goto_row76[] = {
+static int parser_goto_row78[] = {
        1,
        1,
-       -1, 236
+       -1, 245
 };
 };
-static int parser_goto_row77[] = {
+static int parser_goto_row79[] = {
        2,
        2,
-       -1, 237,
-       238, 411
+       -1, 246,
+       247, 440
 };
 };
-static int parser_goto_row78[] = {
-       39,
+static int parser_goto_row80[] = {
+       50,
+       -1, 700,
+       47, 206,
+       48, 207,
+       49, 208,
+       50, 209,
+       57, 223,
+       58, 224,
+       59, 225,
+       60, 226,
+       81, 249,
+       128, 289,
+       129, 290,
+       130, 291,
+       131, 292,
+       137, 299,
+       138, 300,
+       139, 301,
+       140, 302,
+       160, 333,
+       246, 438,
+       389, 551,
+       391, 554,
+       394, 556,
+       440, 583,
+       552, 705,
+       688, 554,
+       846, 1004,
+       865, 1053,
+       900, 1124,
+       918, 1146,
+       951, 1188,
+       1016, 1238,
+       1017, 1239,
+       1018, 1240,
+       1019, 1241,
+       1025, 1248,
+       1026, 1249,
+       1027, 1250,
+       1028, 1251,
+       1060, 554,
+       1078, 1304,
+       1230, 1440,
+       1439, 1614,
+       1449, 1622,
+       1452, 1623,
+       1453, 1624,
+       1553, 1732,
+       1567, 1743,
+       1632, 1778,
+       1777, 1886
+};
+static int parser_goto_row81[] = {
+       3,
+       -1, 548,
+       205, 388,
+       837, 999
+};
+static int parser_goto_row82[] = {
+       3,
+       -1, 870,
+       456, 589,
+       1533, 1708
+};
+static int parser_goto_row83[] = {
+       3,
+       -1, 590,
+       386, 549,
+       675, 834
+};
+static int parser_goto_row84[] = {
+       3,
+       -1, 756,
+       871, 1069,
+       1709, 1839
+};
+static int parser_goto_row85[] = {
+       2,
+       -1, 757,
+       759, 919
+};
+static int parser_goto_row86[] = {
+       2,
+       -1, 680,
+       681, 838
+};
+static int parser_goto_row87[] = {
+       3,
+       -1, 701,
+       1114, 1354,
+       1145, 1373
+};
+static int parser_goto_row88[] = {
+       3,
+       -1, 848,
+       849, 1006,
+       1362, 1006
+};
+static int parser_goto_row89[] = {
+       2,
+       -1, 702,
+       1005, 1228
+};
+static int parser_goto_row90[] = {
+       3,
+       -1, 389,
+       545, 676,
+       758, 918
+};
+static int parser_goto_row91[] = {
+       43,
        -1, 142,
        46, 203,
        -1, 142,
        46, 203,
-       55, 212,
-       122, 273,
-       127, 278,
-       135, 284,
+       55, 217,
+       122, 283,
+       127, 288,
+       135, 298,
        175, 203,
        175, 203,
-       178, 328,
-       196, 354,
-       206, 365,
-       240, 413,
-       285, 440,
-       349, 413,
-       355, 354,
-       432, 549,
-       474, 592,
-       533, 660,
-       535, 663,
-       573, 674,
-       575, 676,
-       613, 660,
-       614, 729,
-       619, 734,
-       626, 739,
-       703, 203,
-       705, 831,
-       738, 861,
-       792, 962,
-       837, 413,
-       863, 1026,
-       868, 1031,
-       876, 1037,
-       1038, 1181,
-       1157, 660,
-       1158, 1289,
-       1175, 1304,
-       1326, 1422,
-       1328, 1424,
-       1501, 1566
+       178, 347,
+       196, 373,
+       211, 393,
+       250, 442,
+       303, 471,
+       368, 442,
+       374, 373,
+       463, 597,
+       507, 642,
+       576, 747,
+       578, 750,
+       621, 765,
+       623, 767,
+       663, 747,
+       664, 825,
+       669, 830,
+       689, 217,
+       708, 852,
+       799, 203,
+       801, 967,
+       836, 998,
+       921, 1150,
+       973, 442,
+       1010, 1232,
+       1015, 1237,
+       1023, 1247,
+       1115, 1355,
+       1227, 750,
+       1252, 1451,
+       1423, 747,
+       1424, 1601,
+       1445, 1619,
+       1646, 1779,
+       1648, 1781,
+       1736, 1866,
+       1885, 1977
 };
 };
-static int parser_goto_row79[] = {
+static int parser_goto_row92[] = {
        12,
        -1, 143,
        46, 204,
        12,
        -1, 143,
        46, 204,
-       55, 213,
-       240, 414,
-       533, 661,
-       535, 664,
-       690, 809,
-       703, 829,
-       705, 832,
-       837, 1006,
-       1157, 1288,
-       1158, 1290
+       55, 218,
+       250, 443,
+       576, 748,
+       578, 751,
+       786, 945,
+       799, 965,
+       801, 968,
+       973, 1207,
+       1423, 1600,
+       1424, 1602
 };
 };
-static int parser_goto_row80[] = {
-       9,
+static int parser_goto_row93[] = {
+       11,
        -1, 81,
        -1, 81,
-       77, 232,
-       153, 305,
-       189, 348,
-       200, 359,
-       208, 368,
-       281, 305,
-       326, 368,
-       709, 836
+       77, 241,
+       153, 323,
+       189, 367,
+       200, 378,
+       213, 396,
+       295, 323,
+       345, 396,
+       699, 241,
+       805, 972,
+       1128, 1360
 };
 };
-static int parser_goto_row81[] = {
+static int parser_goto_row94[] = {
        3,
        3,
-       -1, 370,
-       282, 438,
-       429, 546
+       -1, 398,
+       296, 469,
+       460, 594
 };
 };
-static int parser_goto_row82[] = {
+static int parser_goto_row95[] = {
        2,
        2,
-       -1, 629,
-       630, 742
+       -1, 711,
+       712, 855
 };
 };
-static int parser_goto_row83[] = {
+static int parser_goto_row96[] = {
        8,
        8,
-       -1, 320,
-       318, 470,
-       521, 634,
-       616, 733,
-       632, 746,
-       731, 851,
-       821, 992,
-       991, 1148
+       -1, 339,
+       337, 503,
+       564, 716,
+       666, 829,
+       714, 859,
+       827, 987,
+       957, 1193,
+       1192, 1414
 };
 };
-static int parser_goto_row84[] = {
+static int parser_goto_row97[] = {
        2,
        2,
-       -1, 270,
-       381, 524
+       -1, 280,
+       409, 567
 };
 };
-static int parser_goto_row85[] = {
-       117,
+static int parser_goto_row98[] = {
+       127,
        -1, 190,
        11, 82,
        22, 82,
        -1, 190,
        11, 82,
        22, 82,
@@ -18887,133 +23615,158 @@ static int parser_goto_row85[] = {
        105, 82,
        132, 144,
        158, 82,
        105, 82,
        132, 144,
        158, 82,
-       228, 82,
-       240, 144,
-       275, 144,
-       277, 144,
-       283, 144,
-       360, 82,
-       404, 82,
-       441, 144,
-       443, 144,
-       444, 144,
-       445, 144,
-       446, 144,
-       448, 144,
-       449, 144,
-       450, 144,
-       451, 144,
-       452, 144,
-       453, 144,
-       454, 144,
-       455, 144,
-       456, 144,
-       457, 144,
-       458, 144,
-       459, 144,
-       463, 82,
-       504, 82,
-       509, 82,
-       533, 144,
-       535, 144,
-       555, 144,
-       581, 82,
-       585, 710,
-       586, 82,
-       631, 82,
-       641, 82,
-       678, 82,
-       690, 144,
-       691, 710,
-       694, 82,
-       696, 710,
-       703, 144,
-       705, 144,
-       711, 82,
-       730, 710,
-       741, 883,
-       744, 82,
-       748, 82,
-       811, 82,
-       837, 144,
-       841, 82,
-       848, 82,
-       853, 710,
-       873, 883,
-       900, 82,
-       996, 710,
-       1017, 82,
-       1028, 883,
-       1030, 883,
-       1036, 883,
-       1059, 82,
-       1061, 82,
-       1084, 82,
-       1150, 710,
-       1152, 82,
-       1157, 144,
-       1158, 144,
-       1163, 82,
-       1165, 710,
-       1184, 883,
-       1186, 883,
-       1187, 883,
-       1188, 883,
-       1189, 883,
-       1191, 883,
-       1192, 883,
-       1193, 883,
-       1194, 883,
-       1195, 883,
-       1196, 883,
-       1197, 883,
-       1198, 883,
-       1199, 883,
-       1200, 883,
-       1201, 883,
-       1202, 883,
-       1204, 82,
-       1206, 82,
+       237, 82,
+       250, 144,
+       285, 144,
+       287, 144,
+       297, 144,
+       379, 82,
+       432, 82,
+       472, 144,
+       474, 144,
+       475, 144,
+       476, 144,
+       477, 144,
+       479, 144,
+       480, 144,
+       481, 144,
+       482, 144,
+       483, 144,
+       484, 144,
+       485, 144,
+       486, 144,
+       487, 144,
+       488, 144,
+       489, 144,
+       490, 144,
+       494, 82,
+       537, 82,
+       542, 82,
+       576, 144,
+       578, 144,
+       603, 144,
+       629, 82,
+       635, 806,
+       636, 82,
+       713, 82,
+       724, 82,
+       769, 82,
+       786, 144,
+       787, 806,
+       790, 82,
+       792, 806,
+       799, 144,
+       801, 144,
+       807, 82,
+       826, 806,
+       854, 1030,
+       857, 82,
+       861, 82,
+       873, 82,
+       900, 144,
+       918, 144,
+       925, 82,
+       947, 82,
+       973, 144,
+       977, 82,
+       984, 82,
+       989, 806,
+       1020, 1030,
+       1047, 82,
+       1197, 806,
        1218, 82,
        1218, 82,
-       1253, 82,
-       1280, 710,
-       1281, 710,
-       1297, 82,
-       1308, 883,
-       1351, 82,
-       1371, 82,
-       1377, 82,
-       1398, 144,
-       1413, 82,
-       1432, 82,
-       1436, 82,
-       1491, 710,
-       1607, 710,
-       1637, 710,
-       1639, 883
+       1234, 1030,
+       1236, 1030,
+       1246, 1030,
+       1273, 82,
+       1275, 82,
+       1300, 82,
+       1416, 806,
+       1418, 82,
+       1423, 144,
+       1424, 144,
+       1429, 82,
+       1431, 806,
+       1454, 1030,
+       1456, 1030,
+       1457, 1030,
+       1458, 1030,
+       1459, 1030,
+       1461, 1030,
+       1462, 1030,
+       1463, 1030,
+       1464, 1030,
+       1465, 1030,
+       1466, 1030,
+       1467, 1030,
+       1468, 1030,
+       1469, 1030,
+       1470, 1030,
+       1471, 1030,
+       1472, 1030,
+       1474, 82,
+       1476, 82,
+       1489, 82,
+       1534, 82,
+       1592, 806,
+       1593, 806,
+       1609, 82,
+       1626, 1030,
+       1675, 82,
+       1697, 82,
+       1706, 82,
+       1711, 82,
+       1745, 144,
+       1767, 82,
+       1790, 82,
+       1797, 82,
+       1800, 82,
+       1832, 82,
+       1838, 82,
+       1875, 806,
+       1895, 82,
+       1899, 82,
+       2043, 806,
+       2095, 806,
+       2097, 1030
 };
 };
-static int parser_goto_row86[] = {
+static int parser_goto_row99[] = {
        4,
        -1, 83,
        4,
        -1, 83,
-       85, 242,
-       271, 242,
-       544, 242
+       85, 252,
+       281, 252,
+       588, 252
 };
 };
-static int parser_goto_row87[] = {
+static int parser_goto_row100[] = {
        2,
        -1, 84,
        2,
        -1, 84,
-       85, 243
+       85, 253
 };
 };
-static int parser_goto_row88[] = {
-       5,
-       -1, 89,
-       270, 427,
-       523, 635,
-       524, 636,
-       655, 768
+static int parser_goto_row101[] = {
+       20,
+       -1, 871,
+       14, 89,
+       280, 458,
+       456, 591,
+       457, 592,
+       566, 717,
+       567, 719,
+       718, 863,
+       740, 886,
+       900, 1125,
+       918, 1147,
+       1124, 1358,
+       1129, 1361,
+       1146, 1374,
+       1148, 1375,
+       1533, 1709,
+       1553, 1733,
+       1567, 1744,
+       1732, 1865,
+       1743, 1870
 };
 };
-static int parser_goto_row89[] = {
-       82,
+static int parser_goto_row102[] = {
+       90,
        -1, 120,
        0, 10,
        4, 10,
        -1, 120,
        0, 10,
        4, 10,
@@ -19027,7 +23780,7 @@ static int parser_goto_row89[] = {
        26, 10,
        30, 158,
        37, 158,
        26, 10,
        30, 158,
        37, 158,
-       68, 228,
+       68, 237,
        92, 10,
        93, 10,
        94, 10,
        92, 10,
        93, 10,
        94, 10,
@@ -19040,674 +23793,654 @@ static int parser_goto_row89[] = {
        115, 10,
        116, 10,
        118, 10,
        115, 10,
        116, 10,
        118, 10,
-       229, 404,
-       246, 10,
-       247, 10,
-       249, 10,
-       253, 10,
+       238, 432,
+       256, 10,
+       257, 10,
        259, 10,
        259, 10,
-       260, 10,
-       262, 10,
-       265, 10,
-       310, 463,
-       360, 509,
-       416, 10,
-       422, 10,
-       464, 581,
-       504, 509,
-       585, 711,
-       586, 158,
-       631, 744,
-       641, 509,
-       678, 509,
-       691, 811,
-       694, 509,
-       696, 811,
-       730, 848,
-       748, 900,
-       839, 228,
-       841, 509,
-       853, 1017,
-       894, 1059,
-       924, 1086,
-       996, 1152,
-       1008, 404,
-       1060, 1204,
-       1061, 1206,
-       1082, 1220,
-       1084, 509,
-       1150, 1152,
-       1163, 158,
-       1165, 1297,
-       1218, 509,
-       1223, 1342,
-       1253, 509,
-       1280, 711,
-       1281, 811,
-       1338, 1427,
-       1343, 1430,
-       1351, 509,
-       1371, 509,
-       1377, 509,
-       1413, 158,
-       1428, 1505,
-       1432, 509,
-       1436, 509,
-       1491, 1152,
-       1607, 811,
-       1637, 811
+       263, 10,
+       269, 10,
+       270, 10,
+       272, 10,
+       275, 10,
+       328, 494,
+       379, 542,
+       445, 10,
+       451, 10,
+       495, 629,
+       537, 542,
+       635, 807,
+       636, 158,
+       713, 857,
+       724, 542,
+       769, 542,
+       787, 947,
+       790, 542,
+       792, 947,
+       826, 984,
+       861, 1047,
+       873, 542,
+       925, 542,
+       975, 237,
+       977, 542,
+       989, 1218,
+       1041, 1273,
+       1074, 1302,
+       1197, 1418,
+       1209, 432,
+       1274, 1474,
+       1275, 1476,
+       1298, 1491,
+       1300, 542,
+       1416, 1418,
+       1429, 158,
+       1431, 1609,
+       1489, 542,
+       1494, 1662,
+       1534, 542,
+       1592, 807,
+       1593, 947,
+       1658, 1784,
+       1663, 1787,
+       1675, 542,
+       1697, 542,
+       1706, 542,
+       1711, 542,
+       1767, 158,
+       1785, 1890,
+       1790, 542,
+       1797, 542,
+       1800, 542,
+       1832, 542,
+       1838, 542,
+       1875, 1418,
+       1895, 542,
+       1899, 542,
+       2043, 947,
+       2095, 947
 };
 };
-static int parser_goto_row90[] = {
-       302,
+static int parser_goto_row103[] = {
+       369,
        -1, 105,
        0, 11,
        -1, 105,
        0, 11,
-       4, 22,
-       15, 22,
-       16, 97,
-       17, 102,
-       23, 22,
-       24, 97,
-       25, 102,
-       27, 121,
-       32, 161,
-       33, 162,
-       34, 163,
-       35, 164,
-       36, 165,
-       38, 168,
-       45, 202,
-       53, 209,
-       80, 239,
-       92, 97,
-       93, 102,
-       98, 102,
-       111, 97,
-       112, 102,
-       115, 102,
-       123, 274,
-       124, 275,
-       125, 276,
-       126, 277,
-       133, 282,
-       134, 283,
-       171, 321,
-       172, 322,
-       173, 323,
-       174, 324,
-       177, 327,
-       210, 371,
-       211, 372,
-       218, 381,
-       225, 401,
-       230, 405,
-       231, 406,
-       236, 409,
-       246, 102,
-       259, 102,
-       268, 426,
-       272, 429,
-       279, 434,
-       286, 441,
-       287, 443,
-       288, 444,
-       289, 445,
-       290, 446,
-       291, 447,
-       292, 448,
-       293, 449,
-       294, 450,
-       295, 451,
-       296, 452,
-       297, 453,
-       298, 454,
-       299, 455,
-       300, 456,
-       301, 457,
-       302, 458,
-       303, 459,
-       304, 460,
-       307, 462,
-       312, 465,
-       313, 466,
-       315, 468,
-       316, 469,
-       320, 471,
-       329, 479,
-       330, 481,
-       331, 482,
-       332, 483,
-       333, 484,
-       334, 485,
-       335, 486,
-       336, 487,
-       337, 488,
-       338, 489,
-       339, 490,
-       340, 491,
-       341, 492,
-       342, 493,
-       343, 494,
-       344, 495,
-       345, 496,
-       346, 497,
-       347, 498,
-       358, 505,
-       367, 514,
-       369, 515,
-       399, 530,
-       412, 540,
-       430, 547,
-       435, 551,
-       437, 552,
-       442, 555,
-       461, 530,
-       467, 584,
-       470, 588,
-       472, 591,
-       476, 593,
-       480, 595,
-       511, 623,
-       512, 624,
-       527, 638,
-       529, 644,
-       532, 657,
-       534, 662,
-       539, 667,
-       548, 671,
-       574, 675,
-       579, 684,
-       587, 723,
-       589, 724,
-       590, 725,
-       622, 735,
-       627, 740,
-       628, 741,
-       633, 747,
-       634, 588,
-       639, 754,
-       650, 762,
-       651, 763,
-       652, 765,
-       656, 769,
-       658, 781,
-       659, 784,
-       670, 791,
-       681, 797,
-       682, 799,
-       683, 802,
-       685, 806,
-       686, 808,
-       693, 816,
-       695, 818,
-       697, 821,
-       726, 846,
-       732, 852,
-       733, 588,
-       737, 860,
-       746, 588,
-       749, 902,
-       750, 904,
-       753, 909,
-       764, 930,
-       766, 934,
-       767, 936,
-       770, 938,
-       771, 940,
-       776, 944,
-       782, 956,
-       785, 958,
-       793, 963,
-       798, 969,
-       800, 973,
-       801, 975,
-       803, 977,
-       804, 979,
-       807, 981,
-       835, 1003,
-       843, 1010,
-       844, 1011,
-       851, 588,
-       854, 1020,
-       856, 1021,
-       857, 1022,
-       862, 1025,
-       864, 1027,
-       865, 1028,
-       866, 1029,
-       867, 1030,
-       875, 1036,
-       884, 1039,
-       903, 1066,
-       906, 1070,
-       907, 1071,
-       910, 1073,
-       923, 1083,
-       929, 1090,
-       931, 1093,
-       932, 1095,
-       935, 1097,
-       939, 1100,
-       952, 530,
-       954, 530,
-       961, 1127,
-       970, 1134,
-       971, 1136,
-       974, 1138,
-       978, 1141,
-       986, 1144,
-       988, 1146,
-       989, 1147,
-       992, 1149,
-       1012, 1164,
-       1032, 1177,
-       1040, 1184,
-       1041, 1186,
-       1042, 1187,
-       1043, 1188,
-       1044, 1189,
-       1045, 1190,
-       1046, 1191,
-       1047, 1192,
-       1048, 1193,
-       1049, 1194,
-       1050, 1195,
-       1051, 1196,
-       1052, 1197,
-       1053, 1198,
-       1054, 1199,
-       1055, 1200,
-       1056, 1201,
-       1057, 1202,
-       1058, 1203,
-       1062, 1208,
-       1069, 1210,
-       1075, 1214,
-       1078, 1216,
-       1085, 1224,
-       1088, 1225,
-       1091, 1228,
-       1094, 1230,
-       1104, 530,
-       1106, 530,
-       1114, 530,
-       1116, 1251,
-       1117, 530,
-       1119, 1254,
-       1122, 530,
-       1125, 1267,
-       1126, 1268,
-       1128, 1270,
-       1129, 1271,
-       1135, 1274,
-       1145, 1279,
-       1148, 588,
-       1162, 1293,
-       1166, 1300,
-       1171, 1301,
-       1178, 1306,
-       1185, 1308,
-       1219, 1339,
-       1234, 530,
-       1236, 530,
-       1240, 530,
-       1256, 1381,
-       1260, 1386,
-       1269, 1398,
-       1282, 1406,
-       1283, 1407,
-       1296, 1415,
-       1303, 1419,
-       1327, 1423,
-       1335, 1425,
-       1337, 1426,
-       1352, 1438,
-       1355, 1442,
-       1365, 1457,
-       1368, 1461,
-       1374, 1468,
-       1375, 904,
-       1382, 1475,
-       1384, 1476,
-       1387, 1479,
-       1396, 1488,
-       1399, 1490,
-       1418, 1500,
-       1435, 1511,
-       1439, 1515,
-       1440, 1516,
-       1443, 1519,
-       1452, 1528,
-       1455, 1532,
-       1458, 1535,
-       1459, 1536,
-       1462, 1539,
-       1469, 1545,
-       1470, 1070,
-       1477, 1550,
-       1493, 1562,
-       1494, 1563,
-       1502, 1567,
-       1504, 1568,
-       1517, 1577,
-       1529, 1587,
-       1530, 1588,
-       1533, 1591,
-       1537, 1594,
-       1546, 1600,
-       1565, 1608,
-       1589, 1622,
-       1606, 1628,
-       1609, 1632,
-       1610, 1633,
-       1631, 1639,
-       1640, 1645
-};
-static int parser_goto_row91[] = {
-       1,
-       -1, 12
-};
-static int parser_goto_row92[] = {
-       17,
-       -1, 13,
-       18, 106,
-       26, 106,
-       94, 106,
-       99, 106,
-       103, 106,
-       113, 106,
-       116, 106,
-       118, 106,
-       247, 106,
-       249, 106,
-       253, 106,
-       260, 106,
-       262, 106,
-       265, 106,
-       416, 106,
-       422, 106
-};
-static int parser_goto_row93[] = {
-       1,
-       -1, 14
-};
-static int parser_goto_row94[] = {
-       4,
-       -1, 531,
-       461, 578,
-       1114, 1249,
-       1234, 1348
-};
-static int parser_goto_row95[] = {
-       3,
-       -1, 1175,
-       1177, 1305,
-       1190, 1313
-};
-static int parser_goto_row96[] = {
-       1,
-       -1, -1
-};
-static int parser_goto_row97[] = {
-       2,
-       -1, 884,
-       1639, 1644
-};
-static int parser_goto_row98[] = {
-       1,
-       -1, 885
-};
-static int parser_goto_row99[] = {
-       5,
-       -1, 886,
-       1028, 1172,
-       1184, 1307,
-       1186, 1309,
-       1308, 1421
-};
-static int parser_goto_row100[] = {
-       1,
-       -1, 887
-};
-static int parser_goto_row101[] = {
-       11,
-       -1, 888,
-       1187, 1310,
-       1188, 1311,
-       1189, 1312,
-       1193, 1316,
-       1194, 1317,
-       1195, 1318,
-       1196, 1319,
-       1197, 1320,
-       1198, 1321,
-       1199, 1322
-};
-static int parser_goto_row102[] = {
-       3,
-       -1, 889,
-       1191, 1314,
-       1192, 1315
-};
-static int parser_goto_row103[] = {
-       6,
-       -1, 890,
-       1030, 1176,
-       1036, 1180,
-       1200, 1323,
-       1201, 1324,
-       1202, 1325
+       4, 22,
+       15, 22,
+       16, 97,
+       17, 102,
+       23, 22,
+       24, 97,
+       25, 102,
+       27, 121,
+       32, 161,
+       33, 162,
+       34, 163,
+       35, 164,
+       36, 165,
+       38, 168,
+       45, 202,
+       53, 214,
+       80, 248,
+       92, 97,
+       93, 102,
+       98, 102,
+       111, 97,
+       112, 102,
+       115, 102,
+       123, 284,
+       124, 285,
+       125, 286,
+       126, 287,
+       133, 296,
+       134, 297,
+       171, 340,
+       172, 341,
+       173, 342,
+       174, 343,
+       177, 346,
+       215, 399,
+       216, 400,
+       227, 409,
+       234, 429,
+       239, 433,
+       240, 434,
+       245, 437,
+       256, 102,
+       269, 102,
+       278, 455,
+       282, 460,
+       293, 465,
+       304, 472,
+       305, 474,
+       306, 475,
+       307, 476,
+       308, 477,
+       309, 478,
+       310, 479,
+       311, 480,
+       312, 481,
+       313, 482,
+       314, 483,
+       315, 484,
+       316, 485,
+       317, 486,
+       318, 487,
+       319, 488,
+       320, 489,
+       321, 490,
+       322, 491,
+       325, 493,
+       330, 496,
+       331, 497,
+       334, 501,
+       335, 502,
+       339, 504,
+       348, 512,
+       349, 514,
+       350, 515,
+       351, 516,
+       352, 517,
+       353, 518,
+       354, 519,
+       355, 520,
+       356, 521,
+       357, 522,
+       358, 523,
+       359, 524,
+       360, 525,
+       361, 526,
+       362, 527,
+       363, 528,
+       364, 529,
+       365, 530,
+       366, 531,
+       377, 538,
+       395, 557,
+       397, 558,
+       427, 573,
+       441, 584,
+       461, 595,
+       466, 599,
+       468, 600,
+       473, 603,
+       492, 573,
+       498, 632,
+       499, 633,
+       503, 638,
+       505, 641,
+       509, 643,
+       513, 645,
+       544, 674,
+       547, 678,
+       553, 706,
+       570, 721,
+       572, 729,
+       575, 742,
+       577, 749,
+       582, 754,
+       591, 758,
+       596, 762,
+       622, 766,
+       627, 777,
+       634, 784,
+       637, 819,
+       639, 820,
+       640, 821,
+       672, 831,
+       679, 837,
+       704, 850,
+       709, 853,
+       710, 854,
+       715, 860,
+       716, 638,
+       722, 868,
+       735, 879,
+       736, 880,
+       737, 882,
+       741, 887,
+       744, 902,
+       745, 905,
+       746, 907,
+       759, 758,
+       761, 920,
+       774, 927,
+       775, 929,
+       776, 933,
+       778, 937,
+       779, 939,
+       780, 941,
+       789, 952,
+       791, 954,
+       793, 957,
+       822, 982,
+       828, 988,
+       829, 638,
+       833, 996,
+       845, 1003,
+       847, 1005,
+       851, 1008,
+       859, 638,
+       862, 1049,
+       864, 1051,
+       867, 1057,
+       871, 758,
+       881, 1080,
+       883, 1084,
+       884, 1086,
+       885, 1088,
+       888, 1092,
+       889, 1094,
+       895, 1098,
+       903, 1133,
+       906, 1135,
+       909, 1139,
+       910, 1141,
+       911, 1142,
+       922, 1151,
+       928, 1158,
+       930, 1162,
+       931, 1164,
+       932, 1166,
+       934, 1170,
+       935, 1172,
+       938, 1174,
+       940, 1176,
+       942, 1180,
+       943, 1182,
+       971, 1204,
+       979, 1211,
+       980, 1212,
+       987, 638,
+       990, 1221,
+       992, 1222,
+       993, 1223,
+       1007, 1229,
+       1009, 1231,
+       1011, 1233,
+       1012, 1234,
+       1013, 1235,
+       1014, 1236,
+       1022, 1246,
+       1031, 1253,
+       1050, 1280,
+       1054, 1285,
+       1055, 1286,
+       1058, 1288,
+       1073, 1299,
+       1079, 1307,
+       1081, 1310,
+       1082, 1312,
+       1085, 1314,
+       1087, 1316,
+       1089, 1320,
+       1090, 1322,
+       1093, 1324,
+       1106, 573,
+       1108, 573,
+       1136, 1365,
+       1137, 1367,
+       1140, 1369,
+       1149, 1376,
+       1159, 1384,
+       1160, 1386,
+       1163, 1388,
+       1165, 1390,
+       1167, 1394,
+       1168, 1396,
+       1171, 1398,
+       1177, 1402,
+       1178, 1404,
+       1181, 1406,
+       1186, 1408,
+       1189, 1412,
+       1190, 1413,
+       1193, 1415,
+       1213, 1430,
+       1242, 1447,
+       1254, 1454,
+       1255, 1456,
+       1256, 1457,
+       1257, 1458,
+       1258, 1459,
+       1259, 1460,
+       1260, 1461,
+       1261, 1462,
+       1262, 1463,
+       1263, 1464,
+       1264, 1465,
+       1265, 1466,
+       1266, 1467,
+       1267, 1468,
+       1268, 1469,
+       1269, 1470,
+       1270, 1471,
+       1271, 1472,
+       1272, 1473,
+       1276, 1478,
+       1284, 1481,
+       1290, 1485,
+       1293, 1487,
+       1301, 1495,
+       1305, 1497,
+       1308, 1500,
+       1311, 1502,
+       1317, 1506,
+       1318, 1508,
+       1321, 1510,
+       1328, 573,
+       1330, 573,
+       1338, 573,
+       1340, 1531,
+       1341, 573,
+       1343, 1536,
+       1346, 573,
+       1359, 1558,
+       1366, 1562,
+       1371, 1565,
+       1372, 1566,
+       1377, 1569,
+       1378, 1570,
+       1385, 1573,
+       1391, 1577,
+       1392, 1579,
+       1395, 1581,
+       1403, 1585,
+       1409, 1589,
+       1410, 1590,
+       1414, 638,
+       1428, 1605,
+       1432, 1612,
+       1441, 1615,
+       1448, 1621,
+       1455, 1626,
+       1490, 1659,
+       1507, 1668,
+       1513, 573,
+       1515, 573,
+       1519, 573,
+       1538, 1714,
+       1543, 1721,
+       1568, 1745,
+       1578, 1750,
+       1591, 1756,
+       1594, 1760,
+       1595, 1761,
+       1608, 1769,
+       1618, 1774,
+       1647, 1780,
+       1655, 1782,
+       1657, 1783,
+       1677, 1801,
+       1681, 1807,
+       1691, 1822,
+       1694, 1826,
+       1702, 1834,
+       1704, 1051,
+       1709, 758,
+       1715, 1850,
+       1718, 1851,
+       1722, 1855,
+       1741, 1869,
+       1746, 1872,
+       1772, 1884,
+       1795, 1897,
+       1802, 1903,
+       1804, 1904,
+       1808, 1908,
+       1817, 1917,
+       1820, 1921,
+       1823, 1924,
+       1824, 1925,
+       1827, 1928,
+       1835, 1935,
+       1836, 1285,
+       1843, 1940,
+       1844, 1941,
+       1852, 1957,
+       1877, 1973,
+       1878, 1974,
+       1887, 1978,
+       1889, 1979,
+       1905, 1992,
+       1918, 2002,
+       1919, 2003,
+       1922, 2006,
+       1926, 2009,
+       1936, 2016,
+       1942, 2020,
+       1943, 2021,
+       1944, 2022,
+       1945, 2023,
+       1946, 2024,
+       1947, 2025,
+       1948, 2026,
+       1949, 2027,
+       1951, 2028,
+       1952, 2030,
+       1953, 2031,
+       1954, 2032,
+       1976, 2044,
+       2004, 2062,
+       2018, 2067,
+       2029, 2077,
+       2042, 2083,
+       2045, 2087,
+       2046, 2088,
+       2086, 2097,
+       2093, 2100,
+       2098, 2104,
+       2105, 2108,
+       2109, 2110
 };
 static int parser_goto_row104[] = {
        1,
 };
 static int parser_goto_row104[] = {
        1,
-       -1, 891
+       -1, 12
 };
 static int parser_goto_row105[] = {
 };
 static int parser_goto_row105[] = {
-       2,
-       -1, 892,
-       873, 1034
+       17,
+       -1, 13,
+       18, 106,
+       26, 106,
+       94, 106,
+       99, 106,
+       103, 106,
+       113, 106,
+       116, 106,
+       118, 106,
+       257, 106,
+       259, 106,
+       263, 106,
+       270, 106,
+       272, 106,
+       275, 106,
+       445, 106,
+       451, 106
 };
 static int parser_goto_row106[] = {
 };
 static int parser_goto_row106[] = {
-       11,
-       -1, 812,
-       696, 819,
-       730, 849,
-       853, 1018,
-       996, 1153,
-       1150, 1284,
-       1165, 1298,
-       1281, 1404,
-       1491, 1561,
-       1607, 1629,
-       1637, 1642
+       1,
+       -1, 14
 };
 static int parser_goto_row107[] = {
 };
 static int parser_goto_row107[] = {
-       3,
-       -1, 813,
-       585, 712,
-       1280, 1403
+       4,
+       -1, 574,
+       492, 626,
+       1338, 1529,
+       1513, 1672
 };
 static int parser_goto_row108[] = {
 };
 static int parser_goto_row108[] = {
-       6,
-       -1, 502,
-       359, 506,
-       501, 617,
-       734, 855,
-       832, 1000,
-       1290, 1410
+       1,
+       -1, 1633
 };
 static int parser_goto_row109[] = {
        1,
 };
 static int parser_goto_row109[] = {
        1,
-       -1, 503
+       -1, -1
 };
 static int parser_goto_row110[] = {
 };
 static int parser_goto_row110[] = {
-       3,
-       -1, 1015,
-       1020, 1168,
-       1300, 1417
+       2,
+       -1, 1031,
+       2097, 2103
 };
 static int parser_goto_row111[] = {
        1,
 };
 static int parser_goto_row111[] = {
        1,
-       -1, 713
+       -1, 1032
 };
 static int parser_goto_row112[] = {
 };
 static int parser_goto_row112[] = {
-       1,
-       -1, 714
+       5,
+       -1, 1033,
+       1234, 1442,
+       1454, 1625,
+       1456, 1627,
+       1626, 1776
 };
 static int parser_goto_row113[] = {
        1,
 };
 static int parser_goto_row113[] = {
        1,
-       -1, 715
+       -1, 1034
 };
 static int parser_goto_row114[] = {
 };
 static int parser_goto_row114[] = {
-       1,
-       -1, 716
+       11,
+       -1, 1035,
+       1457, 1628,
+       1458, 1629,
+       1459, 1630,
+       1463, 1636,
+       1464, 1637,
+       1465, 1638,
+       1466, 1639,
+       1467, 1640,
+       1468, 1641,
+       1469, 1642
 };
 static int parser_goto_row115[] = {
 };
 static int parser_goto_row115[] = {
-       1,
-       -1, 717
+       3,
+       -1, 1036,
+       1461, 1634,
+       1462, 1635
 };
 static int parser_goto_row116[] = {
 };
 static int parser_goto_row116[] = {
-       1,
-       -1, 718
+       6,
+       -1, 1037,
+       1236, 1446,
+       1246, 1450,
+       1470, 1643,
+       1471, 1644,
+       1472, 1645
 };
 static int parser_goto_row117[] = {
        1,
 };
 static int parser_goto_row117[] = {
        1,
-       -1, 719
+       -1, 1038
 };
 static int parser_goto_row118[] = {
 };
 static int parser_goto_row118[] = {
-       1,
-       -1, 720
+       2,
+       -1, 1039,
+       1020, 1244
 };
 static int parser_goto_row119[] = {
 };
 static int parser_goto_row119[] = {
-       23,
-       -1, 1016,
-       44, 201,
-       197, 357,
-       698, 822,
-       699, 824,
-       700, 826,
-       702, 828,
-       823, 993,
-       825, 994,
-       827, 995,
-       833, 1001,
-       834, 1002,
-       998, 1155,
-       999, 1156,
-       1004, 1160,
-       1005, 1161,
-       1144, 1278,
-       1154, 1287,
-       1279, 1402,
-       1291, 1411,
-       1292, 1412,
-       1408, 1495,
-       1409, 1496
+       4,
+       -1, 382,
+       286, 463,
+       342, 507,
+       465, 598
 };
 static int parser_goto_row120[] = {
        1,
        -1, -1
 };
 static int parser_goto_row121[] = {
 };
 static int parser_goto_row120[] = {
        1,
        -1, -1
 };
 static int parser_goto_row121[] = {
-       16,
-       -1, 159,
-       37, 167,
-       586, 722,
-       631, 745,
-       691, 814,
-       696, 820,
-       730, 850,
-       748, 901,
-       853, 1019,
-       1061, 1207,
-       1163, 1295,
-       1165, 1299,
-       1281, 1405,
-       1413, 1498,
-       1607, 1630,
-       1637, 1643
+       1,
+       -1, 1126
 };
 static int parser_goto_row122[] = {
        1,
        -1, -1
 };
 static int parser_goto_row123[] = {
 };
 static int parser_goto_row122[] = {
        1,
        -1, -1
 };
 static int parser_goto_row123[] = {
-       1,
-       -1, -1
-};
-static int parser_goto_row124[] = {
-       2,
+       4,
        -1, 145,
        -1, 145,
-       1398, 1489
+       900, 1127,
+       918, 1127,
+       1745, 1871
 };
 };
-static int parser_goto_row125[] = {
+static int parser_goto_row124[] = {
        1,
        -1, 146
 };
        1,
        -1, 146
 };
-static int parser_goto_row126[] = {
+static int parser_goto_row125[] = {
        5,
        -1, 147,
        5,
        -1, 147,
-       275, 431,
-       441, 554,
-       443, 556,
-       555, 673
+       285, 462,
+       472, 602,
+       474, 604,
+       603, 764
 };
 };
-static int parser_goto_row127[] = {
+static int parser_goto_row126[] = {
        1,
        -1, 148
 };
        1,
        -1, 148
 };
-static int parser_goto_row128[] = {
+static int parser_goto_row127[] = {
        11,
        -1, 149,
        11,
        -1, 149,
-       444, 557,
-       445, 558,
-       446, 559,
-       450, 563,
-       451, 564,
-       452, 565,
-       453, 566,
-       454, 567,
-       455, 568,
-       456, 569
+       475, 605,
+       476, 606,
+       477, 607,
+       481, 611,
+       482, 612,
+       483, 613,
+       484, 614,
+       485, 615,
+       486, 616,
+       487, 617
 };
 };
-static int parser_goto_row129[] = {
+static int parser_goto_row128[] = {
        3,
        -1, 150,
        3,
        -1, 150,
-       448, 561,
-       449, 562
+       479, 609,
+       480, 610
 };
 };
-static int parser_goto_row130[] = {
+static int parser_goto_row129[] = {
        6,
        -1, 151,
        6,
        -1, 151,
-       277, 433,
-       283, 439,
-       457, 570,
-       458, 571,
-       459, 572
+       287, 464,
+       297, 470,
+       488, 618,
+       489, 619,
+       490, 620
 };
 };
-static int parser_goto_row131[] = {
+static int parser_goto_row130[] = {
        1,
        -1, 152
 };
        1,
        -1, 152
 };
-static int parser_goto_row132[] = {
-       2,
+static int parser_goto_row131[] = {
+       4,
        -1, 153,
        -1, 153,
-       132, 281
+       132, 295,
+       900, 1128,
+       918, 1128
+};
+static int parser_goto_row132[] = {
+       7,
+       -1, 546,
+       543, 673,
+       676, 835,
+       1225, 1437,
+       1435, 1613,
+       1444, 1617,
+       1616, 1773
 };
 static int parser_goto_row133[] = {
        1,
 };
 static int parser_goto_row133[] = {
        1,
-       -1, -1
+       -1, 677
 };
 static int parser_goto_row134[] = {
 };
 static int parser_goto_row134[] = {
-       1,
-       -1, -1
+       2,
+       -1, 1129,
+       918, 1148
 };
 static int parser_goto_row135[] = {
        1,
 };
 static int parser_goto_row135[] = {
        1,
-       -1, -1
+       -1, 1130
 };
 static int parser_goto_row136[] = {
 };
 static int parser_goto_row136[] = {
-       1,
-       -1, -1
+       2,
+       -1, 1445,
+       1447, 1620
 };
 static int parser_goto_row137[] = {
        1,
 };
 static int parser_goto_row137[] = {
        1,
@@ -19746,18 +24479,272 @@ static int parser_goto_row145[] = {
        -1, -1
 };
 static int parser_goto_row146[] = {
        -1, -1
 };
 static int parser_goto_row146[] = {
+       1,
+       -1, -1
+};
+static int parser_goto_row147[] = {
+       1,
+       -1, -1
+};
+static int parser_goto_row148[] = {
+       11,
+       -1, 948,
+       792, 955,
+       826, 985,
+       989, 1219,
+       1197, 1419,
+       1416, 1596,
+       1431, 1610,
+       1593, 1758,
+       1875, 1972,
+       2043, 2084,
+       2095, 2101
+};
+static int parser_goto_row149[] = {
+       3,
+       -1, 949,
+       635, 808,
+       1592, 1757
+};
+static int parser_goto_row150[] = {
+       6,
+       -1, 535,
+       378, 539,
+       534, 667,
+       830, 991,
+       968, 1201,
+       1602, 1764
+};
+static int parser_goto_row151[] = {
+       1,
+       -1, 536
+};
+static int parser_goto_row152[] = {
+       3,
+       -1, 1216,
+       1221, 1434,
+       1612, 1771
+};
+static int parser_goto_row153[] = {
+       1,
+       -1, 809
+};
+static int parser_goto_row154[] = {
+       1,
+       -1, 810
+};
+static int parser_goto_row155[] = {
+       1,
+       -1, 811
+};
+static int parser_goto_row156[] = {
+       1,
+       -1, 812
+};
+static int parser_goto_row157[] = {
+       1,
+       -1, 813
+};
+static int parser_goto_row158[] = {
+       1,
+       -1, 814
+};
+static int parser_goto_row159[] = {
+       1,
+       -1, 815
+};
+static int parser_goto_row160[] = {
+       1,
+       -1, 816
+};
+static int parser_goto_row161[] = {
+       25,
+       -1, 1217,
+       44, 201,
+       197, 376,
+       794, 958,
+       795, 960,
+       796, 962,
+       798, 964,
+       959, 1194,
+       961, 1195,
+       963, 1196,
+       969, 1202,
+       970, 1203,
+       1199, 1421,
+       1200, 1422,
+       1205, 1426,
+       1206, 1427,
+       1408, 1588,
+       1420, 1599,
+       1589, 1754,
+       1590, 1755,
+       1603, 1765,
+       1604, 1766,
+       1756, 1874,
+       1762, 1879,
+       1763, 1880
+};
+static int parser_goto_row162[] = {
+       1,
+       -1, -1
+};
+static int parser_goto_row163[] = {
+       1,
+       -1, -1
+};
+static int parser_goto_row164[] = {
+       1,
+       -1, -1
+};
+static int parser_goto_row165[] = {
+       1,
+       -1, -1
+};
+static int parser_goto_row166[] = {
+       1,
+       -1, -1
+};
+static int parser_goto_row167[] = {
+       16,
+       -1, 159,
+       37, 167,
+       636, 818,
+       713, 858,
+       787, 950,
+       792, 956,
+       826, 986,
+       861, 1048,
+       989, 1220,
+       1275, 1477,
+       1429, 1607,
+       1431, 1611,
+       1593, 1759,
+       1767, 1882,
+       2043, 2085,
+       2095, 2102
+};
+static int parser_goto_row168[] = {
+       1,
+       -1, -1
+};
+static int parser_goto_row169[] = {
+       1,
+       -1, 703
+};
+static int parser_goto_row170[] = {
+       1,
+       -1, 1131
+};
+static int parser_goto_row171[] = {
+       1,
+       -1, -1
+};
+static int parser_goto_row172[] = {
+       1,
+       -1, -1
+};
+static int parser_goto_row173[] = {
+       9,
+       -1, 1846,
+       1801, 1902,
+       1850, 1955,
+       1851, 1956,
+       1903, 1990,
+       1904, 1991,
+       1957, 2035,
+       1992, 2055,
+       2110, 2111
+};
+static int parser_goto_row174[] = {
+       1,
+       -1, 1847
+};
+static int parser_goto_row175[] = {
+       5,
+       -1, 1848,
+       1941, 2019,
+       2028, 2076,
+       2030, 2078,
+       2077, 2094
+};
+static int parser_goto_row176[] = {
+       1,
+       -1, 1849
+};
+static int parser_goto_row177[] = {
+       1,
+       -1, -1
+};
+static int parser_goto_row178[] = {
+       1,
+       -1, -1
+};
+static int parser_goto_row179[] = {
+       1,
+       -1, -1
+};
+static int parser_goto_row180[] = {
+       1,
+       -1, -1
+};
+static int parser_goto_row181[] = {
+       1,
+       -1, -1
+};
+static int parser_goto_row182[] = {
+       1,
+       -1, -1
+};
+static int parser_goto_row183[] = {
+       1,
+       -1, -1
+};
+static int parser_goto_row184[] = {
+       1,
+       -1, -1
+};
+static int parser_goto_row185[] = {
+       1,
+       -1, -1
+};
+static int parser_goto_row186[] = {
+       1,
+       -1, -1
+};
+static int parser_goto_row187[] = {
+       1,
+       -1, -1
+};
+static int parser_goto_row188[] = {
+       1,
+       -1, -1
+};
+static int parser_goto_row189[] = {
+       5,
+       -1, 743,
+       746, 908,
+       780, 908,
+       885, 908,
+       932, 908
+};
+static int parser_goto_row190[] = {
+       1,
+       -1, 900
+};
+static int parser_goto_row191[] = {
        2,
        -1, 15,
        4, 23
 };
        2,
        -1, 15,
        4, 23
 };
-static int parser_goto_row147[] = {
+static int parser_goto_row192[] = {
        4,
        -1, 16,
        4, 24,
        15, 92,
        23, 111
 };
        4,
        -1, 16,
        4, 24,
        15, 92,
        23, 111
 };
-static int parser_goto_row148[] = {
+static int parser_goto_row193[] = {
        8,
        -1, 17,
        4, 25,
        8,
        -1, 17,
        4, 25,
@@ -19765,10 +24752,10 @@ static int parser_goto_row148[] = {
        16, 98,
        23, 112,
        24, 115,
        16, 98,
        23, 112,
        24, 115,
-       92, 246,
-       111, 259
+       92, 256,
+       111, 269
 };
 };
-static int parser_goto_row149[] = {
+static int parser_goto_row194[] = {
        16,
        -1, 18,
        4, 26,
        16,
        -1, 18,
        4, 26,
@@ -19778,97 +24765,141 @@ static int parser_goto_row149[] = {
        23, 113,
        24, 116,
        25, 118,
        23, 113,
        24, 116,
        25, 118,
-       92, 247,
-       93, 249,
-       98, 253,
-       111, 260,
-       112, 262,
-       115, 265,
-       246, 416,
-       259, 422
-};
-static int parser_goto_row150[] = {
-       8,
-       -1, 658,
-       579, 685,
-       652, 766,
-       656, 770,
-       682, 800,
-       683, 803,
-       764, 931,
-       798, 970
-};
-static int parser_goto_row151[] = {
+       92, 257,
+       93, 259,
+       98, 263,
+       111, 270,
+       112, 272,
+       115, 275,
+       256, 445,
+       269, 451
+};
+static int parser_goto_row195[] = {
        16,
        16,
-       -1, 659,
-       579, 686,
-       652, 767,
-       656, 771,
-       658, 782,
-       682, 801,
-       683, 804,
-       685, 807,
-       764, 932,
-       766, 935,
-       770, 939,
-       798, 971,
-       800, 974,
-       803, 978,
-       931, 1094,
-       970, 1135
-};
-static int parser_goto_row152[] = {
-       1,
-       -1, 1091
-};
-static int parser_goto_row153[] = {
-       1,
-       -1, 910
+       -1, 744,
+       627, 778,
+       737, 883,
+       741, 888,
+       746, 909,
+       775, 930,
+       776, 934,
+       780, 942,
+       881, 1081,
+       885, 1089,
+       906, 1136,
+       928, 1159,
+       932, 1167,
+       940, 1177,
+       1087, 1317,
+       1165, 1391
+};
+static int parser_goto_row196[] = {
+       32,
+       -1, 745,
+       627, 779,
+       737, 884,
+       741, 889,
+       744, 903,
+       746, 910,
+       775, 931,
+       776, 935,
+       778, 938,
+       780, 943,
+       881, 1082,
+       883, 1085,
+       885, 1090,
+       888, 1093,
+       906, 1137,
+       909, 1140,
+       928, 1160,
+       930, 1163,
+       932, 1168,
+       934, 1171,
+       940, 1178,
+       942, 1181,
+       1081, 1311,
+       1087, 1318,
+       1089, 1321,
+       1136, 1366,
+       1159, 1385,
+       1165, 1392,
+       1167, 1395,
+       1177, 1403,
+       1317, 1507,
+       1391, 1578
+};
+static int parser_goto_row197[] = {
+       1,
+       -1, 1308
+};
+static int parser_goto_row198[] = {
+       1,
+       -1, 1058
+};
+static int parser_goto_row199[] = {
+       1,
+       -1, 734
+};
+static int parser_goto_row200[] = {
+       1,
+       -1, 1292
+};
+static int parser_goto_row201[] = {
+       1,
+       -1, 995
+};
+static int parser_goto_row202[] = {
+       4,
+       -1, 238,
+       328, 495,
+       975, 1209,
+       1041, 1274
 };
 };
-static int parser_goto_row154[] = {
+static int parser_goto_row203[] = {
        1,
        1,
-       -1, 649
+       -1, 247
 };
 };
-static int parser_goto_row155[] = {
+static int parser_goto_row204[] = {
        1,
        1,
-       -1, 1077
+       -1, 681
 };
 };
-static int parser_goto_row156[] = {
+static int parser_goto_row205[] = {
        1,
        1,
-       -1, 859
+       -1, 759
 };
 };
-static int parser_goto_row157[] = {
-       4,
-       -1, 229,
-       310, 464,
-       839, 1008,
-       894, 1060
-};
-static int parser_goto_row158[] = {
-       1,
-       -1, 238
+static int parser_goto_row206[] = {
+       2,
+       -1, 849,
+       1130, 1362
 };
 };
-static int parser_goto_row159[] = {
+static int parser_goto_row207[] = {
        1,
        1,
-       -1, 630
+       -1, 712
 };
 };
-static int parser_goto_row160[] = {
+static int parser_goto_row208[] = {
        4,
        -1, 85,
        4,
        -1, 85,
-       121, 271,
-       381, 271,
-       426, 544
+       121, 281,
+       409, 281,
+       455, 588
 };
 };
-static int parser_goto_row161[] = {
+static int parser_goto_row209[] = {
        2,
        -1, 19,
        12, 86
 };
        2,
        -1, 19,
        12, 86
 };
-static int parser_goto_row162[] = {
+static int parser_goto_row210[] = {
        3,
        -1, 20,
        19, 108,
        3,
        -1, 20,
        19, 108,
-       86, 244
+       86, 254
+};
+static int parser_goto_row211[] = {
+       4,
+       -1, 746,
+       627, 780,
+       737, 885,
+       775, 932
 };
 
 const int* const parser_goto_table[] = {
 };
 
 const int* const parser_goto_table[] = {
@@ -20033,5 +25064,54 @@ const int* const parser_goto_table[] = {
        parser_goto_row159,
        parser_goto_row160,
        parser_goto_row161,
        parser_goto_row159,
        parser_goto_row160,
        parser_goto_row161,
-       parser_goto_row162
+       parser_goto_row162,
+       parser_goto_row163,
+       parser_goto_row164,
+       parser_goto_row165,
+       parser_goto_row166,
+       parser_goto_row167,
+       parser_goto_row168,
+       parser_goto_row169,
+       parser_goto_row170,
+       parser_goto_row171,
+       parser_goto_row172,
+       parser_goto_row173,
+       parser_goto_row174,
+       parser_goto_row175,
+       parser_goto_row176,
+       parser_goto_row177,
+       parser_goto_row178,
+       parser_goto_row179,
+       parser_goto_row180,
+       parser_goto_row181,
+       parser_goto_row182,
+       parser_goto_row183,
+       parser_goto_row184,
+       parser_goto_row185,
+       parser_goto_row186,
+       parser_goto_row187,
+       parser_goto_row188,
+       parser_goto_row189,
+       parser_goto_row190,
+       parser_goto_row191,
+       parser_goto_row192,
+       parser_goto_row193,
+       parser_goto_row194,
+       parser_goto_row195,
+       parser_goto_row196,
+       parser_goto_row197,
+       parser_goto_row198,
+       parser_goto_row199,
+       parser_goto_row200,
+       parser_goto_row201,
+       parser_goto_row202,
+       parser_goto_row203,
+       parser_goto_row204,
+       parser_goto_row205,
+       parser_goto_row206,
+       parser_goto_row207,
+       parser_goto_row208,
+       parser_goto_row209,
+       parser_goto_row210,
+       parser_goto_row211
 };
 };