nullable: convert lib, tools and tests
authorJean Privat <jean@pryen.org>
Thu, 25 Jun 2009 02:27:08 +0000 (22:27 -0400)
committerJean Privat <jean@pryen.org>
Fri, 26 Jun 2009 05:06:30 +0000 (01:06 -0400)
Add nullable, as(not null) and cie to libs, nitc, nitdoc and tests such
that they compile and run without nullable-related warnings.

Signed-off-by: Jean Privat <jean@pryen.org>

44 files changed:
lib/opts.nit
lib/standard/abstract_collection.nit
lib/standard/array.nit
lib/standard/exec.nit
lib/standard/file.nit
lib/standard/hash.nit
lib/standard/kernel.nit
lib/standard/list.nit
lib/standard/stream.nit
lib/standard/string.nit
lib/standard/string_search.nit
src/compiling/compiling_base.nit
src/compiling/compiling_global.nit
src/compiling/compiling_methods.nit
src/metamodel/abstractmetamodel.nit
src/metamodel/genericity.nit
src/metamodel/inheritance.nit
src/metamodel/partial_order.nit
src/metamodel/static_type.nit
src/metamodel/type_formal.nit
src/metamodel/vararg.nit
src/metamodel/virtualtype.nit
src/mmloader.nit
src/nitc.nit
src/nitdoc.nit
src/parser/lexer.nit
src/parser/parser.nit
src/parser/parser_abs.nit
src/parser/parser_nodes.nit
src/parser/parser_prod.nit
src/parser/parser_tables.nit
src/parser/xss/lexer.xss
src/parser/xss/nodes.xss
src/parser/xss/parser.xss
src/parser/xss/prods.xss
src/syntax/control_flow.nit
src/syntax/escape.nit
src/syntax/mmbuilder.nit
src/syntax/syntax_base.nit
src/syntax/typing.nit
tests/base_eq.nit
tests/test_kernel.nit
tests/test_operators.nit
tests/test_print.nit

index b4da3f5..5f409e8 100644 (file)
@@ -17,7 +17,7 @@ class Option
        readable attr _names: Array[String]
 
        # Type of the value of the option
-       type VALUE: Object
+       type VALUE: nullable Object
 
        # Human readable description of the option
        readable attr _helptext: String 
@@ -25,17 +25,17 @@ class Option
        # Is this option mandatory?
        readable writable attr _mandatory: Bool 
 
-       # context where the option is located
-       readable writable attr _context: OptionContext 
+       # Current value of this option
+       writable attr _value: nullable VALUE
 
        # Current value of this option
-       readable writable attr _value: VALUE 
+       meth value: VALUE do return _value.as(VALUE)
 
        # Default value of this option
-       readable writable attr _default_value: VALUE
+       readable writable attr _default_value: nullable VALUE
 
        # Create a new option
-       init init_opt(help: String, default: VALUE, names: Array[String])
+       init init_opt(help: String, default: nullable VALUE, names: nullable Array[String])
        do
                if names == null then
                        _names = new Array[String]
@@ -113,7 +113,6 @@ special Option
 
        redef meth read_param(it)
        do
-               assert context != null
                if it.is_ok then
                        value = convert(it.item)
                        it.next
@@ -127,7 +126,7 @@ end
 
 class OptionString
 special OptionParameter
-       redef type VALUE: String
+       redef type VALUE: nullable String
 
        init(help: String, names: String...) do init_opt(help, null, names)
 
@@ -141,7 +140,7 @@ special OptionParameter
 
        init(enum: Array[String], help: String, default: Int, names: String...)
        do
-               assert enum != null and enum.length > 0
+               assert enum.length > 0
                _enum = enum.to_a
                init_opt("{help} <{enum.join(", ")}>", default, names)
        end
@@ -155,7 +154,7 @@ special OptionParameter
        redef meth pretty_default
        do
                if default_value != null then
-                       return " ({_enum[default_value]})"
+                       return " ({_enum[default_value.as(not null)]})"
                else
                        return ""
                end
@@ -246,7 +245,6 @@ class OptionContext
        meth add_option(opts: Option...)
        do
                for opt in opts do
-                       opt.context = self
                        _options.add(opt)
                end
        end
index 0f88388..10fafb7 100644 (file)
@@ -186,7 +186,7 @@ special RemovableCollection[E]
        meth add(item: E) is abstract
 
        # Add each item of `coll`.
-       meth add_all(coll: Collection[E]) do if coll != null then for i in coll do add(i)
+       meth add_all(coll: Collection[E]) do for i in coll do add(i)
 end
 
 # Abstract sets.
@@ -346,7 +346,7 @@ special SimpleCollection[E]
        meth push(e: E) is abstract
 
        # Add each item of `coll` after the last.
-       meth append(coll: Collection[E]) do if coll != null then for i in coll do push(i)
+       meth append(coll: Collection[E]) do for i in coll do push(i)
 
        # Remove the last item.
        meth pop: E is abstract
@@ -375,7 +375,7 @@ interface CoupleMap[K, E]
 special Map[K, E]
        # Return the couple of the corresponding key
        # Return null if the key is no associated element
-       protected meth couple_at(key: K): Couple[K, E] is abstract
+       protected meth couple_at(key: K): nullable Couple[K, E] is abstract
 
        redef meth [](key)
        do
@@ -406,7 +406,6 @@ special MapIterator[K, E]
        redef meth next
        do 
                _iter.next
-               while _iter.is_ok and _iter.item == null do _iter.next
        end
 
        attr _iter: Iterator[Couple[K,E]]
index d95911b..a4b7190 100644 (file)
@@ -129,7 +129,6 @@ special IndexedCollectionRead[E]
        redef meth ==(o)
        do
                if not o isa AbstractArray[E] or o is null then return false
-               assert o isa AbstractArray[E]
                var l = length
                if o.length != l then return false
                var i = 0
@@ -306,7 +305,7 @@ special ArrayCapable[E]
        end
 
        # The internal storage.
-       attr _items: NativeArray[E] = null
+       attr _items: nullable NativeArray[E] = null
 
        # The size of `_items'.
        attr _capacity: Int = 0
@@ -325,7 +324,6 @@ special IndexedIterator[E]
 
        init(a: AbstractArrayRead[E])
        do
-               assert not_nil: a != null
                _array = a
                _index = 0
        end
index 72dd195..0bc9783 100644 (file)
@@ -59,7 +59,7 @@ class Process
        end
 
        # Internal code to handle execusion
-       protected init execute(command: String, arguments: Array[String], pipeflags: Int)
+       protected init execute(command: String, arguments: nullable Array[String], pipeflags: Int)
        do
                var args = new Buffer
                var l = 1 # Number of elements in args
index e6df753..bbb45d2 100644 (file)
@@ -31,9 +31,7 @@ redef class Object
        # Print an `object' on the standard output (`stdout') and add a newline.
        protected meth print(object: Object)
        do
-               if object != null then
-                       stdout.write(object.to_s)
-               end
+               stdout.write(object.to_s)
                stdout.write("\n")
        end
 
@@ -54,12 +52,11 @@ end
 class FStream
 special IOS
 special NativeFileCapable
-       
        # The path of the file.
-       readable attr _path: String = null
+       readable attr _path: nullable String = null
 
        # The FILE *.
-       attr _file: NativeFile = null
+       attr _file: nullable NativeFile = null
 
        meth file_stat: FileStat
        do return _file.file_stat end
index 6f3ef42..363c38a 100644 (file)
@@ -63,25 +63,24 @@ end
 # A HashCollection is an array of HashNode[K] indexed by the K hash value
 private class HashCollection[K: Object, N: HashNode[K], E]
 special Collection[E]
-special ArrayCapable[N]
-       attr _array: NativeArray[N] = null # Used to store items
+special ArrayCapable[nullable N]
+       attr _array: nullable NativeArray[nullable N] = null # Used to store items
        attr _capacity: Int = 0 # Size of _array
        redef readable attr _length: Int = 0 # Number of items in the map
 
-       readable attr _first_item: N = null # First added item (used to visit items in nice order)
-       attr _last_item: N = null # Last added item (same)
+       readable attr _first_item: nullable N = null # First added item (used to visit items in nice order)
+       attr _last_item: nullable N = null # Last added item (same)
 
        # The last index accessed
        attr _last_accessed_index: Int = -1
 
        # The last key accessed
-       attr _last_accessed_key: K = null
+       attr _last_accessed_key: nullable K = null
 
        # Return the index of the k element
        meth index_at(k: K): Int
        do
                var arr = _array
-               assert k != null
 
                # Fisrt step: look in the last indexed elt
                if k == _last_accessed_key then return _last_accessed_index
@@ -221,8 +220,8 @@ end
 private class HashNode[K]
        meth key: K is abstract
        type N: HashNode[K]
-       readable writable attr _next_item: N = null
-       readable writable attr _prev_item: N = null
+       readable writable attr _next_item: nullable N = null
+       readable writable attr _prev_item: nullable N = null
 end
 
 class HashMap[K, V]
@@ -358,7 +357,7 @@ special MapIterator[K, V]
        attr _map: HashMap[K, V]
 
        # The current node
-       attr _node: HashMapNode[K, V]
+       attr _node: nullable HashMapNode[K, V]
 
        init(map: HashMap[K, V])
        do
@@ -441,7 +440,7 @@ special Iterator[E]
        attr _set: HashSet[E]
 
        # The position in the internal map storage
-       attr _node: HashSetNode[E]
+       attr _node: nullable HashSetNode[E]
 
        init(set: HashSet[E])
        do
index 1377c71..80a1282 100644 (file)
@@ -32,12 +32,12 @@ interface Object
        # Have `self' and `other' the same value?
        ##
        # Implicitely, the default implementation, is ==
-       meth ==(other: Object): Bool do return self is other
+       meth ==(other: nullable Object): Bool do return self is other
 
        # Have `self' and `other' different values?
        ##
        # != is equivament with "not =".
-       meth !=(other: Object): Bool do return not (self == other)
+       meth !=(other: nullable Object): Bool do return not (self == other)
 
        # Display self on stdout (debug only).
        meth output
index 97caba4..6a0fd19 100644 (file)
@@ -179,13 +179,13 @@ special IndexedCollection[E]
        init from(coll: Collection[E]) do append(coll)
 
        # The first node of the list
-       attr _head: ListNode[E]
+       attr _head: nullable ListNode[E]
 
        # The last node of the list
-       attr _tail: ListNode[E]
+       attr _tail: nullable ListNode[E]
 
        # Get the `i'th node. get `null' otherwise.
-       private meth get_node(i: Int): ListNode[E]
+       private meth get_node(i: Int): nullable ListNode[E]
        do
                var n = _head
                if i < 0 then
@@ -199,7 +199,7 @@ special IndexedCollection[E]
        end
 
        # get the first node that contains e after 'after', null otherwise
-       private meth search_node_after(e: E, after: ListNode[E]): ListNode[E]
+       private meth search_node_after(e: E, after: nullable ListNode[E]): nullable ListNode[E]
        do
                var n = after
                while n != null and n.item != e do n = n.next
@@ -256,14 +256,14 @@ special IndexedIterator[E]
        end
 
        # Build a new iterator from `node'.
-       private init(node: ListNode[E])
+       private init(node: nullable ListNode[E])
        do
                _node = node
                _index = 0
        end
 
        # The current node of the list
-       attr _node: ListNode[E]
+       attr _node: nullable ListNode[E]
 
        # The index of the current node
        redef readable attr _index: Int
@@ -278,8 +278,8 @@ special Container[E]
        end
 
        # The next node.
-       readable writable attr _next: ListNode[E]
+       readable writable attr _next: nullable ListNode[E]
 
        # The previous node.
-       readable writable attr _prev: ListNode[E]
+       readable writable attr _prev: nullable ListNode[E]
 end
index 3204e84..45c9f32 100644 (file)
@@ -184,7 +184,7 @@ special IStream
        redef meth eof do return _buffer_pos >= _buffer.length and end_reached
 
        # The buffer
-       attr _buffer: Buffer = null
+       attr _buffer: nullable Buffer = null
 
        # The current position in the buffer
        attr _buffer_pos: Int = 0
index 3b0065c..a55e72a 100644 (file)
@@ -188,7 +188,6 @@ special AbstractString
        redef meth ==(o)
        do
                if not o isa String or o is null then return false
-               assert o isa String
                var l = length
                if o.length != l then return false
                var i = 0
@@ -359,7 +358,6 @@ special AbstractArray[Char]
        redef meth ==(o)
        do
                if not o isa Buffer or o is null then return false
-               assert o isa Buffer
                var l = length
                if o.length != l then return false
                var i = 0
@@ -589,14 +587,14 @@ class StringCapable
 end
 
 redef class Sys
-       attr _args_cache: IndexedCollection[String]
+       attr _args_cache: nullable IndexedCollection[String]
 
        redef meth args: IndexedCollection[String]
        do
                if _args_cache == null then init_args
-               return _args_cache
+               return _args_cache.as(not null)
        end
-       
+
        # The name of the program as given by the OS
        meth program_name: String
        do
index 94282aa..9279fc2 100644 (file)
@@ -25,7 +25,7 @@ class Pattern
 
        # Search `self' into `s' from a certain position.
        # Return null if not found.
-       meth search_in(s: String, from: Int): Match is abstract
+       meth search_in(s: String, from: Int): nullable Match is abstract
 
        # Search all `self' occucences into `s'.
        meth search_all_in(s: String): Array[Match]
@@ -220,7 +220,6 @@ class Match
        # Matches `len' characters of `s' from `f'.
        init(s: String, f: Int, len: Int)
        do
-               assert non_null_string: s != null 
                assert positive_length: len >= 0
                assert valid_from: f >= 0
                assert valid_after: f + len <= s.length
@@ -281,12 +280,12 @@ special Pattern
        end
 
        # Like `search_from' but from the first chararter.
-       meth search(p: Pattern): Match do return p.search_in(self, 0)
+       meth search(p: Pattern): nullable Match do return p.search_in(self, 0)
 
        # Search the given pattern into self from a.
        # The search starts at `from'.
        # Return null if not found.
-       meth search_from(p: Pattern, from: Int): Match do return p.search_in(self, from)
+       meth search_from(p: Pattern, from: Int): nullable Match do return p.search_in(self, from)
 
        # Search all occurences of p into self.
        #
index 20aa0b5..3fcdf8d 100644 (file)
@@ -21,14 +21,14 @@ import syntax
 private import utils
 
 redef class ToolContext
-       readable writable attr _global: Bool = false 
-       readable writable attr _compdir: String
-       readable writable attr _clibdir: String
-       readable writable attr _bindir: String
-       readable writable attr _output_file: String
+       readable writable attr _global: Bool = false
+       readable writable attr _compdir: nullable String = null
+       readable writable attr _clibdir: nullable String = null
+       readable writable attr _bindir: nullable String = null
+       readable writable attr _output_file: nullable String = null
        readable writable attr _boost: Bool = false
        readable writable attr _no_cc: Bool = false
-       readable writable attr _ext_prefix: String 
+       readable writable attr _ext_prefix: String = ""
 end
 
 # Class used to generate files.
@@ -163,7 +163,7 @@ end
 
 redef class MMLocalClass
        # Cached primitive_info result
-       attr _primitive_info_cache: PrimitiveInfo
+       attr _primitive_info_cache: nullable PrimitiveInfo = null
 
        # If primitive_info result cached?
        attr _primitive_info_b: Bool = false
@@ -171,7 +171,7 @@ redef class MMLocalClass
        # Return the primitive information of the class.
        # Return null if the class is not primitive
        # FIXME: Only here since there is no universal type yet
-       meth primitive_info: PrimitiveInfo
+       meth primitive_info: nullable PrimitiveInfo
        do
                if _primitive_info_b == true then return _primitive_info_cache
 
@@ -288,15 +288,17 @@ end
 
 redef class MMLocalProperty
        # Cacher result of cname
-       attr _cname_cache: String
+       attr _cname_cache: nullable String
 
        # The mangled name of the method
        meth cname: String
        do
-               if _cname_cache == null then
-                       _cname_cache = cmangle(module.name, local_class.name, name)
+               var cname = _cname_cache
+               if cname == null then
+                       cname = cmangle(module.name, local_class.name, name)
+                       _cname_cache = cname
                end
-               return _cname_cache
+               return cname
        end
 
        # C macro used to get the function for the call of a super property
index c81ee97..96837be 100644 (file)
@@ -23,7 +23,7 @@ private import syntax
 
 # Something that store color of table elements
 class ColorContext
-       attr _colors: HashMap[TableElt, Int] = null
+       attr _colors: HashMap[TableElt, Int] = new HashMap[TableElt, Int]
 
        # The color of a table element.
        meth color(e: TableElt): Int
@@ -34,13 +34,12 @@ class ColorContext
        # Is a table element already colored?
        meth has_color(e: TableElt): Bool
        do
-               return _colors != null and _colors.has_key(e)
+               return _colors.has_key(e)
        end
 
        # Assign a color to a table element.
        meth color=(e: TableElt, c: Int)
        do
-               if _colors == null then _colors = new HashMap[TableElt, Int]
                _colors[e] = c
                var idx = c
                for i in [0..e.length[ do
@@ -60,7 +59,7 @@ special ColorContext
        readable attr _module: MMModule
 
        # FIXME: do something better.
-       readable writable attr _max_class_table_length: Int
+       readable writable attr _max_class_table_length: Int = 0
 
        init(module: MMSrcModule)
        do
@@ -86,26 +85,27 @@ special ColorContext
        readable attr _local_class: MMLocalClass
 
        # The identifier of the class
-       readable writable attr _id: Int
+       readable writable attr _id: Int = 0
 
        # The full class table of the class
-       readable attr _class_table: Array[TableElt] = new Array[TableElt]
+       readable attr _class_table: Array[nullable TableElt] = new Array[nullable TableElt]
 
        # The full instance table of the class
-       readable attr _instance_table: Array[TableElt] = new Array[TableElt]
+       readable attr _instance_table: Array[nullable TableElt] = new Array[nullable TableElt]
 
        # The proper class table part (no superclasses but all refinements)
-       readable attr _class_layout: TableEltComposite = new TableEltComposite(self)
+       readable writable attr _class_layout: TableEltComposite = new TableEltComposite(self)
 
        # The proper instance table part (no superclasses but all refinements)
-       readable attr _instance_layout: TableEltComposite = new TableEltComposite(self)
+       readable writable attr _instance_layout: TableEltComposite = new TableEltComposite(self)
 
        init(c: MMLocalClass) do _local_class = c
 end
 
 redef class MMSrcLocalClass
        # The table element of the subtype check
-       readable attr _class_color_pos: TableEltClassColor
+       meth class_color_pos: TableEltClassColor do return _class_color_pos.as(not null)
+       attr _class_color_pos: nullable TableEltClassColor
 
        # The proper local class table part (nor superclasses nor refinments)
        readable attr _class_layout: Array[TableElt] = new Array[TableElt]
@@ -121,8 +121,9 @@ redef class MMSrcLocalClass
 
                if global.intro == self then
                        module_table.add(new TableEltClassId(self))
-                       _class_color_pos = new TableEltClassColor(self)
-                       module_table.add(_class_color_pos)
+                       var cpp = new TableEltClassColor(self)
+                       _class_color_pos = cpp
+                       module_table.add(cpp)
                        clt.add(new TableEltClassInitTable(self))
                end
                for p in src_local_properties do
@@ -318,7 +319,7 @@ redef class MMSrcModule
                return ga
        end
 
-       private meth append_to_table(cc: ColorContext, table: Array[TableElt], cmp: TableEltComposite)
+       private meth append_to_table(cc: ColorContext, table: Array[nullable TableElt], cmp: TableEltComposite)
        do
                for j in [0..cmp.length[ do
                        var e = cmp.item(j)
@@ -327,7 +328,7 @@ redef class MMSrcModule
                end
        end
 
-       private meth build_tables_in(table: Array[TableElt], ga: GlobalAnalysis, c: MMLocalClass, elts: Array[TableElt])
+       private meth build_tables_in(table: Array[nullable TableElt], ga: GlobalAnalysis, c: MMLocalClass, elts: Array[TableElt])
        do
                var tab = new HashMap[Int, TableElt]
                var len = 0
@@ -455,12 +456,11 @@ redef class MMSrcModule
                        print("No main")
                else
                        var sys = class_by_name(sysname)
-                       # var initm = sys.select_method(once "init".to_symbol)
-                       var mainm = sys.select_method(once "main".to_symbol)
-                       if mainm == null then
+                       var name = once "main".to_symbol
+                       if not sys.has_global_property_by_name(name) then
                                print("No main")
                        else
-                               #v.add_instr("G_sys = NEW_{initm.cname}();")
+                               var mainm = sys.select_method(name)
                                v.add_instr("G_sys = NEW_Sys();")
                                v.add_instr("{mainm.cname}(G_sys);")
                        end
@@ -627,8 +627,7 @@ special TableEltProp
                                end
                        end
                end
-               assert false
-               return null
+               abort
        end
 end
 
@@ -874,7 +873,7 @@ redef class MMLocalClass
                        var ctx_old = v.ctx
                        v.ctx = new CContext
 
-                       var self_var = new ParamVariable(null, null)
+                       var self_var = new ParamVariable(once ("self".to_symbol), null)
                        var self_var_cname = v.cfc.register_variable(self_var)
                        v.nmc.method_params = [self_var]
 
@@ -890,7 +889,6 @@ redef class MMLocalClass
                                        # FIXME: Not compatible with sep compilation
                                        assert p isa MMSrcAttribute
                                        var np = p.node
-                                       assert np isa AAttrPropdef
                                        var ne = np.n_expr
                                        if ne != null then
                                                var e = ne.compile_expr(v)
index 3f79777..65c05b3 100644 (file)
@@ -22,7 +22,7 @@ private import syntax
 
 redef class CompilerVisitor
        # Compile a statment node
-       meth compile_stmt(n: PExpr)
+       meth compile_stmt(n: nullable PExpr)
        do
                if n == null then return
                #add_instr("/* Compile stmt {n.locate} */")
@@ -67,9 +67,9 @@ redef class CompilerVisitor
                end
        end
 
-       readable writable attr _cfc: CFunctionContext
+       readable writable attr _cfc: nullable CFunctionContext
 
-       readable writable attr _nmc: NitMethodContext
+       readable writable attr _nmc: nullable NitMethodContext
 
        # C outputs written outside the current C function.
        readable writable attr _out_contexts: Array[CContext] = new Array[CContext]
@@ -85,7 +85,7 @@ redef class CompilerVisitor
                return s.to_s
        end
 
-       meth invoke_super_init_calls_after(start_prop: MMMethod)
+       meth invoke_super_init_calls_after(start_prop: nullable MMMethod)
        do
                var n = nmc.method.node
                assert n isa AConcreteInitPropdef
@@ -107,7 +107,7 @@ redef class CompilerVisitor
                        end
                        j += 1
                end
-               var stop_prop: MMMethod = null
+               var stop_prop: nullable MMMethod = null
                if j < n.explicit_super_init_calls.length then
                        stop_prop = n.explicit_super_init_calls[j]
                end
@@ -120,7 +120,7 @@ redef class CompilerVisitor
                        if p.signature.arity == 0 then
                                cargs.add(cfc.varname(nmc.method_params[0]))
                        else
-                               for va in nmc.method_params do
+                               for va in nmc.method_params.as(not null) do
                                        cargs.add(cfc.varname(va))
                                end
                        end
@@ -152,7 +152,7 @@ class CFunctionContext
        attr _varindexes: Map[Variable, Int] = new HashMap[Variable, Int]
 
        # Are we currenlty in a closure definition?
-       readable writable attr _closure: NitMethodContext = null
+       readable writable attr _closure: nullable NitMethodContext = null
 
        # Return the cvariable of a Nit variable
        meth varname(v: Variable): String
@@ -165,7 +165,7 @@ class CFunctionContext
        end
 
        # Return the next available variable
-       meth get_var(comment: String): String
+       meth get_var(comment: nullable String): String
        do
                var v = variable(_variable_index)
                _variable_index = _variable_index + 1
@@ -272,30 +272,30 @@ end
 # A Nit method currenlty compiled
 class NitMethodContext
        # Current method compiled
-       readable attr _method: MMSrcMethod
+       readable attr _method: nullable MMSrcMethod
 
        # Association between parameters and the corresponding variables
-       readable writable attr _method_params: Array[ParamVariable] 
+       readable writable attr _method_params: nullable Array[ParamVariable]
 
        # Where a nit return must branch
-       readable writable attr _return_label: String 
-       
+       readable writable attr _return_label: nullable String
+
        # Where a nit break must branch
-       readable writable attr _break_label: String 
-       
+       readable writable attr _break_label: nullable String
+
        # Where a nit continue must branch
-       readable writable attr _continue_label: String 
+       readable writable attr _continue_label: nullable String
 
        # Variable where a functionnal nit return must store its value
-       readable writable attr _return_value: String 
+       readable writable attr _return_value: nullable String
 
        # Variable where a functionnal nit break must store its value
-       readable writable attr _break_value: String 
+       readable writable attr _break_value: nullable String
 
        # Variable where a functionnal nit continue must store its value
-       readable writable attr _continue_value: String 
+       readable writable attr _continue_value: nullable String
 
-       init(method: MMSrcMethod)
+       init(method: nullable MMSrcMethod)
        do
                _method = method
        end
@@ -304,7 +304,7 @@ end
 ###############################################################################
 
 redef class ClosureVariable
-       readable writable attr _ctypename: String
+       readable writable attr _ctypename: nullable String
 end
 
 redef class MMMethod
@@ -331,7 +331,7 @@ redef class MMMethod
        # Most calls are compiled with a table access,
        # primitive calles are inlined
        # == and != are guarded and possibly inlined
-       private meth intern_compile_call(v: CompilerVisitor, cargs: Array[String]): String
+       private meth intern_compile_call(v: CompilerVisitor, cargs: Array[String]): nullable String
        do
                var i = self
                if i isa MMSrcMethod then
@@ -373,9 +373,9 @@ redef class MMMethod
        end
 
        # Compile a call on self for given arguments and given closures
-       meth compile_call_and_closures(v: CompilerVisitor, cargs: Array[String], clos_defs: Array[PClosureDef]): String
+       meth compile_call_and_closures(v: CompilerVisitor, cargs: Array[String], clos_defs: nullable Array[PClosureDef]): nullable String
        do
-               var ve: String = null
+               var ve: String
                var arity = 0
                if clos_defs != null then arity = clos_defs.length
 
@@ -472,7 +472,7 @@ redef class MMAttribute
        end
 
        # Compile a write acces on selffor a given reciever.
-       meth compile_write_access(v: CompilerVisitor, n: PNode, recv: String, value: String)
+       meth compile_write_access(v: CompilerVisitor, n: nullable PNode, recv: String, value: String)
        do
                v.add_instr("{global.attr_access}({recv}) /*{local_class}::{name}*/ = {value};")
        end
@@ -576,7 +576,7 @@ redef class MMSrcMethod
        end
 
        # Compile the method body inline
-       meth do_compile_inside(v: CompilerVisitor, params: Array[String]): String is abstract
+       meth do_compile_inside(v: CompilerVisitor, params: Array[String]): nullable String is abstract
 end
 
 redef class MMReadImplementationMethod
@@ -681,7 +681,7 @@ end
 
 redef class AMethPropdef
        # Compile the method body
-       meth do_compile_inside(v: CompilerVisitor, method: MMSrcMethod, params: Array[String]): String is abstract
+       meth do_compile_inside(v: CompilerVisitor, method: MMSrcMethod, params: Array[String]): nullable String is abstract
 end
 
 redef class PSignature
@@ -695,7 +695,7 @@ redef class ASignature
                        var cname = v.cfc.register_variable(ap.variable)
                        v.nmc.method_params.add(ap.variable)
                        var orig_type = orig_sig[ap.position]
-                       if not orig_type < ap.variable.stype then
+                       if not orig_type < ap.variable.stype.as(not null) then
                                # FIXME: do not test always
                                # FIXME: handle formal types
                                v.add_instr("/* check if p<{ap.variable.stype} with p:{orig_type} */")
@@ -723,13 +723,13 @@ redef class AConcreteMethPropdef
                params.shift
                v.nmc.method_params = [self_var]
 
+               var orig_meth: MMLocalProperty = method.global.intro
+               var orig_sig = orig_meth.signature_for(method.signature.recv)
                if n_signature != null then
-                       var orig_meth: MMLocalProperty = method.global.intro
-                       var orig_sig = orig_meth.signature_for(method.signature.recv)
                        n_signature.compile_parameters(v, orig_sig, params)
                end
 
-               var itpos: String = null
+               var itpos: nullable String = null
                if self isa AConcreteInitPropdef then
                        itpos = "VAL2OBJ({selfcname})->vft[{method.local_class.global.init_table_pos_id}].i"
                        # v.add_instr("printf(\"{method.full_name}: inittable[%d] = %d\\n\", {itpos}, init_table[{itpos}]);")
@@ -747,7 +747,7 @@ redef class AConcreteMethPropdef
                        v.add_instr("init_table[{itpos}] = 1;")
                end
 
-               var ret: String = null
+               var ret: nullable String = null
                if method.signature.return_type != null then
                        ret = v.nmc.return_value
                end
@@ -803,7 +803,7 @@ redef class AInternMethPropdef
        do
                var c = method.local_class.name
                var n = method.name
-               var s: String = null
+               var s: nullable String = null
                if c == once "Int".to_symbol then
                        if n == once "object_id".to_symbol then
                                s = "{p[0]}"
@@ -1009,7 +1009,7 @@ redef class AVardeclExpr
                if n_expr == null then
                        v.add_instr("/*{cname} is variable {variable.name}*/")
                else
-                       var e = v.compile_expr(n_expr)
+                       var e = v.compile_expr(n_expr.as(not null))
                        v.add_assignment(cname, e)
                end
        end
@@ -1019,8 +1019,8 @@ redef class AReturnExpr
        redef meth compile_stmt(v)
        do
                if n_expr != null then
-                       var e = v.compile_expr(n_expr)
-                       v.add_assignment(v.nmc.return_value, e)
+                       var e = v.compile_expr(n_expr.as(not null))
+                       v.add_assignment(v.nmc.return_value.as(not null), e)
                end
                if v.cfc.closure == v.nmc then v.add_instr("closctx->has_broke = &({v.nmc.return_value});")
                v.add_instr("goto {v.nmc.return_label};")
@@ -1031,8 +1031,8 @@ redef class ABreakExpr
        redef meth compile_stmt(v)
        do
                if n_expr != null then
-                       var e = v.compile_expr(n_expr)
-                       v.add_assignment(v.nmc.break_value, e)
+                       var e = v.compile_expr(n_expr.as(not null))
+                       v.add_assignment(v.nmc.break_value.as(not null), e)
                end
                if v.cfc.closure == v.nmc then v.add_instr("closctx->has_broke = &({v.nmc.break_value}); closctx->broke_value = *closctx->has_broke;")
                v.add_instr("goto {v.nmc.break_label};")
@@ -1043,8 +1043,8 @@ redef class AContinueExpr
        redef meth compile_stmt(v)
        do
                if n_expr != null then
-                       var e = v.compile_expr(n_expr)
-                       v.add_assignment(v.nmc.continue_value, e)
+                       var e = v.compile_expr(n_expr.as(not null))
+                       v.add_assignment(v.nmc.continue_value.as(not null), e)
                end
                v.add_instr("goto {v.nmc.continue_label};")
        end
@@ -1331,7 +1331,7 @@ redef class AStringFormExpr
                v.add_instr("else \{")
                v.indent
                v.cfc.free_var(cvar)
-               var e = meth_with_native.compile_constructor_call(v, stype , ["BOX_NativeString(\"{_cstring}\")", "TAG_Int({_cstring_length})"])
+               var e = meth_with_native.compile_constructor_call(v, stype, ["BOX_NativeString(\"{_cstring}\")", "TAG_Int({_cstring_length})"])
                v.add_assignment(cvar, e)
                v.add_instr("once_value_{i} = {cvar};")
                v.unindent
@@ -1343,10 +1343,10 @@ redef class AStringFormExpr
        protected meth string_text: String is abstract
 
        # The string in a C native format
-       protected attr _cstring: String
+       protected attr _cstring: nullable String
 
        # The string length in bytes
-       protected attr _cstring_length: Int
+       protected attr _cstring_length: nullable Int
 
        # Compute _cstring and _cstring_length using string_text
        protected meth compute_string_info
@@ -1390,7 +1390,7 @@ end
 redef class ASuperstringExpr
        redef meth compile_expr(v)
        do
-               var array = meth_with_capacity.compile_constructor_call(v, atype, ["TAG_Int({n_exprs.length})"])
+               var array = meth_with_capacity.compile_constructor_call(v, atype.as(not null), ["TAG_Int({n_exprs.length})"])
                array = v.ensure_var(array, "Array (for super-string)")
 
                for ne in n_exprs do
@@ -1453,7 +1453,7 @@ redef class ASuperExpr
                return e
        end
 
-       private meth intern_compile_call(v: CompilerVisitor): String
+       private meth intern_compile_call(v: CompilerVisitor): nullable String
        do
                var arity = v.nmc.method_params.length - 1
                if init_in_superclass != null then
@@ -1519,7 +1519,7 @@ redef class AAbsAbsSendExpr
        # Compile each argument and add them to the array
        meth compile_arguments_in(v: CompilerVisitor, cargs: Array[String])
        do
-               for a in arguments do
+               for a in arguments.as(not null) do
                        cargs.add(v.compile_expr(a))
                end
        end
@@ -1527,14 +1527,14 @@ redef class AAbsAbsSendExpr
 end
 
 redef class ASendExpr
-       private meth intern_compile_call(v: CompilerVisitor): String
+       private meth intern_compile_call(v: CompilerVisitor): nullable String
        do
                var recv = v.compile_expr(n_expr)
                var cargs = new Array[String]
                cargs.add(recv)
                compile_arguments_in(v, cargs)
 
-               var e: String
+               var e: nullable String
                if prop_signature.closures.is_empty then
                        e = prop.intern_compile_call(v, cargs)
                else
@@ -1586,7 +1586,7 @@ redef class ANewExpr
        do
                var cargs = new Array[String]
                compile_arguments_in(v, cargs)
-               return prop.compile_constructor_call(v, stype, cargs) 
+               return prop.compile_constructor_call(v, stype, cargs)
        end
 
        redef meth compile_stmt(v) do abort
@@ -1598,12 +1598,12 @@ redef class PClosureDef
        meth compile_closure(v: CompilerVisitor, closcn: String): String is abstract
 
        # Compile the closure definition inside the current C function.
-       meth do_compile_inside(v: CompilerVisitor, params: Array[String]): String is abstract
+       meth do_compile_inside(v: CompilerVisitor, params: nullable Array[String]): nullable String is abstract
 end
 
 redef class AClosureDef
        # The cname of the function
-       readable attr _cname: String
+       readable attr _cname: nullable String
 
        redef meth compile_closure(v, closcn)
        do
@@ -1715,7 +1715,7 @@ redef class AClosureDef
 
                v.add_instr("{v.nmc.continue_label}: while(false);")
 
-               var ret: String = null
+               var ret: nullable String = null
                if closure.signature.return_type != null then ret = v.nmc.continue_value
 
                v.nmc.continue_value = old_cv
@@ -1727,12 +1727,12 @@ redef class AClosureDef
 end
 
 redef class PClosureDecl
-       meth do_compile_inside(v: CompilerVisitor, params: Array[String]): String is abstract
+       meth do_compile_inside(v: CompilerVisitor, params: Array[String]): nullable String is abstract
 end
 redef class AClosureDecl
        redef meth do_compile_inside(v, params)
        do
-               if n_signature != null then n_signature.compile_parameters(v, variable.closure.signature, params)
+               n_signature.compile_parameters(v, variable.closure.signature, params)
 
                var old_cv = v.nmc.continue_value
                var old_cl = v.nmc.continue_label
@@ -1746,7 +1746,7 @@ redef class AClosureDecl
 
                v.add_instr("{v.nmc.continue_label}: while(false);")
 
-               var ret: String = null
+               var ret: nullable String = null
                if variable.closure.signature.return_type != null then ret = v.nmc.continue_value
 
                v.nmc.continue_value = old_cv
@@ -1758,11 +1758,11 @@ redef class AClosureDecl
 end
 
 redef class AClosureCallExpr
-       meth intern_compile_call(v: CompilerVisitor): String
+       meth intern_compile_call(v: CompilerVisitor): nullable String
        do
                var cargs = new Array[String]
                compile_arguments_in(v, cargs)
-               var va: String = null
+               var va: nullable String = null
                if variable.closure.signature.return_type != null then va = v.cfc.get_var("Closure call result value")
 
                if variable.closure.is_optional then
@@ -1771,7 +1771,7 @@ redef class AClosureCallExpr
                        var n = variable.decl
                        assert n isa AClosureDecl
                        var s = n.do_compile_inside(v, cargs)
-                       if s != null then v.add_assignment(va, s)
+                       if s != null then v.add_assignment(va.as(not null), s)
                        v.unindent
                        v.add_instr("} else \{")
                        v.indent
@@ -1788,7 +1788,7 @@ redef class AClosureCallExpr
                end
                v.add_instr("if ({ivar}->has_broke) \{")
                v.indent
-               if n_closure_defs != null and n_closure_defs.length == 1 then do
+               if n_closure_defs.length == 1 then do
                        n_closure_defs.first.do_compile_inside(v, null)
                end
                if v.cfc.closure == v.nmc then v.add_instr("if ({ivar}->has_broke) \{ closctx->has_broke = {ivar}->has_broke; closctx->broke_value = {ivar}->broke_value;\}")
index 2c7123a..8d53ece 100644 (file)
@@ -38,12 +38,10 @@ class MMContext
        # All known modules
        readable attr _modules: Array[MMModule] = new Array[MMModule]
 
-       # Register a new module with the modules it depends on 
+       # Register a new module with the modules it depends on
        meth add_module(module: MMModule, supers: Array[MMModule])
        do
-               assert supers != null
                _module_hierarchy.add(module, _module_hierarchy.select_smallests(supers))
-               assert module.name != null
                _modules.add(module)
                module._mhe = _module_hierarchy[module]
        end
@@ -54,7 +52,6 @@ class MMContext
        # Register a local class
        meth add_local_class(c: MMLocalClass, sup: Array[MMLocalClass])
        do
-               assert sup != null
                var csup = new Array[MMLocalClass]
                var csups = new Array[String]
                for s in sup do
@@ -82,10 +79,10 @@ class MMDirectory
 
        # Parent directory
        # null if none
-       readable attr _parent: MMDirectory
+       readable attr _parent: nullable MMDirectory
 
        # The module that introduces the directory if any
-       readable writable attr _owner: MMModule
+       readable writable attr _owner: nullable MMModule = null
 
        # Known modules in the directory
        readable attr _modules: Map[Symbol, MMModule] = new HashMap[Symbol, MMModule]
@@ -97,10 +94,7 @@ class MMDirectory
                _modules[module.name] = module
        end
 
-       # Directory hierarchy element
-       readable attr _dhe: PartialOrderElement[MMDirectory]
-
-       init(name: Symbol, path: String, parent: MMDirectory) do
+       init(name: Symbol, path: String, parent: nullable MMDirectory) do
                _name = name
                _path = path
                _parent = parent
@@ -130,7 +124,7 @@ class MMModule
        readable attr _filename: String
 
        # Module dependence hierarchy element
-       readable attr _mhe: PartialOrderElement[MMModule] 
+       readable attr _mhe: nullable PartialOrderElement[MMModule]
 
        # All global classes of the module (defined and imported)
        readable attr _global_classes: Array[MMGlobalClass] = new Array[MMGlobalClass]
@@ -164,12 +158,7 @@ class MMModule
                _name = name
                _directory = dir
                _context = context
-
-               if dir == null then
-                       _full_name = name
-               else
-                       _full_name = dir.full_name_for(name)
-               end
+               _full_name = dir.full_name_for(name)
                _filename = filename
        end
 
@@ -219,8 +208,6 @@ class MMModule
        # Get the local class associated with a global class 
        meth [](c: MMGlobalClass): MMLocalClass
        do
-               assert _local_class_by_global != null
-               assert c != null
                return _local_class_by_global[c]
        end
 
@@ -248,7 +235,6 @@ class MMModule
        # Assign super_classes for a local class
        meth set_supers_class(c: MMLocalClass, supers: Array[MMLocalClass])
        do
-               assert supers != null
                var tab = _class_specialization_hierarchy.select_smallests(supers)
                c._cshe = _class_specialization_hierarchy.add(c,tab)
                var tab_all = c.crhe.direct_greaters.to_a
@@ -259,7 +245,6 @@ class MMModule
        # Register a local class and its global class in the module
        private meth register_global_class(c: MMLocalClass)
        do
-               assert c.global != null
                _local_class_by_global[c.global] = c
        end
 end
@@ -299,9 +284,7 @@ class MMGlobalClass
        # register a new Local class to local class hierarchy (set the crhe value)
        private meth register_local_class(c: MMLocalClass)
        do
-               assert c.module != null
-               assert c.crhe == null
-               var sup = new  Array[MMLocalClass]
+               var sup = new Array[MMLocalClass]
                for s in class_refinement_hierarchy do
                        if c.module.mhe < s.module and s isa MMConcreteClass then
                                sup.add(s)
@@ -351,25 +334,29 @@ class MMLocalClass
        readable attr _module: MMModule
 
        # The global class of the local class
-       readable attr _global: MMGlobalClass 
+       meth global: MMGlobalClass do return _global.as(not null)
+       attr _global: nullable MMGlobalClass
 
        # The local class refinement hierarchy element
-       readable attr _crhe: PartialOrderElement[MMLocalClass] 
+       meth crhe: PartialOrderElement[MMLocalClass] do return _crhe.as(not null)
+       attr _crhe: nullable PartialOrderElement[MMLocalClass]
 
        # The local class specialization hierarchy element
-       readable attr _cshe: PartialOrderElement[MMLocalClass] 
+       meth cshe: PartialOrderElement[MMLocalClass] do return _cshe.as(not null)
+       attr _cshe: nullable PartialOrderElement[MMLocalClass]
 
        # The local class full hierarchy element
-       readable attr _che: PartialOrderElement[MMLocalClass]
+       meth che: PartialOrderElement[MMLocalClass] do return _che.as(not null)
+       attr _che: nullable PartialOrderElement[MMLocalClass]
 
        # Association between local properties and global properties
-       readable attr _local_property_by_global: Map[MMGlobalProperty, MMLocalProperty] 
+       attr _local_property_by_global: Map[MMGlobalProperty, MMLocalProperty] = new HashMap[MMGlobalProperty, MMLocalProperty]
 
        # All known global properties
-       readable attr _global_properties: Set[MMGlobalProperty] 
+       readable attr _global_properties: Set[MMGlobalProperty] = new HashSet[MMGlobalProperty]
 
        # Dictionnary of global properties
-       readable attr _properties_by_name: Map[Symbol, Array[MMGlobalProperty]]
+       attr _properties_by_name: Map[Symbol, Array[MMGlobalProperty]] = new HashMap[Symbol, Array[MMGlobalProperty]]
 
        # Create a new class with a given name and arity
        protected init(mod: MMModule, name: Symbol, arity: Int)
@@ -400,7 +387,6 @@ class MMLocalClass
        # refined classes for this class
        meth set_global(g: MMGlobalClass)
        do
-               assert g != null
                _global = g
                _global.register_local_class(self)
                _module.register_global_class(self)
@@ -433,7 +419,6 @@ class MMLocalClass
        # TODO: Will disapear when qualified names will be available
        meth method(na: Symbol): MMGlobalProperty
        do
-               assert _properties_by_name != null
                return _properties_by_name[na].first
        end
 
@@ -441,7 +426,6 @@ class MMLocalClass
        # TODO: Will disapear when qualified names will be available
        meth select_method(name: Symbol): MMMethod
        do
-               assert name != null
                var gp = method(name)
                var res = self[gp]
                assert res isa MMMethod
@@ -452,7 +436,6 @@ class MMLocalClass
        # TODO: Will disapear when qualified names will be available
        meth select_attribute(name: Symbol): MMAttribute
        do
-               assert name != null
                var gp = attribute(name)
                var res = self[gp]
                assert res isa MMAttribute
@@ -480,11 +463,7 @@ class MMLocalClass
        # Register a local property and associate it with its global property
        meth register_local_property(p: MMLocalProperty)
        do
-               assert p.global != null
-               # FIXME: Why a test?
-               if not _local_property_by_global.has_key(p.global) then
-                       _local_property_by_global[p.global] = p
-               end
+               _local_property_by_global[p.global] = p
        end
 
        # Register a global property and associate it with its name
@@ -530,10 +509,10 @@ class MMGlobalProperty
        readable attr _intro: MMLocalProperty
 
        # The local class that introduces the global property
-       meth local_class: MMLocalClass
-       do
-               return intro.local_class
-       end
+       meth local_class: MMLocalClass
+       do
+               return intro.local_class
+       end
 
        # The property redefinition hierarchy
        readable attr _property_hierarchy: PartialOrder[MMLocalProperty] = new PartialOrder[MMLocalProperty]
@@ -541,10 +520,6 @@ class MMGlobalProperty
        # Create a new global property introduced by a local one
        protected init(p: MMLocalProperty)
        do
-               assert p != null
-
-               _property_hierarchy = new PartialOrder[MMLocalProperty]
-       
                _intro = p
                add_local_property(p, new Array[MMLocalProperty])
        end
@@ -554,8 +529,6 @@ class MMGlobalProperty
        # Register a new local property
        meth add_local_property(i: MMLocalProperty, sup: Array[MMLocalProperty])
        do
-               assert i != null
-               assert sup != null
                i._prhe = _property_hierarchy.add(i,sup)
        end
 
@@ -566,7 +539,7 @@ class MMGlobalProperty
        meth is_method: Bool do return intro isa MMMethod
 
        # Is the global property a constructor (thus also a method)?
-       readable writable attr _is_init: Bool
+       readable writable attr _is_init: Bool = false
 
        # Is the global property a constructor for a given class?
        meth is_init_for(c: MMLocalClass): Bool
@@ -593,10 +566,15 @@ class MMLocalProperty
        readable attr _local_class: MMLocalClass
 
        # The global property where belong the local property
-       readable attr _global: MMGlobalProperty
+       attr _global: nullable MMGlobalProperty
+
+       meth global: MMGlobalProperty do return _global.as(not null)
+       meth is_global_set: Bool do return _global != null
 
        # Redefinition hierarchy of the local property
-       readable attr _prhe: PartialOrderElement[MMLocalProperty]
+       attr _prhe: nullable PartialOrderElement[MMLocalProperty]
+
+       meth prhe: PartialOrderElement[MMLocalProperty] do return _prhe.as(not null)
 
        # The module of the local property
        meth module: MMModule do return _local_class.module
@@ -604,7 +582,7 @@ class MMLocalProperty
        # Full expanded name with all qualifications
        meth full_name: String
        do
-               if global == null then
+               if _global == null then
                        return "{local_class.module}::{local_class}::(?::{name})"
                else if global.intro == self then
                        return "{local_class.module}::{local_class}::{name}"
@@ -616,7 +594,6 @@ class MMLocalProperty
        # set the global property for this property
        meth set_global(g: MMGlobalProperty)
        do
-               assert g != null
                _global = g
                _local_class.register_local_property(self)
        end
@@ -625,10 +602,11 @@ class MMLocalProperty
        meth new_global
        do
                assert _global == null
-               _global = new MMGlobalProperty(self)
-               _local_class.register_global_property(_global)
+               var global = new MMGlobalProperty(self)
+               _global = global
+               _local_class.register_global_property(global)
        end
-       
+
        redef meth to_s do return name.to_s
 
        # Is the concrete property contain a `super' in the body?
index dfff8c3..dd84e14 100644 (file)
@@ -81,7 +81,7 @@ redef class MMLocalClass
        do
                if _base_type_cache == null and is_generic then
                        _base_type_cache = get_instantiate_type(formals_types)
-                       return _base_type_cache
+                       return _base_type_cache.as(not null)
                else
                        return super
                end
@@ -142,7 +142,6 @@ special MMTypeClass
                        var b = _local_class.for_module(mod)
                        t = b.get_instantiate_type(parms)
                end
-               assert t != null
                return t
        end
 
@@ -162,8 +161,6 @@ special MMTypeClass
                        return false
                end
                for i in [0..t.length[ do
-                       assert _params[i] != null
-                       assert t[i] != null
                        if _params[i] != t[i] then
                                return false
                        end
@@ -212,7 +209,6 @@ special MMTypeFormal
                if module != mod then
                        t = mod[_def_class.global].get_formal(position)
                end
-               assert t != null
                return t
        end
 
@@ -234,7 +230,6 @@ special MMTypeFormal
                #end
                assert old_r isa MMTypeGeneric
                var reduct = old_r.params[position]
-               assert reduct != null
                return reduct
        end
 
@@ -246,7 +241,6 @@ special MMTypeFormal
 
        init(n: Symbol, p: Int, intro: MMLocalClass)
        do
-               assert n != null
                super(n, null)
                _position = p
                _def_class = intro
index a739844..2b2275b 100644 (file)
@@ -106,14 +106,13 @@ redef class MMLocalClass
                end
        end
 
+       attr _are_global_properties_inherited: Bool = false
+
        # Inherit global properties for a class
        meth inherit_global_properties
        do
-               if _global_properties != null then return
-
-               _global_properties = new HashSet[MMGlobalProperty]
-               _properties_by_name = new HashMap[Symbol, Array[MMGlobalProperty]]
-               _local_property_by_global = new HashMap[MMGlobalProperty, MMLocalProperty]
+               if _are_global_properties_inherited then return
+               _are_global_properties_inherited = true
 
                var names = _properties_by_name
                var set = _global_properties
@@ -218,10 +217,8 @@ redef class MMLocalClass
        do
                assert _crhe != null
                for ref in _crhe.direct_greaters do
-                       assert ref.cshe != null
                        for sup in ref.cshe.direct_greaters do
                                var cla = sup.for_module(_module)
-                               assert cla != null
                                supers.add(cla)
                        end
                end
@@ -239,7 +236,6 @@ redef class MMLocalClass
        private meth compute_super_parents(supers: Array[MMLocalClass])
        do
                for p in supers do
-                       assert p != null
                        p.compute_super_classes
                end
        end
@@ -323,7 +319,6 @@ redef class MMLocalClass
        private meth inherit_local_property(glob: MMGlobalProperty): MMLocalProperty
        do
                assert not _local_property_by_global.has_key(glob)
-               assert glob != null
 
                var impl: MMLocalProperty
 
@@ -389,11 +384,9 @@ redef class MMAncestor
        # Add this ancestor and it's super one in tab
        private meth add_in(tab: Array[MMAncestor])
        do
-               assert ancestor: stype != null
-               assert local_class: stype.local_class != null
                tab.add(self)
                stype.local_class.compute_ancestors
-               for anc in stype.local_class.ancestors do
+               for anc in stype.local_class.ancestors.as(not null) do
                        var aaa = anc.stype.for_module(stype.module)
                        var a = aaa.adapt_to(stype).for_module(inheriter.module)
                        if a.local_class != inheriter.local_class then
@@ -454,9 +447,6 @@ special MMAncestor
 
        init(b: MMLocalClass, anc: MMType)
        do
-               assert b != null
-               assert b.module != null
-               assert anc != null
                inheriter = b.get_type
                stype = anc
        end
index 7e7d936..64cefc1 100644 (file)
@@ -95,7 +95,7 @@ special Collection[E]
        end
 
        # Get an array consisting of only minimal elements
-       meth select_smallests(c: Collection[E]): Array[E]
+       meth select_smallests(c: nullable Collection[E]): Array[E]
        do
                if c == null then return new Array[E]
                assert has_all(c)
@@ -114,9 +114,9 @@ special Collection[E]
                end
                return res
        end
-       
+
        # Add a new element inferior of some others
-       meth add(e: E, supers: Collection[E]): PartialOrderElement[E]
+       meth add(e: E, supers: nullable Collection[E]): PartialOrderElement[E]
        do
                assert not has(e)
                assert supers == null or has_all(supers)
@@ -209,7 +209,7 @@ class PartialOrderElement[E]
        readable attr _greaters: Set[E]
 
        # Cached result of greaters_and_self
-       attr _greaters_and_self_cache: Array[E]
+       attr _greaters_and_self_cache: nullable Array[E]
 
        # Elements that are self or greater than self
        meth greaters_and_self: Collection[E]
@@ -218,7 +218,7 @@ class PartialOrderElement[E]
                        _greaters_and_self_cache = _greaters.to_a
                        _greaters_and_self_cache.add(_value)
                end
-               return _greaters_and_self_cache
+               return _greaters_and_self_cache.as(not null)
        end
        
        # Cached value of _order.length to validade smallers_cache
@@ -238,7 +238,7 @@ class PartialOrderElement[E]
        end
 
        # Cached result of linear_extension
-       attr _linear_extension_cache: Array[E]
+       attr _linear_extension_cache: nullable Array[E]
 
        # Return a linear extension of self
        # FIXME: Uses the C++ algo that is not good!
@@ -262,11 +262,11 @@ class PartialOrderElement[E]
                        end
                        _linear_extension_cache = res
                end
-               return _linear_extension_cache
+               return _linear_extension_cache.as(not null)
        end
 
        # Cached result of reverse_linear_extension
-       attr _reverse_linear_extension_cache: Array[E]
+       attr _reverse_linear_extension_cache: nullable Array[E]
 
        # Return a reverse linear extension of self
        # FIXME: Uses the C++ algo that is not good!
@@ -281,7 +281,7 @@ class PartialOrderElement[E]
                        res.add(value)
                        _linear_extension_cache = res.to_a
                end
-               return _linear_extension_cache
+               return _linear_extension_cache.as(not null)
        end
 
        # Is value < o according to order?
index c96a1b8..7d57090 100644 (file)
@@ -22,13 +22,13 @@ intrude import abstractmetamodel
 
 redef class MMLocalClass
        # Cached result of get_type
-       attr _base_type_cache: MMType
+       attr _base_type_cache: nullable MMType
 
        # Return the type of self for this class
        meth get_type: MMType
        do
                if _base_type_cache == null then _base_type_cache = new MMTypeSimpleClass(self)
-               return _base_type_cache
+               return _base_type_cache.as(not null)
        end
 
        # Register a new ancestor
@@ -40,7 +40,7 @@ redef class MMLocalClass
        end
 
        # Array of ancestor that associate each superclass with the corresponding ancestor
-       readable attr _ancestors: Map[MMLocalClass, MMAncestor]
+       readable attr _ancestors: nullable Map[MMLocalClass, MMAncestor]
 
        # The ancestor type for a given superclass
        meth ancestor(c: MMLocalClass): MMType
@@ -51,13 +51,13 @@ end
 
 redef class MMLocalProperty
        # The signature of the property (where it is declared)
-       readable writable attr _signature: MMSignature
+       readable writable attr _signature: nullable MMSignature
 
        attr _signatures_cache: HashMap[MMType, MMSignature] = new HashMap[MMType, MMSignature]
 
        # Return the adapted signature of self for a receiver of type t
        meth signature_for(t: MMType): MMSignature do
-               if t == local_class.get_type then return signature
+               if t == local_class.get_type then return signature.as(not null)
 
                if _signatures_cache.has_key(t) then return _signatures_cache[t]
 
@@ -70,34 +70,34 @@ end
 # Signature for local properties
 class MMSignature
        # The type of the reveiver
-       readable attr _recv: MMType 
+       readable attr _recv: MMType
 
        # The parameter types
-       attr _params: Array[MMType]
+       attr _params: Array[MMType]
 
        # The return type
-       readable attr _return_type: MMType 
+       readable attr _return_type: nullable MMType
 
        # The closure parameters
-       readable attr _closures: Array[MMClosure] = new Array[MMClosure]
+       readable attr _closures: Array[MMClosure] = new Array[MMClosure]
 
        # Number of parameters
        meth arity: Int
        do
-               assert _params != null
                return _params.length
        end
 
        # Is self a valid subtype of an other signature
        meth <(s: MMSignature): Bool
        do
-               assert s != null
                if self == s then
                        return true
                end
                assert _recv.module == s.recv.module
-               if arity != s.arity or (_return_type == null) != (s.return_type == null) then return false
-               if _return_type != null and not _return_type < s.return_type then
+               var rt = _return_type
+               var srt = s.return_type
+               if arity != s.arity or (rt == null) != (srt == null) then return false
+               if rt != null and not rt < srt.as(not null) then
                        return false
                end
 
@@ -124,7 +124,7 @@ class MMSignature
        redef meth to_s
        do
                var s = new Buffer
-               if _params != null and _params.length > 0 then
+               if _params.length > 0 then
                        var tmp: String
                        var a = new Array[String].with_capacity(_params.length)
                        for i in [0.._params.length[ do
@@ -148,12 +148,9 @@ class MMSignature
                        return self
                end
                var mod = r.module
-               var p = _params
-               if p != null then
-                       p = new Array[MMType]
-                       for i in _params do
-                               p.add(i.for_module(mod).adapt_to(r))
-                       end
+               var p = new Array[MMType]
+               for i in _params do
+                       p.add(i.for_module(mod).adapt_to(r))
                end
                var rv = _return_type
                if rv != null then
@@ -166,42 +163,36 @@ class MMSignature
                return res
        end
 
-       attr _not_for_self_cache: MMSignature = null
+       attr _not_for_self_cache: nullable MMSignature = null
 
        # Return a type approximation if the reveiver is not self
        # Useful for virtual types
        meth not_for_self: MMSignature
        do
-               var res = _not_for_self_cache
-               if res != null then return res
+               if _not_for_self_cache != null then return _not_for_self_cache.as(not null)
 
                var need_for_self = false
-               var p = _params
-               if p != null then
-                       p = new Array[MMType]
-                       for i in _params do
-                               var i2 = i.not_for_self
-                               if i != i2 then need_for_self = true
-                               p.add(i2)
-                       end
+               var p = new Array[MMType]
+               for i in _params do
+                       var i2 = i.not_for_self
+                       if i != i2 then need_for_self = true
+                       p.add(i2)
                end
-               
+
                var rv = _return_type
                if rv != null then
                        rv = rv.not_for_self
                        if rv != _return_type then need_for_self = true
                end
-               
-               var clos = _closures
-               if clos != null then
-                       clos = new Array[MMClosure]
-                       for c in _closures do
-                               var c2 = c.not_for_self
-                               if c2 != c then need_for_self = true
-                               clos.add(c2)
-                       end
+
+               var clos = new Array[MMClosure]
+               for c in _closures do
+                       var c2 = c.not_for_self
+                       if c2 != c then need_for_self = true
+                       clos.add(c2)
                end
 
+               var res: MMSignature
                if need_for_self then
                        res = new MMSignature(p, rv, _recv)
                        res.closures.add_all(clos)
@@ -213,9 +204,8 @@ class MMSignature
                return res
        end
 
-       init(params: Array[MMType], return_type: MMType, r: MMType)
+       init(params: Array[MMType], return_type: nullable MMType, r: MMType)
        do
-               assert params != null
                _params = params
                _return_type = return_type
                _recv = r
@@ -269,10 +259,16 @@ end
 # Inheritance relation between two types
 abstract class MMAncestor
        # The inherited type
-       readable writable attr _stype: MMType = null 
+       writable attr _stype: nullable MMType = null
+
+       # The inherited type
+       meth stype: MMType do return _stype.as(not null)
 
        # The inheriter (heir) type
-       readable writable attr _inheriter: MMType  = null
+       writable attr _inheriter: nullable MMType = null
+
+       # The inheriter (heir) type
+       meth inheriter: MMType do return _inheriter.as(not null)
 
        meth is_reffinement: Bool do
                return stype.module != stype.module
@@ -287,7 +283,7 @@ abstract class MMAncestor
 
        redef meth to_s
        do
-               if stype == null then
+               if _stype == null then
                        return local_class.to_s
                else
                        return stype.to_s
@@ -350,7 +346,7 @@ abstract class MMType
        meth not_for_self: MMType do return self
 
        # The nullable version of self (if needed)
-       attr _as_nullable_cache: MMType = null
+       attr _as_nullable_cache: nullable MMType = null
 
        # IS the type can accept null?
        meth is_nullable: Bool do return false
@@ -423,7 +419,7 @@ class MMTypeClass
 special MMType
        redef readable attr _local_class: MMLocalClass
        redef meth module do return _local_class.module end
-       redef meth <(t) do return t != null and t.is_supertype(self)
+       redef meth <(t) do return t.is_supertype(self)
 
        redef meth to_s
        do
@@ -432,14 +428,10 @@ special MMType
 
        redef meth upcast_for(c)
        do
-               assert _local_class != null
-               assert c != null
-
                var t: MMType = self
                if _local_class != c then
                        t = _local_class.ancestor(c)
                end
-               assert t != null
                return t
        end
 
@@ -462,7 +454,6 @@ special MMTypeClass
                if module != mod then
                        t = _local_class.for_module(mod).get_type
                end
-               assert t != null
                return t
        end
 
index 987d4fd..5ecf49f 100644 (file)
@@ -31,17 +31,13 @@ special MMType
        redef meth is_valid do return _bound != null and _bound.is_valid
 
        # The name of the type
-       readable attr _name: Symbol 
+       readable attr _name: Symbol
 
        # The type refered
-       meth bound: MMType
-       do
-               assert is_valid
-               return _bound
-       end
-       attr _bound: MMType
+       meth bound: MMType do return _bound.as(not null)
+       attr _bound: nullable MMType
 
-       redef meth <(t) do return t != null and (t == self or t.is_supertype(_bound))
+       redef meth <(t) do return t == self or t.is_supertype(bound)
        redef meth is_supertype(t) do return _bound.is_supertype(t)
        redef meth is_nullable do return _bound.is_nullable
        redef meth direct_type do return _bound.direct_type
@@ -49,7 +45,7 @@ special MMType
 
        redef meth to_s do return _name.to_s
 
-       protected init(name: Symbol, bound: MMType)
+       protected init(name: Symbol, bound: nullable MMType)
        do
                _name = name
                _bound = bound
index 146784c..8a103b0 100644 (file)
@@ -44,7 +44,7 @@ redef class MMSignature
                return s
        end
 
-       redef init(params: Array[MMType], return_type: MMType, r: MMType)
+       redef init(params, return_type, r)
        do
                super
                _vararg_rank = -1
index 752d57f..12a85d7 100644 (file)
@@ -29,7 +29,7 @@ end
 class MMTypeProperty
 special MMLocalProperty
        # The virtual static type associated
-       meth stype_for(recv: MMType): MMVirtualType
+       meth stype_for(recv: MMType): nullable MMVirtualType
        do
                var prop = recv.local_class[global]
                assert prop isa MMTypeProperty
@@ -39,7 +39,7 @@ special MMLocalProperty
        # Cached results of stype
        attr _stypes_cache: HashMap[MMType, MMVirtualType] = new HashMap[MMType, MMVirtualType]
 
-       private meth real_stype_for(recv: MMType): MMVirtualType
+       private meth real_stype_for(recv: MMType): nullable MMVirtualType
        do
                # If the signature is not build: Circular definition
                if signature == null then return null
@@ -83,7 +83,7 @@ special MMTypeFormal
 
        redef meth adapt_to(recv)
        do
-               return property.stype_for(recv)
+               return property.stype_for(recv).as(not null)
        end
 end
 
@@ -94,15 +94,13 @@ redef class MMLocalClass
                if prop.is_virtual_type then
                        return prop
                end
-               return null
+               abort
        end
 
        # Select a virtual type property by its name
        meth select_virtual_type(name: Symbol): MMTypeProperty
        do
-               assert name != null
                var gp = virtual_type(name)
-               if gp == null then return null
                var res = self[gp]
                assert res isa MMTypeProperty
                return res
index 2660eca..13adce2 100644 (file)
@@ -50,7 +50,7 @@ special MMContext
        end
 
        # Paths where to locate modules files
-       readable attr _paths: Array[String]
+       readable attr _paths: Array[String] = new Array[String]
 
        # List of module loaders
        attr _loaders: Array[ModuleLoader] = new Array[ModuleLoader]
@@ -89,7 +89,6 @@ special MMContext
                option_context.parse(args)
 
                # Setup the paths value
-               _paths = new Array[String]
                paths.append(opt_path.value)
 
                var path_env = once ("NIT_PATH".to_symbol).environ
@@ -110,7 +109,7 @@ special MMContext
        # Load and process a module in a directory (or a parent directory).
        # If the module is already loaded, just return it without further processing.
        # If no module is found, just return null without complaining.
-       private meth try_to_load(module_name: Symbol, dir: MMDirectory): MMModule
+       private meth try_to_load(module_name: Symbol, dir: MMDirectory): nullable MMModule
        do
                # Look in the module directory
                for m in dir.modules do
@@ -190,11 +189,11 @@ special MMContext
 
        # Locate, load and analysis a module (and its supermodules).
        # If the module is already loaded, just return it without further processing.
-       meth get_module(module_name: Symbol, from: MMModule): MMModule
+       meth get_module(module_name: Symbol, from: nullable MMModule): MMModule
        do
                var m: MMModule
                if from != null then
-                       var dir = from.directory
+                       var dir: nullable MMDirectory = from.directory
                        while dir != null do
                                var m = try_to_load(module_name, dir)
                                if m != null then return m
@@ -237,7 +236,7 @@ class ModuleLoader
        meth file_type: String is abstract
 
        # Try to load a new module directory
-       meth try_to_load_dir(dirname: Symbol, parent_dir: MMDirectory): MMDirectory
+       meth try_to_load_dir(dirname: Symbol, parent_dir: MMDirectory): nullable MMDirectory
        do
                var fname = "{parent_dir.path}/{dirname}/"
                if not fname.file_exists then return null
index 5c65f1f..087793d 100644 (file)
@@ -44,8 +44,8 @@ special AbstractCompiler
                output_file = opt_output.value
                boost = opt_boost.value
                no_cc = opt_no_cc.value
-               ext_prefix = opt_extension_prefix.value
-               if ext_prefix == null then ext_prefix = ""
+               var ext = opt_extension_prefix.value
+               if ext != null then ext_prefix = ext else ext_prefix = ""
                global = opt_global.value
                compdir = opt_compdir.value
                if compdir == null then
index df1cad4..4c98a84 100644 (file)
@@ -26,7 +26,7 @@ import abstracttool
 class DocContext
 special AbstractCompiler
        # Destination directory
-       readable writable attr _dir: String
+       readable writable attr _dir: String = "."
 
        # Content of a generated file
        attr _stage_context: StageContext = new StageContext(null)
@@ -51,6 +51,7 @@ special AbstractCompiler
                        s.content.add_all(_stage_context.content)
                        s.validate = true
                end
+               assert s != null
                _stage_context = s
        end
 
@@ -66,13 +67,13 @@ special AbstractCompiler
        end
 
        # Currently computed module
-       readable attr _module: MMSrcModule
+       readable attr _module: nullable MMSrcModule
 
        # Is the current directory module computed as a simple modude ?
-       readable writable attr _inside_mode: Bool
+       readable writable attr _inside_mode: Bool = false
 
        # Is the current module computed as a intruded one ?
-       readable writable attr _intrude_mode: Bool
+       readable writable attr _intrude_mode: Bool = false
 
        # Compued introducing entities (for the index)
        attr _entities: Array[MMEntity] = new Array[MMEntity]
@@ -215,12 +216,13 @@ special AbstractCompiler
                _sorter.sort(array)
        end
 
-       readable writable attr _owned_modules: Array[MMModule]
+       readable writable attr _owned_modules: Array[MMModule] = new Array[MMModule]
 
        # Return the known_owner for current module
        # if inside_mode is set, it could be a different result
        meth known_owner_of(m: MMModule): MMModule
        do
+               var module = module
                if module == null then return m
                var res = module.known_owner_of(m)
                if not inside_mode and not intrude_mode and res.directory.owner == module then
@@ -252,8 +254,8 @@ special AbstractCompiler
        redef meth process_options
        do
                super
-               dir = opt_dir.value
-               if dir == null then dir = "."
+               var d = opt_dir.value
+               if d != null then dir = d
        end
 end
 
@@ -263,12 +265,12 @@ class StageContext
        readable attr _content: Array[String] = new Array[String]
 
        # Is a normal string already added?
-       readable writable attr _validate: Bool
+       readable writable attr _validate: Bool = false
 
        # Parent stage is any
-       readable attr _parent: StageContext
+       readable attr _parent: nullable StageContext = null
 
-       init(parent: StageContext) do _parent = parent
+       init(parent: nullable StageContext) do _parent = parent
 end
 
 
@@ -314,7 +316,7 @@ class MMEntity
 
        # The doc node from the AST
        # Return null is none
-       meth doc: ADoc do return null
+       meth doc: nullable ADoc do return null
 
        # Human redable location of the entity (module/class/property)
        meth locate(dctx: DocContext): String do return ""
@@ -356,7 +358,7 @@ special MMEntity
        meth owner(from: MMModule): MMModule
        do
                var res = self
-               var d = directory
+               var d: nullable MMDirectory = directory
                while d != null and d != from.directory do
                        var o = d.owner
                        if o != null and o.mhe <= res then res = o
@@ -494,10 +496,10 @@ special MMEntity
                end
                assert n isa PPropdef
                var d = n.n_doc
-               assert d isa ADoc
                if d == null then
                        return null
                end
+               assert d isa ADoc
                if d.n_comment.is_empty then
                        return null
                else
@@ -545,7 +547,7 @@ redef class MMSrcModule
                dctx.add_header("Module {self}")
                dctx.add("<h1>Module {self}</h1>\n<dl>")
                var s = ""
-               var d = directory
+               var d: nullable MMDirectory = directory
                while d == null do
                        if d.owner != null and (d.owner != self or dctx.inside_mode or dctx.intrude_mode) then
                                s = "{d.owner.html_link(dctx)}::{s}"
@@ -558,8 +560,8 @@ redef class MMSrcModule
                var intrude_modules = new Array[MMModule]
                var public_modules = new Array[MMModule]
                var private_modules = new Array[MMModule]
-               var owned_modules = new Array[MMModule]
-               dctx.owned_modules = owned_modules
+               var owned_modules = dctx.owned_modules
+               owned_modules.clear
                for m in mhe.greaters do
                        var v = visibility_for(m) 
                        if not dctx.inside_mode and not dctx.intrude_mode and m.directory.owner == self then 
@@ -652,20 +654,16 @@ redef class MMSrcModule
        redef meth doc
        do
                var n = node
-               if not n isa AModule then
-                       return null
-               end
-               assert n isa AModule
                if n.n_packagedecl == null then
                        return null
                end
                var np = n.n_packagedecl
                assert np isa APackagedecl
                var d = np.n_doc
-               assert d isa ADoc
                if d == null then
                        return null
                end
+               assert d isa ADoc
                if d.n_comment.is_empty then
                        return null
                else
@@ -913,7 +911,7 @@ special MMEntity
                                if c isa MMSrcLocalClass then
                                        var km = dctx.known_owner_of(c.module)
                                        var kc = km[c.global]
-                                       if kc == self or not c isa MMConcreteClass then continue
+                                       if kc == self then continue
                                        var props: Array[MMLocalProperty]
                                        if km == module then
                                                if cmap.has_key(kc) then
@@ -1079,10 +1077,10 @@ redef class MMSrcLocalClass
                end
                assert n isa AClassdef
                var d = n.n_doc
-               assert d isa ADoc
                if d == null then
                        return null
                end
+               assert d isa ADoc
                if d.n_comment.is_empty then
                        return null
                else
index d630582..93a8371 100644 (file)
@@ -1338,7 +1338,7 @@ end
 # It is better user with the Parser
 class Lexer
        # Last peeked token
-       attr _token: Token
+       attr _token: nullable Token
 
        # Lexer current state
        attr _state: Int = 0
@@ -1391,7 +1391,7 @@ class Lexer
                while _token == null do
                        _token = get_token
                end
-               return _token
+               return _token.as(not null)
        end
 
        # Give and consume the next token
@@ -1402,11 +1402,11 @@ class Lexer
                        result = get_token
                end
                _token = null
-               return result
+               return result.as(not null)
        end
 
        # Get a token, or null if it is discarded
-       private meth get_token: Token
+       private meth get_token: nullable Token
        do
                var dfa_state = 0
 
index 3d5face..965e0fb 100644 (file)
@@ -11,9 +11,9 @@ private class State
        readable writable attr _state: Int
 
        # The node stored with the state in the stack
-       readable writable attr _nodes: Object 
+       readable writable attr _nodes: nullable Object 
 
-       init(state: Int, nodes: Object)
+       init(state: Int, nodes: nullable Object)
        do
                _state = state
                _nodes = nodes
@@ -67,7 +67,7 @@ special ParserTable
        end
 
        # Push someting in the state stack
-       private meth push(numstate: Int, list_node: Object)
+       private meth push(numstate: Int, list_node: nullable Object)
        do
                var pos = _stack_pos + 1
                _stack_pos = pos
@@ -87,7 +87,7 @@ special ParserTable
        end
 
        # Pop something from the stack state
-       private meth pop: Object
+       private meth pop: nullable Object
        do
                var res = _stack[_stack_pos].nodes
                _stack_pos = _stack_pos -1
@@ -99,7 +99,6 @@ special ParserTable
        do
                push(0, null)
 
-               var ign: List[Token] = null
                var lexer = _lexer
                while true do
                        var token = lexer.peek
@@ -107,7 +106,6 @@ special ParserTable
                        var last_line = token.line
 
                        if token isa PError then
-                               assert token isa PError
                                return new Start(null, token)
                        end
 
@@ -152,7 +150,7 @@ special ParserTable
                                return node
                        end
                end
-               return null
+               abort
        end
 
        attr _reduce_table: Array[ReduceAction]
@@ -905,11 +903,12 @@ end
 private class SearchTokensVisitor
 special Visitor
        attr _untokenned_nodes: Array[Prod]
-       attr _last_token: Token
-       redef meth visit(n: PNode)
+       attr _last_token: nullable Token = null
+       redef meth visit(n: nullable PNode)
        do
-               if n isa Token then
-                       assert n isa Token
+               if n == null then
+                       return
+               else if n isa Token then
                        _last_token = n
                        for no in _untokenned_nodes do
                                no.first_token = n
@@ -937,10 +936,10 @@ private class ReduceAction0
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var listnode3 = new Array[Object]
                                        var listnode4 = new Array[Object]
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                null,
                                                listnode3,
                                                listnode4
@@ -954,13 +953,13 @@ private class ReduceAction1
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
                                        var listnode4 = new Array[Object]
                                        var ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa PPackagedecl
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       assert ppackagedeclnode2 isa nullable PPackagedecl
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                ppackagedeclnode2,
                                                listnode3,
                                                listnode4
@@ -974,20 +973,20 @@ private class ReduceAction2
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
                                        var listnode5 = new Array[Object]
-                                       var listnode3 = nodearraylist1 
+                                       var listnode3 = nodearraylist1
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
-                                       var pmodulenode1 = new AModule.init_amodule(
+#                                      end
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                null,
                                                listnode4,
                                                listnode5
@@ -1001,23 +1000,23 @@ private class ReduceAction3
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
                                        var listnode5 = new Array[Object]
                                        var ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa PPackagedecl
-                                       var listnode3 = nodearraylist2 
+                                       assert ppackagedeclnode2 isa nullable PPackagedecl
+                                       var listnode3 = nodearraylist2
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
-                                       var pmodulenode1 = new AModule.init_amodule(
+#                                      end
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                ppackagedeclnode2,
                                                listnode4,
                                                listnode5
@@ -1031,20 +1030,20 @@ private class ReduceAction4
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
                                        var listnode5 = new Array[Object]
-                                       var listnode4 = nodearraylist1 
+                                       var listnode4 = nodearraylist1
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pmodulenode1 = new AModule.init_amodule(
+#                                      end
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                null,
                                                listnode3,
                                                listnode5
@@ -1058,23 +1057,23 @@ private class ReduceAction5
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
                                        var listnode5 = new Array[Object]
                                        var ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa PPackagedecl
-                                       var listnode4 = nodearraylist2 
+                                       assert ppackagedeclnode2 isa nullable PPackagedecl
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pmodulenode1 = new AModule.init_amodule(
+#                                      end
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                ppackagedeclnode2,
                                                listnode3,
                                                listnode5
@@ -1088,30 +1087,30 @@ private class ReduceAction6
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
                                        var listnode6 = new Array[Object]
-                                       var listnode3 = nodearraylist1 
+                                       var listnode3 = nodearraylist1
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
-                                       var listnode5 = nodearraylist2 
+#                                      end
+                                       var listnode5 = nodearraylist2
                                        assert listnode5 isa Array[Object]
-                                       if listnode5 != null then
+#                                      if listnode5 != null then
                                                if listnode6.is_empty then
                                                        listnode6 = listnode5
                                                else
                                                        listnode6.append(listnode5)
                                                end
-                                       end
-                                       var pmodulenode1 = new AModule.init_amodule(
+#                                      end
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                null,
                                                listnode4,
                                                listnode6
@@ -1125,33 +1124,33 @@ private class ReduceAction7
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
                                        var listnode6 = new Array[Object]
                                        var ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa PPackagedecl
-                                       var listnode3 = nodearraylist2 
+                                       assert ppackagedeclnode2 isa nullable PPackagedecl
+                                       var listnode3 = nodearraylist2
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
-                                       var listnode5 = nodearraylist3 
+#                                      end
+                                       var listnode5 = nodearraylist3
                                        assert listnode5 isa Array[Object]
-                                       if listnode5 != null then
+#                                      if listnode5 != null then
                                                if listnode6.is_empty then
                                                        listnode6 = listnode5
                                                else
                                                        listnode6.append(listnode5)
                                                end
-                                       end
-                                       var pmodulenode1 = new AModule.init_amodule(
+#                                      end
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                ppackagedeclnode2,
                                                listnode4,
                                                listnode6
@@ -1165,24 +1164,24 @@ private class ReduceAction8
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 = new Array[Object]
                                        var ppropdefnode5 = nodearraylist1
-                                       assert ppropdefnode5 isa PPropdef
+                                       assert ppropdefnode5 isa nullable PPropdef
                                        if ppropdefnode5 != null then
                                                listnode6.add(ppropdefnode5)
                                        end
-                                       var pclassdefnode4 = new ATopClassdef.init_atopclassdef(
+                                       var pclassdefnode4: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
                                                listnode6
                                        )
                                        if pclassdefnode4 != null then
                                                listnode7.add(pclassdefnode4)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                null,
                                                listnode3,
                                                listnode7
@@ -1196,7 +1195,7 @@ private class ReduceAction9
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
@@ -1204,26 +1203,26 @@ special ReduceAction
                                        var listnode8 = new Array[Object]
                                        var listnode7 = new Array[Object]
                                        var ppropdefnode5 = nodearraylist1
-                                       assert ppropdefnode5 isa PPropdef
-                                       var listnode6 = nodearraylist3 
+                                       assert ppropdefnode5 isa nullable PPropdef
+                                       var listnode6 = nodearraylist3
                                        assert listnode6 isa Array[Object]
                                        if ppropdefnode5 != null then
                                                listnode7.add(ppropdefnode5)
                                        end
-                                       if listnode6 != null then
+#                                      if listnode6 != null then
                                                if listnode7.is_empty then
                                                        listnode7 = listnode6
                                                else
                                                        listnode7.append(listnode6)
                                                end
-                                       end
-                                       var pclassdefnode4 = new ATopClassdef.init_atopclassdef(
+#                                      end
+                                       var pclassdefnode4: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
                                                listnode7
                                        )
                                        if pclassdefnode4 != null then
                                                listnode8.add(pclassdefnode4)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                null,
                                                listnode3,
                                                listnode8
@@ -1237,27 +1236,27 @@ private class ReduceAction10
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa PPackagedecl
+                                       assert ppackagedeclnode2 isa nullable PPackagedecl
                                        var listnode6 = new Array[Object]
                                        var ppropdefnode5 = nodearraylist2
-                                       assert ppropdefnode5 isa PPropdef
+                                       assert ppropdefnode5 isa nullable PPropdef
                                        if ppropdefnode5 != null then
                                                listnode6.add(ppropdefnode5)
                                        end
-                                       var pclassdefnode4 = new ATopClassdef.init_atopclassdef(
+                                       var pclassdefnode4: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
                                                listnode6
                                        )
                                        if pclassdefnode4 != null then
                                                listnode7.add(pclassdefnode4)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                ppackagedeclnode2,
                                                listnode3,
                                                listnode7
@@ -1271,7 +1270,7 @@ private class ReduceAction11
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
@@ -1279,29 +1278,29 @@ special ReduceAction
                                        var listnode3 = new Array[Object]
                                        var listnode8 = new Array[Object]
                                        var ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa PPackagedecl
+                                       assert ppackagedeclnode2 isa nullable PPackagedecl
                                        var listnode7 = new Array[Object]
                                        var ppropdefnode5 = nodearraylist2
-                                       assert ppropdefnode5 isa PPropdef
-                                       var listnode6 = nodearraylist4 
+                                       assert ppropdefnode5 isa nullable PPropdef
+                                       var listnode6 = nodearraylist4
                                        assert listnode6 isa Array[Object]
                                        if ppropdefnode5 != null then
                                                listnode7.add(ppropdefnode5)
                                        end
-                                       if listnode6 != null then
+#                                      if listnode6 != null then
                                                if listnode7.is_empty then
                                                        listnode7 = listnode6
                                                else
                                                        listnode7.append(listnode6)
                                                end
-                                       end
-                                       var pclassdefnode4 = new ATopClassdef.init_atopclassdef(
+#                                      end
+                                       var pclassdefnode4: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
                                                listnode7
                                        )
                                        if pclassdefnode4 != null then
                                                listnode8.add(pclassdefnode4)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                ppackagedeclnode2,
                                                listnode3,
                                                listnode8
@@ -1315,34 +1314,34 @@ private class ReduceAction12
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
                                        var listnode8 = new Array[Object]
-                                       var listnode3 = nodearraylist1 
+                                       var listnode3 = nodearraylist1
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
+#                                      end
                                        var listnode7 = new Array[Object]
                                        var ppropdefnode6 = nodearraylist2
-                                       assert ppropdefnode6 isa PPropdef
+                                       assert ppropdefnode6 isa nullable PPropdef
                                        if ppropdefnode6 != null then
                                                listnode7.add(ppropdefnode6)
                                        end
-                                       var pclassdefnode5 = new ATopClassdef.init_atopclassdef(
+                                       var pclassdefnode5: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
                                                listnode7
                                        )
                                        if pclassdefnode5 != null then
                                                listnode8.add(pclassdefnode5)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                null,
                                                listnode4,
                                                listnode8
@@ -1356,44 +1355,44 @@ private class ReduceAction13
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 listnode9 = new Array[Object]
-                                       var listnode3 = nodearraylist1 
+                                       var listnode3 = nodearraylist1
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
+#                                      end
                                        var listnode8 = new Array[Object]
                                        var ppropdefnode6 = nodearraylist2
-                                       assert ppropdefnode6 isa PPropdef
-                                       var listnode7 = nodearraylist4 
+                                       assert ppropdefnode6 isa nullable PPropdef
+                                       var listnode7 = nodearraylist4
                                        assert listnode7 isa Array[Object]
                                        if ppropdefnode6 != null then
                                                listnode8.add(ppropdefnode6)
                                        end
-                                       if listnode7 != null then
+#                                      if listnode7 != null then
                                                if listnode8.is_empty then
                                                        listnode8 = listnode7
                                                else
                                                        listnode8.append(listnode7)
                                                end
-                                       end
-                                       var pclassdefnode5 = new ATopClassdef.init_atopclassdef(
+#                                      end
+                                       var pclassdefnode5: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
                                                listnode8
                                        )
                                        if pclassdefnode5 != null then
                                                listnode9.add(pclassdefnode5)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                null,
                                                listnode4,
                                                listnode9
@@ -1407,7 +1406,7 @@ private class ReduceAction14
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
@@ -1415,29 +1414,29 @@ special ReduceAction
                                        var listnode4 = new Array[Object]
                                        var listnode8 = new Array[Object]
                                        var ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa PPackagedecl
-                                       var listnode3 = nodearraylist2 
+                                       assert ppackagedeclnode2 isa nullable PPackagedecl
+                                       var listnode3 = nodearraylist2
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
+#                                      end
                                        var listnode7 = new Array[Object]
                                        var ppropdefnode6 = nodearraylist3
-                                       assert ppropdefnode6 isa PPropdef
+                                       assert ppropdefnode6 isa nullable PPropdef
                                        if ppropdefnode6 != null then
                                                listnode7.add(ppropdefnode6)
                                        end
-                                       var pclassdefnode5 = new ATopClassdef.init_atopclassdef(
+                                       var pclassdefnode5: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
                                                listnode7
                                        )
                                        if pclassdefnode5 != null then
                                                listnode8.add(pclassdefnode5)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                ppackagedeclnode2,
                                                listnode4,
                                                listnode8
@@ -1451,7 +1450,7 @@ private class ReduceAction15
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -1460,38 +1459,38 @@ special ReduceAction
                                        var listnode4 = new Array[Object]
                                        var listnode9 = new Array[Object]
                                        var ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa PPackagedecl
-                                       var listnode3 = nodearraylist2 
+                                       assert ppackagedeclnode2 isa nullable PPackagedecl
+                                       var listnode3 = nodearraylist2
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
+#                                      end
                                        var listnode8 = new Array[Object]
                                        var ppropdefnode6 = nodearraylist3
-                                       assert ppropdefnode6 isa PPropdef
-                                       var listnode7 = nodearraylist5 
+                                       assert ppropdefnode6 isa nullable PPropdef
+                                       var listnode7 = nodearraylist5
                                        assert listnode7 isa Array[Object]
                                        if ppropdefnode6 != null then
                                                listnode8.add(ppropdefnode6)
                                        end
-                                       if listnode7 != null then
+#                                      if listnode7 != null then
                                                if listnode8.is_empty then
                                                        listnode8 = listnode7
                                                else
                                                        listnode8.append(listnode7)
                                                end
-                                       end
-                                       var pclassdefnode5 = new ATopClassdef.init_atopclassdef(
+#                                      end
+                                       var pclassdefnode5: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
                                                listnode8
                                        )
                                        if pclassdefnode5 != null then
                                                listnode9.add(pclassdefnode5)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                ppackagedeclnode2,
                                                listnode4,
                                                listnode9
@@ -1505,34 +1504,34 @@ private class ReduceAction16
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
                                        var listnode8 = new Array[Object]
-                                       var listnode4 = nodearraylist1 
+                                       var listnode4 = nodearraylist1
                                        assert listnode4 isa Array[Object]
                                        var listnode7 = new Array[Object]
                                        var ppropdefnode6 = nodearraylist2
-                                       assert ppropdefnode6 isa PPropdef
+                                       assert ppropdefnode6 isa nullable PPropdef
                                        if ppropdefnode6 != null then
                                                listnode7.add(ppropdefnode6)
                                        end
-                                       var pclassdefnode5 = new ATopClassdef.init_atopclassdef(
+                                       var pclassdefnode5: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
                                                listnode7
                                        )
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode8.is_empty then
                                                        listnode8 = listnode4
                                                else
                                                        listnode8.append(listnode4)
                                                end
-                                       end
+#                                      end
                                        if pclassdefnode5 != null then
                                                listnode8.add(pclassdefnode5)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                null,
                                                listnode3,
                                                listnode8
@@ -1546,44 +1545,44 @@ private class ReduceAction17
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 listnode9 = new Array[Object]
-                                       var listnode4 = nodearraylist1 
+                                       var listnode4 = nodearraylist1
                                        assert listnode4 isa Array[Object]
                                        var listnode8 = new Array[Object]
                                        var ppropdefnode6 = nodearraylist2
-                                       assert ppropdefnode6 isa PPropdef
-                                       var listnode7 = nodearraylist4 
+                                       assert ppropdefnode6 isa nullable PPropdef
+                                       var listnode7 = nodearraylist4
                                        assert listnode7 isa Array[Object]
                                        if ppropdefnode6 != null then
                                                listnode8.add(ppropdefnode6)
                                        end
-                                       if listnode7 != null then
+#                                      if listnode7 != null then
                                                if listnode8.is_empty then
                                                        listnode8 = listnode7
                                                else
                                                        listnode8.append(listnode7)
                                                end
-                                       end
-                                       var pclassdefnode5 = new ATopClassdef.init_atopclassdef(
+#                                      end
+                                       var pclassdefnode5: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
                                                listnode8
                                        )
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode9.is_empty then
                                                        listnode9 = listnode4
                                                else
                                                        listnode9.append(listnode4)
                                                end
-                                       end
+#                                      end
                                        if pclassdefnode5 != null then
                                                listnode9.add(pclassdefnode5)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                null,
                                                listnode3,
                                                listnode9
@@ -1597,7 +1596,7 @@ private class ReduceAction18
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
@@ -1605,29 +1604,29 @@ special ReduceAction
                                        var listnode3 = new Array[Object]
                                        var listnode8 = new Array[Object]
                                        var ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa PPackagedecl
-                                       var listnode4 = nodearraylist2 
+                                       assert ppackagedeclnode2 isa nullable PPackagedecl
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
                                        var listnode7 = new Array[Object]
                                        var ppropdefnode6 = nodearraylist3
-                                       assert ppropdefnode6 isa PPropdef
+                                       assert ppropdefnode6 isa nullable PPropdef
                                        if ppropdefnode6 != null then
                                                listnode7.add(ppropdefnode6)
                                        end
-                                       var pclassdefnode5 = new ATopClassdef.init_atopclassdef(
+                                       var pclassdefnode5: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
                                                listnode7
                                        )
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode8.is_empty then
                                                        listnode8 = listnode4
                                                else
                                                        listnode8.append(listnode4)
                                                end
-                                       end
+#                                      end
                                        if pclassdefnode5 != null then
                                                listnode8.add(pclassdefnode5)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                ppackagedeclnode2,
                                                listnode3,
                                                listnode8
@@ -1641,7 +1640,7 @@ private class ReduceAction19
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -1650,38 +1649,38 @@ special ReduceAction
                                        var listnode3 = new Array[Object]
                                        var listnode9 = new Array[Object]
                                        var ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa PPackagedecl
-                                       var listnode4 = nodearraylist2 
+                                       assert ppackagedeclnode2 isa nullable PPackagedecl
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
                                        var listnode8 = new Array[Object]
                                        var ppropdefnode6 = nodearraylist3
-                                       assert ppropdefnode6 isa PPropdef
-                                       var listnode7 = nodearraylist5 
+                                       assert ppropdefnode6 isa nullable PPropdef
+                                       var listnode7 = nodearraylist5
                                        assert listnode7 isa Array[Object]
                                        if ppropdefnode6 != null then
                                                listnode8.add(ppropdefnode6)
                                        end
-                                       if listnode7 != null then
+#                                      if listnode7 != null then
                                                if listnode8.is_empty then
                                                        listnode8 = listnode7
                                                else
                                                        listnode8.append(listnode7)
                                                end
-                                       end
-                                       var pclassdefnode5 = new ATopClassdef.init_atopclassdef(
+#                                      end
+                                       var pclassdefnode5: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
                                                listnode8
                                        )
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode9.is_empty then
                                                        listnode9 = listnode4
                                                else
                                                        listnode9.append(listnode4)
                                                end
-                                       end
+#                                      end
                                        if pclassdefnode5 != null then
                                                listnode9.add(pclassdefnode5)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                ppackagedeclnode2,
                                                listnode3,
                                                listnode9
@@ -1695,44 +1694,44 @@ private class ReduceAction20
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 listnode9 = new Array[Object]
-                                       var listnode3 = nodearraylist1 
+                                       var listnode3 = nodearraylist1
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
-                                       var listnode5 = nodearraylist2 
+#                                      end
+                                       var listnode5 = nodearraylist2
                                        assert listnode5 isa Array[Object]
                                        var listnode8 = new Array[Object]
                                        var ppropdefnode7 = nodearraylist3
-                                       assert ppropdefnode7 isa PPropdef
+                                       assert ppropdefnode7 isa nullable PPropdef
                                        if ppropdefnode7 != null then
                                                listnode8.add(ppropdefnode7)
                                        end
-                                       var pclassdefnode6 = new ATopClassdef.init_atopclassdef(
+                                       var pclassdefnode6: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
                                                listnode8
                                        )
-                                       if listnode5 != null then
+#                                      if listnode5 != null then
                                                if listnode9.is_empty then
                                                        listnode9 = listnode5
                                                else
                                                        listnode9.append(listnode5)
                                                end
-                                       end
+#                                      end
                                        if pclassdefnode6 != null then
                                                listnode9.add(pclassdefnode6)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                null,
                                                listnode4,
                                                listnode9
@@ -1746,7 +1745,7 @@ private class ReduceAction21
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -1754,46 +1753,46 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
                                        var listnode10 = new Array[Object]
-                                       var listnode3 = nodearraylist1 
+                                       var listnode3 = nodearraylist1
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
-                                       var listnode5 = nodearraylist2 
+#                                      end
+                                       var listnode5 = nodearraylist2
                                        assert listnode5 isa Array[Object]
                                        var listnode9 = new Array[Object]
                                        var ppropdefnode7 = nodearraylist3
-                                       assert ppropdefnode7 isa PPropdef
-                                       var listnode8 = nodearraylist5 
+                                       assert ppropdefnode7 isa nullable PPropdef
+                                       var listnode8 = nodearraylist5
                                        assert listnode8 isa Array[Object]
                                        if ppropdefnode7 != null then
                                                listnode9.add(ppropdefnode7)
                                        end
-                                       if listnode8 != null then
+#                                      if listnode8 != null then
                                                if listnode9.is_empty then
                                                        listnode9 = listnode8
                                                else
                                                        listnode9.append(listnode8)
                                                end
-                                       end
-                                       var pclassdefnode6 = new ATopClassdef.init_atopclassdef(
+#                                      end
+                                       var pclassdefnode6: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
                                                listnode9
                                        )
-                                       if listnode5 != null then
+#                                      if listnode5 != null then
                                                if listnode10.is_empty then
                                                        listnode10 = listnode5
                                                else
                                                        listnode10.append(listnode5)
                                                end
-                                       end
+#                                      end
                                        if pclassdefnode6 != null then
                                                listnode10.add(pclassdefnode6)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                null,
                                                listnode4,
                                                listnode10
@@ -1807,7 +1806,7 @@ private class ReduceAction22
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -1816,38 +1815,38 @@ special ReduceAction
                                        var listnode4 = new Array[Object]
                                        var listnode9 = new Array[Object]
                                        var ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa PPackagedecl
-                                       var listnode3 = nodearraylist2 
+                                       assert ppackagedeclnode2 isa nullable PPackagedecl
+                                       var listnode3 = nodearraylist2
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
-                                       var listnode5 = nodearraylist3 
+#                                      end
+                                       var listnode5 = nodearraylist3
                                        assert listnode5 isa Array[Object]
                                        var listnode8 = new Array[Object]
                                        var ppropdefnode7 = nodearraylist4
-                                       assert ppropdefnode7 isa PPropdef
+                                       assert ppropdefnode7 isa nullable PPropdef
                                        if ppropdefnode7 != null then
                                                listnode8.add(ppropdefnode7)
                                        end
-                                       var pclassdefnode6 = new ATopClassdef.init_atopclassdef(
+                                       var pclassdefnode6: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
                                                listnode8
                                        )
-                                       if listnode5 != null then
+#                                      if listnode5 != null then
                                                if listnode9.is_empty then
                                                        listnode9 = listnode5
                                                else
                                                        listnode9.append(listnode5)
                                                end
-                                       end
+#                                      end
                                        if pclassdefnode6 != null then
                                                listnode9.add(pclassdefnode6)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                ppackagedeclnode2,
                                                listnode4,
                                                listnode9
@@ -1861,7 +1860,7 @@ private class ReduceAction23
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -1871,47 +1870,47 @@ special ReduceAction
                                        var listnode4 = new Array[Object]
                                        var listnode10 = new Array[Object]
                                        var ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa PPackagedecl
-                                       var listnode3 = nodearraylist2 
+                                       assert ppackagedeclnode2 isa nullable PPackagedecl
+                                       var listnode3 = nodearraylist2
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
-                                       var listnode5 = nodearraylist3 
+#                                      end
+                                       var listnode5 = nodearraylist3
                                        assert listnode5 isa Array[Object]
                                        var listnode9 = new Array[Object]
                                        var ppropdefnode7 = nodearraylist4
-                                       assert ppropdefnode7 isa PPropdef
-                                       var listnode8 = nodearraylist6 
+                                       assert ppropdefnode7 isa nullable PPropdef
+                                       var listnode8 = nodearraylist6
                                        assert listnode8 isa Array[Object]
                                        if ppropdefnode7 != null then
                                                listnode9.add(ppropdefnode7)
                                        end
-                                       if listnode8 != null then
+#                                      if listnode8 != null then
                                                if listnode9.is_empty then
                                                        listnode9 = listnode8
                                                else
                                                        listnode9.append(listnode8)
                                                end
-                                       end
-                                       var pclassdefnode6 = new ATopClassdef.init_atopclassdef(
+#                                      end
+                                       var pclassdefnode6: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
                                                listnode9
                                        )
-                                       if listnode5 != null then
+#                                      if listnode5 != null then
                                                if listnode10.is_empty then
                                                        listnode10 = listnode5
                                                else
                                                        listnode10.append(listnode5)
                                                end
-                                       end
+#                                      end
                                        if pclassdefnode6 != null then
                                                listnode10.add(pclassdefnode6)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                ppackagedeclnode2,
                                                listnode4,
                                                listnode10
@@ -1925,16 +1924,16 @@ private class ReduceAction24
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
                                        var listnode5 = new Array[Object]
                                        var pclassdefnode4 = nodearraylist1
-                                       assert pclassdefnode4 isa PClassdef
+                                       assert pclassdefnode4 isa nullable PClassdef
                                        if pclassdefnode4 != null then
                                                listnode5.add(pclassdefnode4)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                null,
                                                listnode3,
                                                listnode5
@@ -1948,19 +1947,19 @@ private class ReduceAction25
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
                                        var listnode5 = new Array[Object]
                                        var ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa PPackagedecl
+                                       assert ppackagedeclnode2 isa nullable PPackagedecl
                                        var pclassdefnode4 = nodearraylist2
-                                       assert pclassdefnode4 isa PClassdef
+                                       assert pclassdefnode4 isa nullable PClassdef
                                        if pclassdefnode4 != null then
                                                listnode5.add(pclassdefnode4)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                ppackagedeclnode2,
                                                listnode3,
                                                listnode5
@@ -1974,26 +1973,26 @@ private class ReduceAction26
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
                                        var listnode6 = new Array[Object]
-                                       var listnode3 = nodearraylist1 
+                                       var listnode3 = nodearraylist1
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
+#                                      end
                                        var pclassdefnode5 = nodearraylist2
-                                       assert pclassdefnode5 isa PClassdef
+                                       assert pclassdefnode5 isa nullable PClassdef
                                        if pclassdefnode5 != null then
                                                listnode6.add(pclassdefnode5)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                null,
                                                listnode4,
                                                listnode6
@@ -2007,29 +2006,29 @@ private class ReduceAction27
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
                                        var listnode6 = new Array[Object]
                                        var ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa PPackagedecl
-                                       var listnode3 = nodearraylist2 
+                                       assert ppackagedeclnode2 isa nullable PPackagedecl
+                                       var listnode3 = nodearraylist2
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
+#                                      end
                                        var pclassdefnode5 = nodearraylist3
-                                       assert pclassdefnode5 isa PClassdef
+                                       assert pclassdefnode5 isa nullable PClassdef
                                        if pclassdefnode5 != null then
                                                listnode6.add(pclassdefnode5)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                ppackagedeclnode2,
                                                listnode4,
                                                listnode6
@@ -2043,26 +2042,26 @@ private class ReduceAction28
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 listnode4 = nodearraylist1 
+                                       var listnode4 = nodearraylist1
                                        assert listnode4 isa Array[Object]
                                        var pclassdefnode5 = nodearraylist2
-                                       assert pclassdefnode5 isa PClassdef
-                                       if listnode4 != null then
+                                       assert pclassdefnode5 isa nullable PClassdef
+#                                      if listnode4 != null then
                                                if listnode6.is_empty then
                                                        listnode6 = listnode4
                                                else
                                                        listnode6.append(listnode4)
                                                end
-                                       end
+#                                      end
                                        if pclassdefnode5 != null then
                                                listnode6.add(pclassdefnode5)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                null,
                                                listnode3,
                                                listnode6
@@ -2076,29 +2075,29 @@ private class ReduceAction29
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa PPackagedecl
-                                       var listnode4 = nodearraylist2 
+                                       assert ppackagedeclnode2 isa nullable PPackagedecl
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
                                        var pclassdefnode5 = nodearraylist3
-                                       assert pclassdefnode5 isa PClassdef
-                                       if listnode4 != null then
+                                       assert pclassdefnode5 isa nullable PClassdef
+#                                      if listnode4 != null then
                                                if listnode6.is_empty then
                                                        listnode6 = listnode4
                                                else
                                                        listnode6.append(listnode4)
                                                end
-                                       end
+#                                      end
                                        if pclassdefnode5 != null then
                                                listnode6.add(pclassdefnode5)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                ppackagedeclnode2,
                                                listnode3,
                                                listnode6
@@ -2112,36 +2111,36 @@ private class ReduceAction30
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
                                        var listnode7 = new Array[Object]
-                                       var listnode3 = nodearraylist1 
+                                       var listnode3 = nodearraylist1
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
-                                       var listnode5 = nodearraylist2 
+#                                      end
+                                       var listnode5 = nodearraylist2
                                        assert listnode5 isa Array[Object]
                                        var pclassdefnode6 = nodearraylist3
-                                       assert pclassdefnode6 isa PClassdef
-                                       if listnode5 != null then
+                                       assert pclassdefnode6 isa nullable PClassdef
+#                                      if listnode5 != null then
                                                if listnode7.is_empty then
                                                        listnode7 = listnode5
                                                else
                                                        listnode7.append(listnode5)
                                                end
-                                       end
+#                                      end
                                        if pclassdefnode6 != null then
                                                listnode7.add(pclassdefnode6)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                null,
                                                listnode4,
                                                listnode7
@@ -2155,7 +2154,7 @@ private class ReduceAction31
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
@@ -2163,31 +2162,31 @@ special ReduceAction
                                        var listnode4 = new Array[Object]
                                        var listnode7 = new Array[Object]
                                        var ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa PPackagedecl
-                                       var listnode3 = nodearraylist2 
+                                       assert ppackagedeclnode2 isa nullable PPackagedecl
+                                       var listnode3 = nodearraylist2
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
-                                       var listnode5 = nodearraylist3 
+#                                      end
+                                       var listnode5 = nodearraylist3
                                        assert listnode5 isa Array[Object]
                                        var pclassdefnode6 = nodearraylist4
-                                       assert pclassdefnode6 isa PClassdef
-                                       if listnode5 != null then
+                                       assert pclassdefnode6 isa nullable PClassdef
+#                                      if listnode5 != null then
                                                if listnode7.is_empty then
                                                        listnode7 = listnode5
                                                else
                                                        listnode7.append(listnode5)
                                                end
-                                       end
+#                                      end
                                        if pclassdefnode6 != null then
                                                listnode7.add(pclassdefnode6)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                ppackagedeclnode2,
                                                listnode4,
                                                listnode7
@@ -2201,7 +2200,7 @@ private class ReduceAction32
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
@@ -2209,22 +2208,22 @@ special ReduceAction
                                        var listnode8 = new Array[Object]
                                        var listnode6 = new Array[Object]
                                        var ppropdefnode5 = nodearraylist1
-                                       assert ppropdefnode5 isa PPropdef
+                                       assert ppropdefnode5 isa nullable PPropdef
                                        if ppropdefnode5 != null then
                                                listnode6.add(ppropdefnode5)
                                        end
-                                       var pclassdefnode4 = new ATopClassdef.init_atopclassdef(
+                                       var pclassdefnode4: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
                                                listnode6
                                        )
                                        var pclassdefnode7 = nodearraylist3
-                                       assert pclassdefnode7 isa PClassdef
+                                       assert pclassdefnode7 isa nullable PClassdef
                                        if pclassdefnode4 != null then
                                                listnode8.add(pclassdefnode4)
                                        end
                                        if pclassdefnode7 != null then
                                                listnode8.add(pclassdefnode7)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                null,
                                                listnode3,
                                                listnode8
@@ -2238,7 +2237,7 @@ private class ReduceAction33
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
@@ -2247,31 +2246,31 @@ special ReduceAction
                                        var listnode9 = new Array[Object]
                                        var listnode7 = new Array[Object]
                                        var ppropdefnode5 = nodearraylist1
-                                       assert ppropdefnode5 isa PPropdef
-                                       var listnode6 = nodearraylist3 
+                                       assert ppropdefnode5 isa nullable PPropdef
+                                       var listnode6 = nodearraylist3
                                        assert listnode6 isa Array[Object]
                                        if ppropdefnode5 != null then
                                                listnode7.add(ppropdefnode5)
                                        end
-                                       if listnode6 != null then
+#                                      if listnode6 != null then
                                                if listnode7.is_empty then
                                                        listnode7 = listnode6
                                                else
                                                        listnode7.append(listnode6)
                                                end
-                                       end
-                                       var pclassdefnode4 = new ATopClassdef.init_atopclassdef(
+#                                      end
+                                       var pclassdefnode4: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
                                                listnode7
                                        )
                                        var pclassdefnode8 = nodearraylist4
-                                       assert pclassdefnode8 isa PClassdef
+                                       assert pclassdefnode8 isa nullable PClassdef
                                        if pclassdefnode4 != null then
                                                listnode9.add(pclassdefnode4)
                                        end
                                        if pclassdefnode8 != null then
                                                listnode9.add(pclassdefnode8)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                null,
                                                listnode3,
                                                listnode9
@@ -2285,7 +2284,7 @@ private class ReduceAction34
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
@@ -2293,25 +2292,25 @@ special ReduceAction
                                        var listnode3 = new Array[Object]
                                        var listnode8 = new Array[Object]
                                        var ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa PPackagedecl
+                                       assert ppackagedeclnode2 isa nullable PPackagedecl
                                        var listnode6 = new Array[Object]
                                        var ppropdefnode5 = nodearraylist2
-                                       assert ppropdefnode5 isa PPropdef
+                                       assert ppropdefnode5 isa nullable PPropdef
                                        if ppropdefnode5 != null then
                                                listnode6.add(ppropdefnode5)
                                        end
-                                       var pclassdefnode4 = new ATopClassdef.init_atopclassdef(
+                                       var pclassdefnode4: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
                                                listnode6
                                        )
                                        var pclassdefnode7 = nodearraylist4
-                                       assert pclassdefnode7 isa PClassdef
+                                       assert pclassdefnode7 isa nullable PClassdef
                                        if pclassdefnode4 != null then
                                                listnode8.add(pclassdefnode4)
                                        end
                                        if pclassdefnode7 != null then
                                                listnode8.add(pclassdefnode7)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                ppackagedeclnode2,
                                                listnode3,
                                                listnode8
@@ -2325,7 +2324,7 @@ private class ReduceAction35
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -2334,34 +2333,34 @@ special ReduceAction
                                        var listnode3 = new Array[Object]
                                        var listnode9 = new Array[Object]
                                        var ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa PPackagedecl
+                                       assert ppackagedeclnode2 isa nullable PPackagedecl
                                        var listnode7 = new Array[Object]
                                        var ppropdefnode5 = nodearraylist2
-                                       assert ppropdefnode5 isa PPropdef
-                                       var listnode6 = nodearraylist4 
+                                       assert ppropdefnode5 isa nullable PPropdef
+                                       var listnode6 = nodearraylist4
                                        assert listnode6 isa Array[Object]
                                        if ppropdefnode5 != null then
                                                listnode7.add(ppropdefnode5)
                                        end
-                                       if listnode6 != null then
+#                                      if listnode6 != null then
                                                if listnode7.is_empty then
                                                        listnode7 = listnode6
                                                else
                                                        listnode7.append(listnode6)
                                                end
-                                       end
-                                       var pclassdefnode4 = new ATopClassdef.init_atopclassdef(
+#                                      end
+                                       var pclassdefnode4: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
                                                listnode7
                                        )
                                        var pclassdefnode8 = nodearraylist5
-                                       assert pclassdefnode8 isa PClassdef
+                                       assert pclassdefnode8 isa nullable PClassdef
                                        if pclassdefnode4 != null then
                                                listnode9.add(pclassdefnode4)
                                        end
                                        if pclassdefnode8 != null then
                                                listnode9.add(pclassdefnode8)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                ppackagedeclnode2,
                                                listnode3,
                                                listnode9
@@ -2375,40 +2374,40 @@ private class ReduceAction36
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 listnode9 = new Array[Object]
-                                       var listnode3 = nodearraylist1 
+                                       var listnode3 = nodearraylist1
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
+#                                      end
                                        var listnode7 = new Array[Object]
                                        var ppropdefnode6 = nodearraylist2
-                                       assert ppropdefnode6 isa PPropdef
+                                       assert ppropdefnode6 isa nullable PPropdef
                                        if ppropdefnode6 != null then
                                                listnode7.add(ppropdefnode6)
                                        end
-                                       var pclassdefnode5 = new ATopClassdef.init_atopclassdef(
+                                       var pclassdefnode5: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
                                                listnode7
                                        )
                                        var pclassdefnode8 = nodearraylist4
-                                       assert pclassdefnode8 isa PClassdef
+                                       assert pclassdefnode8 isa nullable PClassdef
                                        if pclassdefnode5 != null then
                                                listnode9.add(pclassdefnode5)
                                        end
                                        if pclassdefnode8 != null then
                                                listnode9.add(pclassdefnode8)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                null,
                                                listnode4,
                                                listnode9
@@ -2422,7 +2421,7 @@ private class ReduceAction37
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -2430,42 +2429,42 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
                                        var listnode10 = new Array[Object]
-                                       var listnode3 = nodearraylist1 
+                                       var listnode3 = nodearraylist1
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
+#                                      end
                                        var listnode8 = new Array[Object]
                                        var ppropdefnode6 = nodearraylist2
-                                       assert ppropdefnode6 isa PPropdef
-                                       var listnode7 = nodearraylist4 
+                                       assert ppropdefnode6 isa nullable PPropdef
+                                       var listnode7 = nodearraylist4
                                        assert listnode7 isa Array[Object]
                                        if ppropdefnode6 != null then
                                                listnode8.add(ppropdefnode6)
                                        end
-                                       if listnode7 != null then
+#                                      if listnode7 != null then
                                                if listnode8.is_empty then
                                                        listnode8 = listnode7
                                                else
                                                        listnode8.append(listnode7)
                                                end
-                                       end
-                                       var pclassdefnode5 = new ATopClassdef.init_atopclassdef(
+#                                      end
+                                       var pclassdefnode5: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
                                                listnode8
                                        )
                                        var pclassdefnode9 = nodearraylist5
-                                       assert pclassdefnode9 isa PClassdef
+                                       assert pclassdefnode9 isa nullable PClassdef
                                        if pclassdefnode5 != null then
                                                listnode10.add(pclassdefnode5)
                                        end
                                        if pclassdefnode9 != null then
                                                listnode10.add(pclassdefnode9)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                null,
                                                listnode4,
                                                listnode10
@@ -2479,7 +2478,7 @@ private class ReduceAction38
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -2488,34 +2487,34 @@ special ReduceAction
                                        var listnode4 = new Array[Object]
                                        var listnode9 = new Array[Object]
                                        var ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa PPackagedecl
-                                       var listnode3 = nodearraylist2 
+                                       assert ppackagedeclnode2 isa nullable PPackagedecl
+                                       var listnode3 = nodearraylist2
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
+#                                      end
                                        var listnode7 = new Array[Object]
                                        var ppropdefnode6 = nodearraylist3
-                                       assert ppropdefnode6 isa PPropdef
+                                       assert ppropdefnode6 isa nullable PPropdef
                                        if ppropdefnode6 != null then
                                                listnode7.add(ppropdefnode6)
                                        end
-                                       var pclassdefnode5 = new ATopClassdef.init_atopclassdef(
+                                       var pclassdefnode5: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
                                                listnode7
                                        )
                                        var pclassdefnode8 = nodearraylist5
-                                       assert pclassdefnode8 isa PClassdef
+                                       assert pclassdefnode8 isa nullable PClassdef
                                        if pclassdefnode5 != null then
                                                listnode9.add(pclassdefnode5)
                                        end
                                        if pclassdefnode8 != null then
                                                listnode9.add(pclassdefnode8)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                ppackagedeclnode2,
                                                listnode4,
                                                listnode9
@@ -2529,7 +2528,7 @@ private class ReduceAction39
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -2539,43 +2538,43 @@ special ReduceAction
                                        var listnode4 = new Array[Object]
                                        var listnode10 = new Array[Object]
                                        var ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa PPackagedecl
-                                       var listnode3 = nodearraylist2 
+                                       assert ppackagedeclnode2 isa nullable PPackagedecl
+                                       var listnode3 = nodearraylist2
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
+#                                      end
                                        var listnode8 = new Array[Object]
                                        var ppropdefnode6 = nodearraylist3
-                                       assert ppropdefnode6 isa PPropdef
-                                       var listnode7 = nodearraylist5 
+                                       assert ppropdefnode6 isa nullable PPropdef
+                                       var listnode7 = nodearraylist5
                                        assert listnode7 isa Array[Object]
                                        if ppropdefnode6 != null then
                                                listnode8.add(ppropdefnode6)
                                        end
-                                       if listnode7 != null then
+#                                      if listnode7 != null then
                                                if listnode8.is_empty then
                                                        listnode8 = listnode7
                                                else
                                                        listnode8.append(listnode7)
                                                end
-                                       end
-                                       var pclassdefnode5 = new ATopClassdef.init_atopclassdef(
+#                                      end
+                                       var pclassdefnode5: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
                                                listnode8
                                        )
                                        var pclassdefnode9 = nodearraylist6
-                                       assert pclassdefnode9 isa PClassdef
+                                       assert pclassdefnode9 isa nullable PClassdef
                                        if pclassdefnode5 != null then
                                                listnode10.add(pclassdefnode5)
                                        end
                                        if pclassdefnode9 != null then
                                                listnode10.add(pclassdefnode9)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                ppackagedeclnode2,
                                                listnode4,
                                                listnode10
@@ -2589,40 +2588,40 @@ private class ReduceAction40
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 listnode9 = new Array[Object]
-                                       var listnode4 = nodearraylist1 
+                                       var listnode4 = nodearraylist1
                                        assert listnode4 isa Array[Object]
                                        var listnode7 = new Array[Object]
                                        var ppropdefnode6 = nodearraylist2
-                                       assert ppropdefnode6 isa PPropdef
+                                       assert ppropdefnode6 isa nullable PPropdef
                                        if ppropdefnode6 != null then
                                                listnode7.add(ppropdefnode6)
                                        end
-                                       var pclassdefnode5 = new ATopClassdef.init_atopclassdef(
+                                       var pclassdefnode5: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
                                                listnode7
                                        )
                                        var pclassdefnode8 = nodearraylist4
-                                       assert pclassdefnode8 isa PClassdef
-                                       if listnode4 != null then
+                                       assert pclassdefnode8 isa nullable PClassdef
+#                                      if listnode4 != null then
                                                if listnode9.is_empty then
                                                        listnode9 = listnode4
                                                else
                                                        listnode9.append(listnode4)
                                                end
-                                       end
+#                                      end
                                        if pclassdefnode5 != null then
                                                listnode9.add(pclassdefnode5)
                                        end
                                        if pclassdefnode8 != null then
                                                listnode9.add(pclassdefnode8)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                null,
                                                listnode3,
                                                listnode9
@@ -2636,7 +2635,7 @@ private class ReduceAction41
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -2644,42 +2643,42 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
                                        var listnode10 = new Array[Object]
-                                       var listnode4 = nodearraylist1 
+                                       var listnode4 = nodearraylist1
                                        assert listnode4 isa Array[Object]
                                        var listnode8 = new Array[Object]
                                        var ppropdefnode6 = nodearraylist2
-                                       assert ppropdefnode6 isa PPropdef
-                                       var listnode7 = nodearraylist4 
+                                       assert ppropdefnode6 isa nullable PPropdef
+                                       var listnode7 = nodearraylist4
                                        assert listnode7 isa Array[Object]
                                        if ppropdefnode6 != null then
                                                listnode8.add(ppropdefnode6)
                                        end
-                                       if listnode7 != null then
+#                                      if listnode7 != null then
                                                if listnode8.is_empty then
                                                        listnode8 = listnode7
                                                else
                                                        listnode8.append(listnode7)
                                                end
-                                       end
-                                       var pclassdefnode5 = new ATopClassdef.init_atopclassdef(
+#                                      end
+                                       var pclassdefnode5: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
                                                listnode8
                                        )
                                        var pclassdefnode9 = nodearraylist5
-                                       assert pclassdefnode9 isa PClassdef
-                                       if listnode4 != null then
+                                       assert pclassdefnode9 isa nullable PClassdef
+#                                      if listnode4 != null then
                                                if listnode10.is_empty then
                                                        listnode10 = listnode4
                                                else
                                                        listnode10.append(listnode4)
                                                end
-                                       end
+#                                      end
                                        if pclassdefnode5 != null then
                                                listnode10.add(pclassdefnode5)
                                        end
                                        if pclassdefnode9 != null then
                                                listnode10.add(pclassdefnode9)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                null,
                                                listnode3,
                                                listnode10
@@ -2693,7 +2692,7 @@ private class ReduceAction42
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -2702,34 +2701,34 @@ special ReduceAction
                                        var listnode3 = new Array[Object]
                                        var listnode9 = new Array[Object]
                                        var ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa PPackagedecl
-                                       var listnode4 = nodearraylist2 
+                                       assert ppackagedeclnode2 isa nullable PPackagedecl
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
                                        var listnode7 = new Array[Object]
                                        var ppropdefnode6 = nodearraylist3
-                                       assert ppropdefnode6 isa PPropdef
+                                       assert ppropdefnode6 isa nullable PPropdef
                                        if ppropdefnode6 != null then
                                                listnode7.add(ppropdefnode6)
                                        end
-                                       var pclassdefnode5 = new ATopClassdef.init_atopclassdef(
+                                       var pclassdefnode5: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
                                                listnode7
                                        )
                                        var pclassdefnode8 = nodearraylist5
-                                       assert pclassdefnode8 isa PClassdef
-                                       if listnode4 != null then
+                                       assert pclassdefnode8 isa nullable PClassdef
+#                                      if listnode4 != null then
                                                if listnode9.is_empty then
                                                        listnode9 = listnode4
                                                else
                                                        listnode9.append(listnode4)
                                                end
-                                       end
+#                                      end
                                        if pclassdefnode5 != null then
                                                listnode9.add(pclassdefnode5)
                                        end
                                        if pclassdefnode8 != null then
                                                listnode9.add(pclassdefnode8)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                ppackagedeclnode2,
                                                listnode3,
                                                listnode9
@@ -2743,7 +2742,7 @@ private class ReduceAction43
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -2753,43 +2752,43 @@ special ReduceAction
                                        var listnode3 = new Array[Object]
                                        var listnode10 = new Array[Object]
                                        var ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa PPackagedecl
-                                       var listnode4 = nodearraylist2 
+                                       assert ppackagedeclnode2 isa nullable PPackagedecl
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
                                        var listnode8 = new Array[Object]
                                        var ppropdefnode6 = nodearraylist3
-                                       assert ppropdefnode6 isa PPropdef
-                                       var listnode7 = nodearraylist5 
+                                       assert ppropdefnode6 isa nullable PPropdef
+                                       var listnode7 = nodearraylist5
                                        assert listnode7 isa Array[Object]
                                        if ppropdefnode6 != null then
                                                listnode8.add(ppropdefnode6)
                                        end
-                                       if listnode7 != null then
+#                                      if listnode7 != null then
                                                if listnode8.is_empty then
                                                        listnode8 = listnode7
                                                else
                                                        listnode8.append(listnode7)
                                                end
-                                       end
-                                       var pclassdefnode5 = new ATopClassdef.init_atopclassdef(
+#                                      end
+                                       var pclassdefnode5: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
                                                listnode8
                                        )
                                        var pclassdefnode9 = nodearraylist6
-                                       assert pclassdefnode9 isa PClassdef
-                                       if listnode4 != null then
+                                       assert pclassdefnode9 isa nullable PClassdef
+#                                      if listnode4 != null then
                                                if listnode10.is_empty then
                                                        listnode10 = listnode4
                                                else
                                                        listnode10.append(listnode4)
                                                end
-                                       end
+#                                      end
                                        if pclassdefnode5 != null then
                                                listnode10.add(pclassdefnode5)
                                        end
                                        if pclassdefnode9 != null then
                                                listnode10.add(pclassdefnode9)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                ppackagedeclnode2,
                                                listnode3,
                                                listnode10
@@ -2803,7 +2802,7 @@ private class ReduceAction44
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -2811,42 +2810,42 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
                                        var listnode10 = new Array[Object]
-                                       var listnode3 = nodearraylist1 
+                                       var listnode3 = nodearraylist1
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
-                                       var listnode5 = nodearraylist2 
+#                                      end
+                                       var listnode5 = nodearraylist2
                                        assert listnode5 isa Array[Object]
                                        var listnode8 = new Array[Object]
                                        var ppropdefnode7 = nodearraylist3
-                                       assert ppropdefnode7 isa PPropdef
+                                       assert ppropdefnode7 isa nullable PPropdef
                                        if ppropdefnode7 != null then
                                                listnode8.add(ppropdefnode7)
                                        end
-                                       var pclassdefnode6 = new ATopClassdef.init_atopclassdef(
+                                       var pclassdefnode6: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
                                                listnode8
                                        )
                                        var pclassdefnode9 = nodearraylist5
-                                       assert pclassdefnode9 isa PClassdef
-                                       if listnode5 != null then
+                                       assert pclassdefnode9 isa nullable PClassdef
+#                                      if listnode5 != null then
                                                if listnode10.is_empty then
                                                        listnode10 = listnode5
                                                else
                                                        listnode10.append(listnode5)
                                                end
-                                       end
+#                                      end
                                        if pclassdefnode6 != null then
                                                listnode10.add(pclassdefnode6)
                                        end
                                        if pclassdefnode9 != null then
                                                listnode10.add(pclassdefnode9)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                null,
                                                listnode4,
                                                listnode10
@@ -2860,7 +2859,7 @@ private class ReduceAction45
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -2869,51 +2868,51 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
                                        var listnode11 = new Array[Object]
-                                       var listnode3 = nodearraylist1 
+                                       var listnode3 = nodearraylist1
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
-                                       var listnode5 = nodearraylist2 
+#                                      end
+                                       var listnode5 = nodearraylist2
                                        assert listnode5 isa Array[Object]
                                        var listnode9 = new Array[Object]
                                        var ppropdefnode7 = nodearraylist3
-                                       assert ppropdefnode7 isa PPropdef
-                                       var listnode8 = nodearraylist5 
+                                       assert ppropdefnode7 isa nullable PPropdef
+                                       var listnode8 = nodearraylist5
                                        assert listnode8 isa Array[Object]
                                        if ppropdefnode7 != null then
                                                listnode9.add(ppropdefnode7)
                                        end
-                                       if listnode8 != null then
+#                                      if listnode8 != null then
                                                if listnode9.is_empty then
                                                        listnode9 = listnode8
                                                else
                                                        listnode9.append(listnode8)
                                                end
-                                       end
-                                       var pclassdefnode6 = new ATopClassdef.init_atopclassdef(
+#                                      end
+                                       var pclassdefnode6: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
                                                listnode9
                                        )
                                        var pclassdefnode10 = nodearraylist6
-                                       assert pclassdefnode10 isa PClassdef
-                                       if listnode5 != null then
+                                       assert pclassdefnode10 isa nullable PClassdef
+#                                      if listnode5 != null then
                                                if listnode11.is_empty then
                                                        listnode11 = listnode5
                                                else
                                                        listnode11.append(listnode5)
                                                end
-                                       end
+#                                      end
                                        if pclassdefnode6 != null then
                                                listnode11.add(pclassdefnode6)
                                        end
                                        if pclassdefnode10 != null then
                                                listnode11.add(pclassdefnode10)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                null,
                                                listnode4,
                                                listnode11
@@ -2927,7 +2926,7 @@ private class ReduceAction46
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -2937,43 +2936,43 @@ special ReduceAction
                                        var listnode4 = new Array[Object]
                                        var listnode10 = new Array[Object]
                                        var ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa PPackagedecl
-                                       var listnode3 = nodearraylist2 
+                                       assert ppackagedeclnode2 isa nullable PPackagedecl
+                                       var listnode3 = nodearraylist2
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
-                                       var listnode5 = nodearraylist3 
+#                                      end
+                                       var listnode5 = nodearraylist3
                                        assert listnode5 isa Array[Object]
                                        var listnode8 = new Array[Object]
                                        var ppropdefnode7 = nodearraylist4
-                                       assert ppropdefnode7 isa PPropdef
+                                       assert ppropdefnode7 isa nullable PPropdef
                                        if ppropdefnode7 != null then
                                                listnode8.add(ppropdefnode7)
                                        end
-                                       var pclassdefnode6 = new ATopClassdef.init_atopclassdef(
+                                       var pclassdefnode6: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
                                                listnode8
                                        )
                                        var pclassdefnode9 = nodearraylist6
-                                       assert pclassdefnode9 isa PClassdef
-                                       if listnode5 != null then
+                                       assert pclassdefnode9 isa nullable PClassdef
+#                                      if listnode5 != null then
                                                if listnode10.is_empty then
                                                        listnode10 = listnode5
                                                else
                                                        listnode10.append(listnode5)
                                                end
-                                       end
+#                                      end
                                        if pclassdefnode6 != null then
                                                listnode10.add(pclassdefnode6)
                                        end
                                        if pclassdefnode9 != null then
                                                listnode10.add(pclassdefnode9)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                ppackagedeclnode2,
                                                listnode4,
                                                listnode10
@@ -2987,7 +2986,7 @@ private class ReduceAction47
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -2998,52 +2997,52 @@ special ReduceAction
                                        var listnode4 = new Array[Object]
                                        var listnode11 = new Array[Object]
                                        var ppackagedeclnode2 = nodearraylist1
-                                       assert ppackagedeclnode2 isa PPackagedecl
-                                       var listnode3 = nodearraylist2 
+                                       assert ppackagedeclnode2 isa nullable PPackagedecl
+                                       var listnode3 = nodearraylist2
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
-                                       var listnode5 = nodearraylist3 
+#                                      end
+                                       var listnode5 = nodearraylist3
                                        assert listnode5 isa Array[Object]
                                        var listnode9 = new Array[Object]
                                        var ppropdefnode7 = nodearraylist4
-                                       assert ppropdefnode7 isa PPropdef
-                                       var listnode8 = nodearraylist6 
+                                       assert ppropdefnode7 isa nullable PPropdef
+                                       var listnode8 = nodearraylist6
                                        assert listnode8 isa Array[Object]
                                        if ppropdefnode7 != null then
                                                listnode9.add(ppropdefnode7)
                                        end
-                                       if listnode8 != null then
+#                                      if listnode8 != null then
                                                if listnode9.is_empty then
                                                        listnode9 = listnode8
                                                else
                                                        listnode9.append(listnode8)
                                                end
-                                       end
-                                       var pclassdefnode6 = new ATopClassdef.init_atopclassdef(
+#                                      end
+                                       var pclassdefnode6: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
                                                listnode9
                                        )
                                        var pclassdefnode10 = nodearraylist7
-                                       assert pclassdefnode10 isa PClassdef
-                                       if listnode5 != null then
+                                       assert pclassdefnode10 isa nullable PClassdef
+#                                      if listnode5 != null then
                                                if listnode11.is_empty then
                                                        listnode11 = listnode5
                                                else
                                                        listnode11.append(listnode5)
                                                end
-                                       end
+#                                      end
                                        if pclassdefnode6 != null then
                                                listnode11.add(pclassdefnode6)
                                        end
                                        if pclassdefnode10 != null then
                                                listnode11.add(pclassdefnode10)
                                        end
-                                       var pmodulenode1 = new AModule.init_amodule(
+                                       var pmodulenode1: nullable AModule = new AModule.init_amodule(
                                                ppackagedeclnode2,
                                                listnode4,
                                                listnode11
@@ -3057,19 +3056,19 @@ private class ReduceAction48
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwpackagenode3 = nodearraylist2
-                                       assert tkwpackagenode3 isa TKwpackage
+                                       assert tkwpackagenode3 isa nullable TKwpackage
                                        var tidnode4 = nodearraylist4
-                                       assert tidnode4 isa TId
-                                       var ppackagedeclnode1 = new APackagedecl.init_apackagedecl(
+                                       assert tidnode4 isa nullable TId
+                                       var ppackagedeclnode1: nullable APackagedecl = new APackagedecl.init_apackagedecl(
                                                pdocnode2,
                                                tkwpackagenode3,
                                                tidnode4
@@ -3083,7 +3082,7 @@ private class ReduceAction49
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -3091,12 +3090,12 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pvisibilitynode2 = nodearraylist2
-                                       assert pvisibilitynode2 isa PVisibility
+                                       assert pvisibilitynode2 isa nullable PVisibility
                                        var tkwimportnode3 = nodearraylist3
-                                       assert tkwimportnode3 isa TKwimport
+                                       assert tkwimportnode3 isa nullable TKwimport
                                        var tidnode4 = nodearraylist5
-                                       assert tidnode4 isa TId
-                                       var pimportnode1 = new AImport.init_aimport(
+                                       assert tidnode4 isa nullable TId
+                                       var pimportnode1: nullable AImport = new AImport.init_aimport(
                                                pvisibilitynode2,
                                                tkwimportnode3,
                                                tidnode4
@@ -3110,7 +3109,7 @@ private class ReduceAction50
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -3118,12 +3117,12 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pvisibilitynode2 = nodearraylist2
-                                       assert pvisibilitynode2 isa PVisibility
+                                       assert pvisibilitynode2 isa nullable PVisibility
                                        var tkwimportnode3 = nodearraylist3
-                                       assert tkwimportnode3 isa TKwimport
+                                       assert tkwimportnode3 isa nullable TKwimport
                                        var tkwendnode4 = nodearraylist5
-                                       assert tkwendnode4 isa TKwend
-                                       var pimportnode1 = new ANoImport.init_anoimport(
+                                       assert tkwendnode4 isa nullable TKwend
+                                       var pimportnode1: nullable ANoImport = new ANoImport.init_anoimport(
                                                pvisibilitynode2,
                                                tkwimportnode3,
                                                tkwendnode4
@@ -3137,15 +3136,15 @@ private class ReduceAction51
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
                                        var ppropdefnode2 = nodearraylist1
-                                       assert ppropdefnode2 isa PPropdef
+                                       assert ppropdefnode2 isa nullable PPropdef
                                        if ppropdefnode2 != null then
                                                listnode3.add(ppropdefnode2)
                                        end
-                                       var pclassdefnode1 = new AMainClassdef.init_amainclassdef(
+                                       var pclassdefnode1: nullable AMainClassdef = new AMainClassdef.init_amainclassdef(
                                                listnode3
                                        )
                                        node_list = pclassdefnode1
@@ -3157,7 +3156,7 @@ private class ReduceAction52
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        node_list = null
                                        p.push(p.go_to(3), node_list)
@@ -3168,20 +3167,20 @@ private class ReduceAction53
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var pexprnode4 = nodearraylist2
-                                       assert pexprnode4 isa PExpr
+                                       assert pexprnode4 isa nullable PExpr
                                        if pexprnode4 != null then
                                                listnode5.add(pexprnode4)
                                        end
-                                       var pexprnode3 = new ABlockExpr.init_ablockexpr(
+                                       var pexprnode3: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
                                                listnode5
                                        )
-                                       var ppropdefnode1 = new AMainMethPropdef.init_amainmethpropdef(
+                                       var ppropdefnode1: nullable AMainMethPropdef = new AMainMethPropdef.init_amainmethpropdef(
                                                null,
                                                pexprnode3
                                        )
@@ -3194,30 +3193,30 @@ private class ReduceAction54
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode6 = new Array[Object]
                                        var pexprnode4 = nodearraylist2
-                                       assert pexprnode4 isa PExpr
-                                       var listnode5 = nodearraylist3 
+                                       assert pexprnode4 isa nullable PExpr
+                                       var listnode5 = nodearraylist3
                                        assert listnode5 isa Array[Object]
                                        if pexprnode4 != null then
                                                listnode6.add(pexprnode4)
                                        end
-                                       if listnode5 != null then
+#                                      if listnode5 != null then
                                                if listnode6.is_empty then
                                                        listnode6 = listnode5
                                                else
                                                        listnode6.append(listnode5)
                                                end
-                                       end
-                                       var pexprnode3 = new ABlockExpr.init_ablockexpr(
+#                                      end
+                                       var pexprnode3: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
                                                listnode6
                                        )
-                                       var ppropdefnode1 = new AMainMethPropdef.init_amainmethpropdef(
+                                       var ppropdefnode1: nullable AMainMethPropdef = new AMainMethPropdef.init_amainmethpropdef(
                                                null,
                                                pexprnode3
                                        )
@@ -3230,7 +3229,7 @@ private class ReduceAction55
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -3242,14 +3241,14 @@ special ReduceAction
                                        var listnode8 = new Array[Object]
                                        var listnode9 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist3
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist5
-                                       assert tclassidnode6 isa TClassid
-                                       var pclassdefnode1 = new AClassdef.init_aclassdef(
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -3268,7 +3267,7 @@ private class ReduceAction56
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -3281,16 +3280,16 @@ special ReduceAction
                                        var listnode8 = new Array[Object]
                                        var listnode9 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist4
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist6
-                                       assert tclassidnode6 isa TClassid
-                                       var pclassdefnode1 = new AClassdef.init_aclassdef(
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -3309,7 +3308,7 @@ private class ReduceAction57
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -3322,23 +3321,23 @@ special ReduceAction
                                        var listnode9 = new Array[Object]
                                        var listnode10 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist3
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist5
-                                       assert tclassidnode6 isa TClassid
-                                       var listnode7 = nodearraylist6 
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode7 = nodearraylist6
                                        assert listnode7 isa Array[Object]
-                                       if listnode7 != null then
+#                                      if listnode7 != null then
                                                if listnode8.is_empty then
                                                        listnode8 = listnode7
                                                else
                                                        listnode8.append(listnode7)
                                                end
-                                       end
-                                       var pclassdefnode1 = new AClassdef.init_aclassdef(
+#                                      end
+                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -3357,7 +3356,7 @@ private class ReduceAction58
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -3371,25 +3370,25 @@ special ReduceAction
                                        var listnode9 = new Array[Object]
                                        var listnode10 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist4
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist6
-                                       assert tclassidnode6 isa TClassid
-                                       var listnode7 = nodearraylist7 
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode7 = nodearraylist7
                                        assert listnode7 isa Array[Object]
-                                       if listnode7 != null then
+#                                      if listnode7 != null then
                                                if listnode8.is_empty then
                                                        listnode8 = listnode7
                                                else
                                                        listnode8.append(listnode7)
                                                end
-                                       end
-                                       var pclassdefnode1 = new AClassdef.init_aclassdef(
+#                                      end
+                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -3408,7 +3407,7 @@ private class ReduceAction59
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -3421,23 +3420,23 @@ special ReduceAction
                                        var listnode9 = new Array[Object]
                                        var listnode10 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist3
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist5
-                                       assert tclassidnode6 isa TClassid
-                                       var listnode8 = nodearraylist6 
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode8 = nodearraylist6
                                        assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
+#                                      if listnode8 != null then
                                                if listnode9.is_empty then
                                                        listnode9 = listnode8
                                                else
                                                        listnode9.append(listnode8)
                                                end
-                                       end
-                                       var pclassdefnode1 = new AClassdef.init_aclassdef(
+#                                      end
+                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -3456,7 +3455,7 @@ private class ReduceAction60
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -3470,25 +3469,25 @@ special ReduceAction
                                        var listnode9 = new Array[Object]
                                        var listnode10 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist4
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist6
-                                       assert tclassidnode6 isa TClassid
-                                       var listnode8 = nodearraylist7 
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode8 = nodearraylist7
                                        assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
+#                                      if listnode8 != null then
                                                if listnode9.is_empty then
                                                        listnode9 = listnode8
                                                else
                                                        listnode9.append(listnode8)
                                                end
-                                       end
-                                       var pclassdefnode1 = new AClassdef.init_aclassdef(
+#                                      end
+                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -3507,7 +3506,7 @@ private class ReduceAction61
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -3521,32 +3520,32 @@ special ReduceAction
                                        var listnode10 = new Array[Object]
                                        var listnode11 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist3
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist5
-                                       assert tclassidnode6 isa TClassid
-                                       var listnode7 = nodearraylist6 
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode7 = nodearraylist6
                                        assert listnode7 isa Array[Object]
-                                       if listnode7 != null then
+#                                      if listnode7 != null then
                                                if listnode8.is_empty then
                                                        listnode8 = listnode7
                                                else
                                                        listnode8.append(listnode7)
                                                end
-                                       end
-                                       var listnode9 = nodearraylist7 
+#                                      end
+                                       var listnode9 = nodearraylist7
                                        assert listnode9 isa Array[Object]
-                                       if listnode9 != null then
+#                                      if listnode9 != null then
                                                if listnode10.is_empty then
                                                        listnode10 = listnode9
                                                else
                                                        listnode10.append(listnode9)
                                                end
-                                       end
-                                       var pclassdefnode1 = new AClassdef.init_aclassdef(
+#                                      end
+                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -3565,7 +3564,7 @@ private class ReduceAction62
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
@@ -3580,34 +3579,34 @@ special ReduceAction
                                        var listnode10 = new Array[Object]
                                        var listnode11 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist4
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist6
-                                       assert tclassidnode6 isa TClassid
-                                       var listnode7 = nodearraylist7 
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode7 = nodearraylist7
                                        assert listnode7 isa Array[Object]
-                                       if listnode7 != null then
+#                                      if listnode7 != null then
                                                if listnode8.is_empty then
                                                        listnode8 = listnode7
                                                else
                                                        listnode8.append(listnode7)
                                                end
-                                       end
-                                       var listnode9 = nodearraylist8 
+#                                      end
+                                       var listnode9 = nodearraylist8
                                        assert listnode9 isa Array[Object]
-                                       if listnode9 != null then
+#                                      if listnode9 != null then
                                                if listnode10.is_empty then
                                                        listnode10 = listnode9
                                                else
                                                        listnode10.append(listnode9)
                                                end
-                                       end
-                                       var pclassdefnode1 = new AClassdef.init_aclassdef(
+#                                      end
+                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -3626,7 +3625,7 @@ private class ReduceAction63
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -3640,19 +3639,19 @@ special ReduceAction
                                        var listnode8 = new Array[Object]
                                        var listnode10 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist3
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist5
-                                       assert tclassidnode6 isa TClassid
+                                       assert tclassidnode6 isa nullable TClassid
                                        var ppropdefnode9 = nodearraylist6
-                                       assert ppropdefnode9 isa PPropdef
+                                       assert ppropdefnode9 isa nullable PPropdef
                                        if ppropdefnode9 != null then
                                                listnode10.add(ppropdefnode9)
                                        end
-                                       var pclassdefnode1 = new AClassdef.init_aclassdef(
+                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -3671,7 +3670,7 @@ private class ReduceAction64
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
@@ -3686,28 +3685,28 @@ special ReduceAction
                                        var listnode8 = new Array[Object]
                                        var listnode11 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist3
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist5
-                                       assert tclassidnode6 isa TClassid
+                                       assert tclassidnode6 isa nullable TClassid
                                        var ppropdefnode9 = nodearraylist6
-                                       assert ppropdefnode9 isa PPropdef
-                                       var listnode10 = nodearraylist8 
+                                       assert ppropdefnode9 isa nullable PPropdef
+                                       var listnode10 = nodearraylist8
                                        assert listnode10 isa Array[Object]
                                        if ppropdefnode9 != null then
                                                listnode11.add(ppropdefnode9)
                                        end
-                                       if listnode10 != null then
+#                                      if listnode10 != null then
                                                if listnode11.is_empty then
                                                        listnode11 = listnode10
                                                else
                                                        listnode11.append(listnode10)
                                                end
-                                       end
-                                       var pclassdefnode1 = new AClassdef.init_aclassdef(
+#                                      end
+                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -3726,7 +3725,7 @@ private class ReduceAction65
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
@@ -3741,21 +3740,21 @@ special ReduceAction
                                        var listnode8 = new Array[Object]
                                        var listnode10 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist4
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist6
-                                       assert tclassidnode6 isa TClassid
+                                       assert tclassidnode6 isa nullable TClassid
                                        var ppropdefnode9 = nodearraylist7
-                                       assert ppropdefnode9 isa PPropdef
+                                       assert ppropdefnode9 isa nullable PPropdef
                                        if ppropdefnode9 != null then
                                                listnode10.add(ppropdefnode9)
                                        end
-                                       var pclassdefnode1 = new AClassdef.init_aclassdef(
+                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -3774,7 +3773,7 @@ private class ReduceAction66
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
@@ -3790,30 +3789,30 @@ special ReduceAction
                                        var listnode8 = new Array[Object]
                                        var listnode11 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist4
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist6
-                                       assert tclassidnode6 isa TClassid
+                                       assert tclassidnode6 isa nullable TClassid
                                        var ppropdefnode9 = nodearraylist7
-                                       assert ppropdefnode9 isa PPropdef
-                                       var listnode10 = nodearraylist9 
+                                       assert ppropdefnode9 isa nullable PPropdef
+                                       var listnode10 = nodearraylist9
                                        assert listnode10 isa Array[Object]
                                        if ppropdefnode9 != null then
                                                listnode11.add(ppropdefnode9)
                                        end
-                                       if listnode10 != null then
+#                                      if listnode10 != null then
                                                if listnode11.is_empty then
                                                        listnode11 = listnode10
                                                else
                                                        listnode11.append(listnode10)
                                                end
-                                       end
-                                       var pclassdefnode1 = new AClassdef.init_aclassdef(
+#                                      end
+                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -3832,7 +3831,7 @@ private class ReduceAction67
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
@@ -3847,28 +3846,28 @@ special ReduceAction
                                        var listnode9 = new Array[Object]
                                        var listnode11 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist3
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist5
-                                       assert tclassidnode6 isa TClassid
-                                       var listnode7 = nodearraylist6 
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode7 = nodearraylist6
                                        assert listnode7 isa Array[Object]
-                                       if listnode7 != null then
+#                                      if listnode7 != null then
                                                if listnode8.is_empty then
                                                        listnode8 = listnode7
                                                else
                                                        listnode8.append(listnode7)
                                                end
-                                       end
+#                                      end
                                        var ppropdefnode10 = nodearraylist7
-                                       assert ppropdefnode10 isa PPropdef
+                                       assert ppropdefnode10 isa nullable PPropdef
                                        if ppropdefnode10 != null then
                                                listnode11.add(ppropdefnode10)
                                        end
-                                       var pclassdefnode1 = new AClassdef.init_aclassdef(
+                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -3887,7 +3886,7 @@ private class ReduceAction68
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
@@ -3903,37 +3902,37 @@ special ReduceAction
                                        var listnode9 = new Array[Object]
                                        var listnode12 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist3
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist5
-                                       assert tclassidnode6 isa TClassid
-                                       var listnode7 = nodearraylist6 
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode7 = nodearraylist6
                                        assert listnode7 isa Array[Object]
-                                       if listnode7 != null then
+#                                      if listnode7 != null then
                                                if listnode8.is_empty then
                                                        listnode8 = listnode7
                                                else
                                                        listnode8.append(listnode7)
                                                end
-                                       end
+#                                      end
                                        var ppropdefnode10 = nodearraylist7
-                                       assert ppropdefnode10 isa PPropdef
-                                       var listnode11 = nodearraylist9 
+                                       assert ppropdefnode10 isa nullable PPropdef
+                                       var listnode11 = nodearraylist9
                                        assert listnode11 isa Array[Object]
                                        if ppropdefnode10 != null then
                                                listnode12.add(ppropdefnode10)
                                        end
-                                       if listnode11 != null then
+#                                      if listnode11 != null then
                                                if listnode12.is_empty then
                                                        listnode12 = listnode11
                                                else
                                                        listnode12.append(listnode11)
                                                end
-                                       end
-                                       var pclassdefnode1 = new AClassdef.init_aclassdef(
+#                                      end
+                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -3952,7 +3951,7 @@ private class ReduceAction69
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
@@ -3968,30 +3967,30 @@ special ReduceAction
                                        var listnode9 = new Array[Object]
                                        var listnode11 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist4
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist6
-                                       assert tclassidnode6 isa TClassid
-                                       var listnode7 = nodearraylist7 
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode7 = nodearraylist7
                                        assert listnode7 isa Array[Object]
-                                       if listnode7 != null then
+#                                      if listnode7 != null then
                                                if listnode8.is_empty then
                                                        listnode8 = listnode7
                                                else
                                                        listnode8.append(listnode7)
                                                end
-                                       end
+#                                      end
                                        var ppropdefnode10 = nodearraylist8
-                                       assert ppropdefnode10 isa PPropdef
+                                       assert ppropdefnode10 isa nullable PPropdef
                                        if ppropdefnode10 != null then
                                                listnode11.add(ppropdefnode10)
                                        end
-                                       var pclassdefnode1 = new AClassdef.init_aclassdef(
+                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -4010,7 +4009,7 @@ private class ReduceAction70
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist12 = p.pop
                                        var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
@@ -4027,39 +4026,39 @@ special ReduceAction
                                        var listnode9 = new Array[Object]
                                        var listnode12 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist4
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist6
-                                       assert tclassidnode6 isa TClassid
-                                       var listnode7 = nodearraylist7 
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode7 = nodearraylist7
                                        assert listnode7 isa Array[Object]
-                                       if listnode7 != null then
+#                                      if listnode7 != null then
                                                if listnode8.is_empty then
                                                        listnode8 = listnode7
                                                else
                                                        listnode8.append(listnode7)
                                                end
-                                       end
+#                                      end
                                        var ppropdefnode10 = nodearraylist8
-                                       assert ppropdefnode10 isa PPropdef
-                                       var listnode11 = nodearraylist10 
+                                       assert ppropdefnode10 isa nullable PPropdef
+                                       var listnode11 = nodearraylist10
                                        assert listnode11 isa Array[Object]
                                        if ppropdefnode10 != null then
                                                listnode12.add(ppropdefnode10)
                                        end
-                                       if listnode11 != null then
+#                                      if listnode11 != null then
                                                if listnode12.is_empty then
                                                        listnode12 = listnode11
                                                else
                                                        listnode12.append(listnode11)
                                                end
-                                       end
-                                       var pclassdefnode1 = new AClassdef.init_aclassdef(
+#                                      end
+                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -4078,7 +4077,7 @@ private class ReduceAction71
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
@@ -4093,28 +4092,28 @@ special ReduceAction
                                        var listnode9 = new Array[Object]
                                        var listnode11 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist3
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist5
-                                       assert tclassidnode6 isa TClassid
-                                       var listnode8 = nodearraylist6 
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode8 = nodearraylist6
                                        assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
+#                                      if listnode8 != null then
                                                if listnode9.is_empty then
                                                        listnode9 = listnode8
                                                else
                                                        listnode9.append(listnode8)
                                                end
-                                       end
+#                                      end
                                        var ppropdefnode10 = nodearraylist7
-                                       assert ppropdefnode10 isa PPropdef
+                                       assert ppropdefnode10 isa nullable PPropdef
                                        if ppropdefnode10 != null then
                                                listnode11.add(ppropdefnode10)
                                        end
-                                       var pclassdefnode1 = new AClassdef.init_aclassdef(
+                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -4133,7 +4132,7 @@ private class ReduceAction72
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
@@ -4149,37 +4148,37 @@ special ReduceAction
                                        var listnode9 = new Array[Object]
                                        var listnode12 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist3
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist5
-                                       assert tclassidnode6 isa TClassid
-                                       var listnode8 = nodearraylist6 
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode8 = nodearraylist6
                                        assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
+#                                      if listnode8 != null then
                                                if listnode9.is_empty then
                                                        listnode9 = listnode8
                                                else
                                                        listnode9.append(listnode8)
                                                end
-                                       end
+#                                      end
                                        var ppropdefnode10 = nodearraylist7
-                                       assert ppropdefnode10 isa PPropdef
-                                       var listnode11 = nodearraylist9 
+                                       assert ppropdefnode10 isa nullable PPropdef
+                                       var listnode11 = nodearraylist9
                                        assert listnode11 isa Array[Object]
                                        if ppropdefnode10 != null then
                                                listnode12.add(ppropdefnode10)
                                        end
-                                       if listnode11 != null then
+#                                      if listnode11 != null then
                                                if listnode12.is_empty then
                                                        listnode12 = listnode11
                                                else
                                                        listnode12.append(listnode11)
                                                end
-                                       end
-                                       var pclassdefnode1 = new AClassdef.init_aclassdef(
+#                                      end
+                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -4198,7 +4197,7 @@ private class ReduceAction73
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
@@ -4214,30 +4213,30 @@ special ReduceAction
                                        var listnode9 = new Array[Object]
                                        var listnode11 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist4
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist6
-                                       assert tclassidnode6 isa TClassid
-                                       var listnode8 = nodearraylist7 
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode8 = nodearraylist7
                                        assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
+#                                      if listnode8 != null then
                                                if listnode9.is_empty then
                                                        listnode9 = listnode8
                                                else
                                                        listnode9.append(listnode8)
                                                end
-                                       end
+#                                      end
                                        var ppropdefnode10 = nodearraylist8
-                                       assert ppropdefnode10 isa PPropdef
+                                       assert ppropdefnode10 isa nullable PPropdef
                                        if ppropdefnode10 != null then
                                                listnode11.add(ppropdefnode10)
                                        end
-                                       var pclassdefnode1 = new AClassdef.init_aclassdef(
+                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -4256,7 +4255,7 @@ private class ReduceAction74
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist12 = p.pop
                                        var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
@@ -4273,39 +4272,39 @@ special ReduceAction
                                        var listnode9 = new Array[Object]
                                        var listnode12 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist4
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist6
-                                       assert tclassidnode6 isa TClassid
-                                       var listnode8 = nodearraylist7 
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode8 = nodearraylist7
                                        assert listnode8 isa Array[Object]
-                                       if listnode8 != null then
+#                                      if listnode8 != null then
                                                if listnode9.is_empty then
                                                        listnode9 = listnode8
                                                else
                                                        listnode9.append(listnode8)
                                                end
-                                       end
+#                                      end
                                        var ppropdefnode10 = nodearraylist8
-                                       assert ppropdefnode10 isa PPropdef
-                                       var listnode11 = nodearraylist10 
+                                       assert ppropdefnode10 isa nullable PPropdef
+                                       var listnode11 = nodearraylist10
                                        assert listnode11 isa Array[Object]
                                        if ppropdefnode10 != null then
                                                listnode12.add(ppropdefnode10)
                                        end
-                                       if listnode11 != null then
+#                                      if listnode11 != null then
                                                if listnode12.is_empty then
                                                        listnode12 = listnode11
                                                else
                                                        listnode12.append(listnode11)
                                                end
-                                       end
-                                       var pclassdefnode1 = new AClassdef.init_aclassdef(
+#                                      end
+                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -4324,7 +4323,7 @@ private class ReduceAction75
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
@@ -4340,37 +4339,37 @@ special ReduceAction
                                        var listnode10 = new Array[Object]
                                        var listnode12 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist3
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist5
-                                       assert tclassidnode6 isa TClassid
-                                       var listnode7 = nodearraylist6 
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode7 = nodearraylist6
                                        assert listnode7 isa Array[Object]
-                                       if listnode7 != null then
+#                                      if listnode7 != null then
                                                if listnode8.is_empty then
                                                        listnode8 = listnode7
                                                else
                                                        listnode8.append(listnode7)
                                                end
-                                       end
-                                       var listnode9 = nodearraylist7 
+#                                      end
+                                       var listnode9 = nodearraylist7
                                        assert listnode9 isa Array[Object]
-                                       if listnode9 != null then
+#                                      if listnode9 != null then
                                                if listnode10.is_empty then
                                                        listnode10 = listnode9
                                                else
                                                        listnode10.append(listnode9)
                                                end
-                                       end
+#                                      end
                                        var ppropdefnode11 = nodearraylist8
-                                       assert ppropdefnode11 isa PPropdef
+                                       assert ppropdefnode11 isa nullable PPropdef
                                        if ppropdefnode11 != null then
                                                listnode12.add(ppropdefnode11)
                                        end
-                                       var pclassdefnode1 = new AClassdef.init_aclassdef(
+                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -4389,7 +4388,7 @@ private class ReduceAction76
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist12 = p.pop
                                        var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
@@ -4406,46 +4405,46 @@ special ReduceAction
                                        var listnode10 = new Array[Object]
                                        var listnode13 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist3
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist5
-                                       assert tclassidnode6 isa TClassid
-                                       var listnode7 = nodearraylist6 
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode7 = nodearraylist6
                                        assert listnode7 isa Array[Object]
-                                       if listnode7 != null then
+#                                      if listnode7 != null then
                                                if listnode8.is_empty then
                                                        listnode8 = listnode7
                                                else
                                                        listnode8.append(listnode7)
                                                end
-                                       end
-                                       var listnode9 = nodearraylist7 
+#                                      end
+                                       var listnode9 = nodearraylist7
                                        assert listnode9 isa Array[Object]
-                                       if listnode9 != null then
+#                                      if listnode9 != null then
                                                if listnode10.is_empty then
                                                        listnode10 = listnode9
                                                else
                                                        listnode10.append(listnode9)
                                                end
-                                       end
+#                                      end
                                        var ppropdefnode11 = nodearraylist8
-                                       assert ppropdefnode11 isa PPropdef
-                                       var listnode12 = nodearraylist10 
+                                       assert ppropdefnode11 isa nullable PPropdef
+                                       var listnode12 = nodearraylist10
                                        assert listnode12 isa Array[Object]
                                        if ppropdefnode11 != null then
                                                listnode13.add(ppropdefnode11)
                                        end
-                                       if listnode12 != null then
+#                                      if listnode12 != null then
                                                if listnode13.is_empty then
                                                        listnode13 = listnode12
                                                else
                                                        listnode13.append(listnode12)
                                                end
-                                       end
-                                       var pclassdefnode1 = new AClassdef.init_aclassdef(
+#                                      end
+                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -4464,7 +4463,7 @@ private class ReduceAction77
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist12 = p.pop
                                        var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
@@ -4481,39 +4480,39 @@ special ReduceAction
                                        var listnode10 = new Array[Object]
                                        var listnode12 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist4
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist6
-                                       assert tclassidnode6 isa TClassid
-                                       var listnode7 = nodearraylist7 
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode7 = nodearraylist7
                                        assert listnode7 isa Array[Object]
-                                       if listnode7 != null then
+#                                      if listnode7 != null then
                                                if listnode8.is_empty then
                                                        listnode8 = listnode7
                                                else
                                                        listnode8.append(listnode7)
                                                end
-                                       end
-                                       var listnode9 = nodearraylist8 
+#                                      end
+                                       var listnode9 = nodearraylist8
                                        assert listnode9 isa Array[Object]
-                                       if listnode9 != null then
+#                                      if listnode9 != null then
                                                if listnode10.is_empty then
                                                        listnode10 = listnode9
                                                else
                                                        listnode10.append(listnode9)
                                                end
-                                       end
+#                                      end
                                        var ppropdefnode11 = nodearraylist9
-                                       assert ppropdefnode11 isa PPropdef
+                                       assert ppropdefnode11 isa nullable PPropdef
                                        if ppropdefnode11 != null then
                                                listnode12.add(ppropdefnode11)
                                        end
-                                       var pclassdefnode1 = new AClassdef.init_aclassdef(
+                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -4532,7 +4531,7 @@ private class ReduceAction78
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist13 = p.pop
                                        var nodearraylist12 = p.pop
                                        var nodearraylist11 = p.pop
@@ -4550,48 +4549,48 @@ special ReduceAction
                                        var listnode10 = new Array[Object]
                                        var listnode13 = new Array[Object]
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist4
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist6
-                                       assert tclassidnode6 isa TClassid
-                                       var listnode7 = nodearraylist7 
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode7 = nodearraylist7
                                        assert listnode7 isa Array[Object]
-                                       if listnode7 != null then
+#                                      if listnode7 != null then
                                                if listnode8.is_empty then
                                                        listnode8 = listnode7
                                                else
                                                        listnode8.append(listnode7)
                                                end
-                                       end
-                                       var listnode9 = nodearraylist8 
+#                                      end
+                                       var listnode9 = nodearraylist8
                                        assert listnode9 isa Array[Object]
-                                       if listnode9 != null then
+#                                      if listnode9 != null then
                                                if listnode10.is_empty then
                                                        listnode10 = listnode9
                                                else
                                                        listnode10.append(listnode9)
                                                end
-                                       end
+#                                      end
                                        var ppropdefnode11 = nodearraylist9
-                                       assert ppropdefnode11 isa PPropdef
-                                       var listnode12 = nodearraylist11 
+                                       assert ppropdefnode11 isa nullable PPropdef
+                                       var listnode12 = nodearraylist11
                                        assert listnode12 isa Array[Object]
                                        if ppropdefnode11 != null then
                                                listnode13.add(ppropdefnode11)
                                        end
-                                       if listnode12 != null then
+#                                      if listnode12 != null then
                                                if listnode13.is_empty then
                                                        listnode13 = listnode12
                                                else
                                                        listnode13.append(listnode12)
                                                end
-                                       end
-                                       var pclassdefnode1 = new AClassdef.init_aclassdef(
+#                                      end
+                                       var pclassdefnode1: nullable AClassdef = new AClassdef.init_aclassdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -4610,11 +4609,11 @@ private class ReduceAction79
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tkwclassnode2 = nodearraylist1
-                                       assert tkwclassnode2 isa TKwclass
-                                       var pclasskindnode1 = new AConcreteClasskind.init_aconcreteclasskind(
+                                       assert tkwclassnode2 isa nullable TKwclass
+                                       var pclasskindnode1: nullable AConcreteClasskind = new AConcreteClasskind.init_aconcreteclasskind(
                                                tkwclassnode2
                                        )
                                        node_list = pclasskindnode1
@@ -4626,14 +4625,14 @@ private class ReduceAction80
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwabstractnode2 = nodearraylist1
-                                       assert tkwabstractnode2 isa TKwabstract
+                                       assert tkwabstractnode2 isa nullable TKwabstract
                                        var tkwclassnode3 = nodearraylist2
-                                       assert tkwclassnode3 isa TKwclass
-                                       var pclasskindnode1 = new AAbstractClasskind.init_aabstractclasskind(
+                                       assert tkwclassnode3 isa nullable TKwclass
+                                       var pclasskindnode1: nullable AAbstractClasskind = new AAbstractClasskind.init_aabstractclasskind(
                                                tkwabstractnode2,
                                                tkwclassnode3
                                        )
@@ -4646,11 +4645,11 @@ private class ReduceAction81
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tkwinterfacenode2 = nodearraylist1
-                                       assert tkwinterfacenode2 isa TKwinterface
-                                       var pclasskindnode1 = new AInterfaceClasskind.init_ainterfaceclasskind(
+                                       assert tkwinterfacenode2 isa nullable TKwinterface
+                                       var pclasskindnode1: nullable AInterfaceClasskind = new AInterfaceClasskind.init_ainterfaceclasskind(
                                                tkwinterfacenode2
                                        )
                                        node_list = pclasskindnode1
@@ -4662,11 +4661,11 @@ private class ReduceAction82
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tkwuniversalnode2 = nodearraylist1
-                                       assert tkwuniversalnode2 isa TKwuniversal
-                                       var pclasskindnode1 = new AUniversalClasskind.init_auniversalclasskind(
+                                       assert tkwuniversalnode2 isa nullable TKwuniversal
+                                       var pclasskindnode1: nullable AUniversalClasskind = new AUniversalClasskind.init_auniversalclasskind(
                                                tkwuniversalnode2
                                        )
                                        node_list = pclasskindnode1
@@ -4678,7 +4677,7 @@ private class ReduceAction83
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -4686,7 +4685,7 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
                                        var pformaldefnode1 = nodearraylist3
-                                       assert pformaldefnode1 isa PFormaldef
+                                       assert pformaldefnode1 isa nullable PFormaldef
                                        if pformaldefnode1 != null then
                                                listnode2.add(pformaldefnode1)
                                        end
@@ -4699,7 +4698,7 @@ private class ReduceAction84
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -4708,19 +4707,19 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
                                        var pformaldefnode1 = nodearraylist3
-                                       assert pformaldefnode1 isa PFormaldef
-                                       var listnode2 = nodearraylist4 
+                                       assert pformaldefnode1 isa nullable PFormaldef
+                                       var listnode2 = nodearraylist4
                                        assert listnode2 isa Array[Object]
                                        if pformaldefnode1 != null then
                                                listnode3.add(pformaldefnode1)
                                        end
-                                       if listnode2 != null then
+#                                      if listnode2 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode2
                                                else
                                                        listnode3.append(listnode2)
                                                end
-                                       end
+#                                      end
                                        node_list = listnode3
                                        p.push(p.go_to(7), node_list)
        end
@@ -4730,12 +4729,12 @@ private class ReduceAction85
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pformaldefnode1 = nodearraylist3
-                                       assert pformaldefnode1 isa PFormaldef
+                                       assert pformaldefnode1 isa nullable PFormaldef
                                        node_list = pformaldefnode1
                                        p.push(p.go_to(8), node_list)
        end
@@ -4745,11 +4744,11 @@ private class ReduceAction86
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tclassidnode2 = nodearraylist1
-                                       assert tclassidnode2 isa TClassid
-                                       var pformaldefnode1 = new AFormaldef.init_aformaldef(
+                                       assert tclassidnode2 isa nullable TClassid
+                                       var pformaldefnode1: nullable AFormaldef = new AFormaldef.init_aformaldef(
                                                tclassidnode2,
                                                null
                                        )
@@ -4762,14 +4761,14 @@ private class ReduceAction87
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tclassidnode2 = nodearraylist1
-                                       assert tclassidnode2 isa TClassid
+                                       assert tclassidnode2 isa nullable TClassid
                                        var ptypenode3 = nodearraylist2
-                                       assert ptypenode3 isa PType
-                                       var pformaldefnode1 = new AFormaldef.init_aformaldef(
+                                       assert ptypenode3 isa nullable PType
+                                       var pformaldefnode1: nullable AFormaldef = new AFormaldef.init_aformaldef(
                                                tclassidnode2,
                                                ptypenode3
                                        )
@@ -4782,16 +4781,16 @@ private class ReduceAction88
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwspecialnode2 = nodearraylist2
-                                       assert tkwspecialnode2 isa TKwspecial
+                                       assert tkwspecialnode2 isa nullable TKwspecial
                                        var ptypenode3 = nodearraylist4
-                                       assert ptypenode3 isa PType
-                                       var psuperclassnode1 = new ASuperclass.init_asuperclass(
+                                       assert ptypenode3 isa nullable PType
+                                       var psuperclassnode1: nullable ASuperclass = new ASuperclass.init_asuperclass(
                                                tkwspecialnode2,
                                                ptypenode3
                                        )
@@ -4804,11 +4803,11 @@ private class ReduceAction89
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var ppropdefnode1 = nodearraylist1
-                                       assert ppropdefnode1 isa PPropdef
+                                       assert ppropdefnode1 isa nullable PPropdef
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(11), node_list)
        end
@@ -4818,7 +4817,7 @@ private class ReduceAction90
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -4827,18 +4826,18 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
+                                       assert tkwmethnode5 isa nullable TKwmeth
                                        var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
+                                       assert pmethidnode6 isa nullable PMethid
                                        var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa PSignature
+                                       assert psignaturenode7 isa nullable PSignature
                                        var pexprnode8 = nodearraylist7
-                                       assert pexprnode8 isa PExpr
-                                       var ppropdefnode1 = new AConcreteMethPropdef.init_aconcretemethpropdef(
+                                       assert pexprnode8 isa nullable PExpr
+                                       var ppropdefnode1: nullable AConcreteMethPropdef = new AConcreteMethPropdef.init_aconcretemethpropdef(
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -4856,7 +4855,7 @@ private class ReduceAction91
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -4866,20 +4865,20 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
+                                       assert tkwmethnode5 isa nullable TKwmeth
                                        var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
+                                       assert pmethidnode6 isa nullable PMethid
                                        var psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa PSignature
+                                       assert psignaturenode7 isa nullable PSignature
                                        var pexprnode8 = nodearraylist8
-                                       assert pexprnode8 isa PExpr
-                                       var ppropdefnode1 = new AConcreteMethPropdef.init_aconcretemethpropdef(
+                                       assert pexprnode8 isa nullable PExpr
+                                       var ppropdefnode1: nullable AConcreteMethPropdef = new AConcreteMethPropdef.init_aconcretemethpropdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -4897,7 +4896,7 @@ private class ReduceAction92
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -4907,18 +4906,18 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
+                                       assert tkwmethnode5 isa nullable TKwmeth
                                        var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
+                                       assert pmethidnode6 isa nullable PMethid
                                        var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa PSignature
+                                       assert psignaturenode7 isa nullable PSignature
                                        var pexprnode8 = nodearraylist7
-                                       assert pexprnode8 isa PExpr
-                                       var ppropdefnode1 = new AConcreteMethPropdef.init_aconcretemethpropdef(
+                                       assert pexprnode8 isa nullable PExpr
+                                       var ppropdefnode1: nullable AConcreteMethPropdef = new AConcreteMethPropdef.init_aconcretemethpropdef(
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -4936,7 +4935,7 @@ private class ReduceAction93
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -4947,20 +4946,20 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
+                                       assert tkwmethnode5 isa nullable TKwmeth
                                        var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
+                                       assert pmethidnode6 isa nullable PMethid
                                        var psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa PSignature
+                                       assert psignaturenode7 isa nullable PSignature
                                        var pexprnode8 = nodearraylist8
-                                       assert pexprnode8 isa PExpr
-                                       var ppropdefnode1 = new AConcreteMethPropdef.init_aconcretemethpropdef(
+                                       assert pexprnode8 isa nullable PExpr
+                                       var ppropdefnode1: nullable AConcreteMethPropdef = new AConcreteMethPropdef.init_aconcretemethpropdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -4978,7 +4977,7 @@ private class ReduceAction94
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -4987,16 +4986,16 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
+                                       assert tkwmethnode5 isa nullable TKwmeth
                                        var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
+                                       assert pmethidnode6 isa nullable PMethid
                                        var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa PSignature
-                                       var ppropdefnode1 = new ADeferredMethPropdef.init_adeferredmethpropdef(
+                                       assert psignaturenode7 isa nullable PSignature
+                                       var ppropdefnode1: nullable ADeferredMethPropdef = new ADeferredMethPropdef.init_adeferredmethpropdef(
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -5013,7 +5012,7 @@ private class ReduceAction95
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -5023,18 +5022,18 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
+                                       assert tkwmethnode5 isa nullable TKwmeth
                                        var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
+                                       assert pmethidnode6 isa nullable PMethid
                                        var psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa PSignature
-                                       var ppropdefnode1 = new ADeferredMethPropdef.init_adeferredmethpropdef(
+                                       assert psignaturenode7 isa nullable PSignature
+                                       var ppropdefnode1: nullable ADeferredMethPropdef = new ADeferredMethPropdef.init_adeferredmethpropdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -5051,7 +5050,7 @@ private class ReduceAction96
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -5060,16 +5059,16 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
+                                       assert tkwmethnode5 isa nullable TKwmeth
                                        var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
+                                       assert pmethidnode6 isa nullable PMethid
                                        var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa PSignature
-                                       var ppropdefnode1 = new AInternMethPropdef.init_ainternmethpropdef(
+                                       assert psignaturenode7 isa nullable PSignature
+                                       var ppropdefnode1: nullable AInternMethPropdef = new AInternMethPropdef.init_ainternmethpropdef(
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -5086,7 +5085,7 @@ private class ReduceAction97
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -5096,18 +5095,18 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
+                                       assert tkwmethnode5 isa nullable TKwmeth
                                        var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
+                                       assert pmethidnode6 isa nullable PMethid
                                        var psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa PSignature
-                                       var ppropdefnode1 = new AInternMethPropdef.init_ainternmethpropdef(
+                                       assert psignaturenode7 isa nullable PSignature
+                                       var ppropdefnode1: nullable AInternMethPropdef = new AInternMethPropdef.init_ainternmethpropdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -5124,7 +5123,7 @@ private class ReduceAction98
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -5133,16 +5132,16 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
+                                       assert tkwmethnode5 isa nullable TKwmeth
                                        var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
+                                       assert pmethidnode6 isa nullable PMethid
                                        var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa PSignature
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
+                                       assert psignaturenode7 isa nullable PSignature
+                                       var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -5160,7 +5159,7 @@ private class ReduceAction99
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -5170,18 +5169,18 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
+                                       assert tkwmethnode5 isa nullable TKwmeth
                                        var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
+                                       assert pmethidnode6 isa nullable PMethid
                                        var psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa PSignature
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
+                                       assert psignaturenode7 isa nullable PSignature
+                                       var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -5199,7 +5198,7 @@ private class ReduceAction100
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -5209,18 +5208,18 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
+                                       assert tkwmethnode5 isa nullable TKwmeth
                                        var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
+                                       assert pmethidnode6 isa nullable PMethid
                                        var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa PSignature
+                                       assert psignaturenode7 isa nullable PSignature
                                        var tstringnode8 = nodearraylist8
-                                       assert tstringnode8 isa TString
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
+                                       assert tstringnode8 isa nullable TString
+                                       var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -5238,7 +5237,7 @@ private class ReduceAction101
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -5249,20 +5248,20 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
+                                       assert tkwmethnode5 isa nullable TKwmeth
                                        var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
+                                       assert pmethidnode6 isa nullable PMethid
                                        var psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa PSignature
+                                       assert psignaturenode7 isa nullable PSignature
                                        var tstringnode8 = nodearraylist9
-                                       assert tstringnode8 isa TString
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
+                                       assert tstringnode8 isa nullable TString
+                                       var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -5280,7 +5279,7 @@ private class ReduceAction102
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -5288,26 +5287,26 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwwritablenode8 = nodearraylist3
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist4
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwattrnode11 = nodearraylist5
-                                       assert tkwattrnode11 isa TKwattr
+                                       assert tkwattrnode11 isa nullable TKwattr
                                        var tattridnode13 = nodearraylist6
-                                       assert tattridnode13 isa TAttrid
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert tattridnode13 isa nullable TAttrid
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -5328,7 +5327,7 @@ private class ReduceAction103
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -5337,28 +5336,28 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist4
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwattrnode11 = nodearraylist6
-                                       assert tkwattrnode11 isa TKwattr
+                                       assert tkwattrnode11 isa nullable TKwattr
                                        var tattridnode13 = nodearraylist7
-                                       assert tattridnode13 isa TAttrid
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert tattridnode13 isa nullable TAttrid
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -5379,27 +5378,27 @@ private class ReduceAction104
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
                                                tkwreadablenode5
                                        )
                                        var pvisibilitynode8 = nodearraylist3
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwattrnode9 = nodearraylist4
-                                       assert tkwattrnode9 isa TKwattr
+                                       assert tkwattrnode9 isa nullable TKwattr
                                        var tattridnode11 = nodearraylist5
-                                       assert tattridnode11 isa TAttrid
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert tattridnode11 isa nullable TAttrid
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                null,
@@ -5420,7 +5419,7 @@ private class ReduceAction105
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -5429,28 +5428,28 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwwritablenode8 = nodearraylist4
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwattrnode11 = nodearraylist6
-                                       assert tkwattrnode11 isa TKwattr
+                                       assert tkwattrnode11 isa nullable TKwattr
                                        var tattridnode13 = nodearraylist7
-                                       assert tattridnode13 isa TAttrid
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert tattridnode13 isa nullable TAttrid
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -5471,7 +5470,7 @@ private class ReduceAction106
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -5481,30 +5480,30 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist5
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwattrnode11 = nodearraylist7
-                                       assert tkwattrnode11 isa TKwattr
+                                       assert tkwattrnode11 isa nullable TKwattr
                                        var tattridnode13 = nodearraylist8
-                                       assert tattridnode13 isa TAttrid
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert tattridnode13 isa nullable TAttrid
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -5525,7 +5524,7 @@ private class ReduceAction107
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -5533,22 +5532,22 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwattrnode9 = nodearraylist5
-                                       assert tkwattrnode9 isa TKwattr
+                                       assert tkwattrnode9 isa nullable TKwattr
                                        var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa TAttrid
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert tattridnode11 isa nullable TAttrid
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                null,
@@ -5569,27 +5568,27 @@ private class ReduceAction108
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwwritablenode6 = nodearraylist2
-                                       assert tkwwritablenode6 isa TKwwritable
-                                       var pablenode4 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode6 isa nullable TKwwritable
+                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
                                                tkwwritablenode6
                                        )
                                        var pvisibilitynode8 = nodearraylist3
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwattrnode9 = nodearraylist4
-                                       assert tkwattrnode9 isa TKwattr
+                                       assert tkwattrnode9 isa nullable TKwattr
                                        var tattridnode11 = nodearraylist5
-                                       assert tattridnode11 isa TAttrid
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert tattridnode11 isa nullable TAttrid
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pablenode4,
@@ -5610,7 +5609,7 @@ private class ReduceAction109
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -5618,22 +5617,22 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa TKwredef
+                                       assert tkwredefnode5 isa nullable TKwredef
                                        var tkwwritablenode6 = nodearraylist3
-                                       assert tkwwritablenode6 isa TKwwritable
-                                       var pablenode4 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode6 isa nullable TKwwritable
+                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                tkwredefnode5,
                                                tkwwritablenode6
                                        )
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwattrnode9 = nodearraylist5
-                                       assert tkwattrnode9 isa TKwattr
+                                       assert tkwattrnode9 isa nullable TKwattr
                                        var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa TAttrid
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert tattridnode11 isa nullable TAttrid
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pablenode4,
@@ -5654,20 +5653,20 @@ private class ReduceAction110
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var pvisibilitynode6 = nodearraylist2
-                                       assert pvisibilitynode6 isa PVisibility
+                                       assert pvisibilitynode6 isa nullable PVisibility
                                        var tkwattrnode7 = nodearraylist3
-                                       assert tkwattrnode7 isa TKwattr
+                                       assert tkwattrnode7 isa nullable TKwattr
                                        var tattridnode9 = nodearraylist4
-                                       assert tattridnode9 isa TAttrid
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert tattridnode9 isa nullable TAttrid
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                null,
@@ -5688,7 +5687,7 @@ private class ReduceAction111
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -5697,28 +5696,28 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwwritablenode8 = nodearraylist3
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
                                                tkwwritablenode8
                                        )
                                        var tkwredefnode9 = nodearraylist4
-                                       assert tkwredefnode9 isa TKwredef
+                                       assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwattrnode11 = nodearraylist6
-                                       assert tkwattrnode11 isa TKwattr
+                                       assert tkwattrnode11 isa nullable TKwattr
                                        var tattridnode13 = nodearraylist7
-                                       assert tattridnode13 isa TAttrid
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert tattridnode13 isa nullable TAttrid
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -5739,7 +5738,7 @@ private class ReduceAction112
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -5749,30 +5748,30 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist4
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
                                        var tkwredefnode9 = nodearraylist5
-                                       assert tkwredefnode9 isa TKwredef
+                                       assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwattrnode11 = nodearraylist7
-                                       assert tkwattrnode11 isa TKwattr
+                                       assert tkwattrnode11 isa nullable TKwattr
                                        var tattridnode13 = nodearraylist8
-                                       assert tattridnode13 isa TAttrid
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert tattridnode13 isa nullable TAttrid
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -5793,7 +5792,7 @@ private class ReduceAction113
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -5801,22 +5800,22 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwattrnode9 = nodearraylist5
-                                       assert tkwattrnode9 isa TKwattr
+                                       assert tkwattrnode9 isa nullable TKwattr
                                        var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa TAttrid
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert tattridnode11 isa nullable TAttrid
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                null,
@@ -5837,7 +5836,7 @@ private class ReduceAction114
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -5847,30 +5846,30 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwwritablenode8 = nodearraylist4
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
                                                tkwwritablenode8
                                        )
                                        var tkwredefnode9 = nodearraylist5
-                                       assert tkwredefnode9 isa TKwredef
+                                       assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwattrnode11 = nodearraylist7
-                                       assert tkwattrnode11 isa TKwattr
+                                       assert tkwattrnode11 isa nullable TKwattr
                                        var tattridnode13 = nodearraylist8
-                                       assert tattridnode13 isa TAttrid
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert tattridnode13 isa nullable TAttrid
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -5891,7 +5890,7 @@ private class ReduceAction115
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -5902,32 +5901,32 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist5
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
                                        var tkwredefnode9 = nodearraylist6
-                                       assert tkwredefnode9 isa TKwredef
+                                       assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist7
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwattrnode11 = nodearraylist8
-                                       assert tkwattrnode11 isa TKwattr
+                                       assert tkwattrnode11 isa nullable TKwattr
                                        var tattridnode13 = nodearraylist9
-                                       assert tattridnode13 isa TAttrid
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert tattridnode13 isa nullable TAttrid
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -5948,7 +5947,7 @@ private class ReduceAction116
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -5957,24 +5956,24 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist5
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwattrnode9 = nodearraylist6
-                                       assert tkwattrnode9 isa TKwattr
+                                       assert tkwattrnode9 isa nullable TKwattr
                                        var tattridnode11 = nodearraylist7
-                                       assert tattridnode11 isa TAttrid
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert tattridnode11 isa nullable TAttrid
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                null,
@@ -5995,7 +5994,7 @@ private class ReduceAction117
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -6003,22 +6002,22 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwwritablenode6 = nodearraylist2
-                                       assert tkwwritablenode6 isa TKwwritable
-                                       var pablenode4 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode6 isa nullable TKwwritable
+                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
                                                tkwwritablenode6
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwattrnode9 = nodearraylist5
-                                       assert tkwattrnode9 isa TKwattr
+                                       assert tkwattrnode9 isa nullable TKwattr
                                        var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa TAttrid
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert tattridnode11 isa nullable TAttrid
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pablenode4,
@@ -6039,7 +6038,7 @@ private class ReduceAction118
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -6048,24 +6047,24 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa TKwredef
+                                       assert tkwredefnode5 isa nullable TKwredef
                                        var tkwwritablenode6 = nodearraylist3
-                                       assert tkwwritablenode6 isa TKwwritable
-                                       var pablenode4 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode6 isa nullable TKwwritable
+                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                tkwredefnode5,
                                                tkwwritablenode6
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist5
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwattrnode9 = nodearraylist6
-                                       assert tkwattrnode9 isa TKwattr
+                                       assert tkwattrnode9 isa nullable TKwattr
                                        var tattridnode11 = nodearraylist7
-                                       assert tattridnode11 isa TAttrid
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert tattridnode11 isa nullable TAttrid
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pablenode4,
@@ -6086,23 +6085,23 @@ private class ReduceAction119
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa TKwredef
+                                       assert tkwredefnode5 isa nullable TKwredef
                                        var pvisibilitynode6 = nodearraylist3
-                                       assert pvisibilitynode6 isa PVisibility
+                                       assert pvisibilitynode6 isa nullable PVisibility
                                        var tkwattrnode7 = nodearraylist4
-                                       assert tkwattrnode7 isa TKwattr
+                                       assert tkwattrnode7 isa nullable TKwattr
                                        var tattridnode9 = nodearraylist5
-                                       assert tattridnode9 isa TAttrid
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert tattridnode9 isa nullable TAttrid
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                null,
@@ -6123,7 +6122,7 @@ private class ReduceAction120
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -6132,28 +6131,28 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwwritablenode8 = nodearraylist3
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist4
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwattrnode11 = nodearraylist5
-                                       assert tkwattrnode11 isa TKwattr
+                                       assert tkwattrnode11 isa nullable TKwattr
                                        var tattridnode13 = nodearraylist6
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var ptypenode14 = nodearraylist7
-                                       assert ptypenode14 isa PType
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert ptypenode14 isa nullable PType
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -6174,7 +6173,7 @@ private class ReduceAction121
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -6184,30 +6183,30 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist4
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwattrnode11 = nodearraylist6
-                                       assert tkwattrnode11 isa TKwattr
+                                       assert tkwattrnode11 isa nullable TKwattr
                                        var tattridnode13 = nodearraylist7
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var ptypenode14 = nodearraylist8
-                                       assert ptypenode14 isa PType
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert ptypenode14 isa nullable PType
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -6228,7 +6227,7 @@ private class ReduceAction122
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -6236,22 +6235,22 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
                                                tkwreadablenode5
                                        )
                                        var pvisibilitynode8 = nodearraylist3
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwattrnode9 = nodearraylist4
-                                       assert tkwattrnode9 isa TKwattr
+                                       assert tkwattrnode9 isa nullable TKwattr
                                        var tattridnode11 = nodearraylist5
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var ptypenode12 = nodearraylist6
-                                       assert ptypenode12 isa PType
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert ptypenode12 isa nullable PType
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                null,
@@ -6272,7 +6271,7 @@ private class ReduceAction123
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -6282,30 +6281,30 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwwritablenode8 = nodearraylist4
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwattrnode11 = nodearraylist6
-                                       assert tkwattrnode11 isa TKwattr
+                                       assert tkwattrnode11 isa nullable TKwattr
                                        var tattridnode13 = nodearraylist7
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var ptypenode14 = nodearraylist8
-                                       assert ptypenode14 isa PType
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert ptypenode14 isa nullable PType
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -6326,7 +6325,7 @@ private class ReduceAction124
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -6337,32 +6336,32 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist5
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwattrnode11 = nodearraylist7
-                                       assert tkwattrnode11 isa TKwattr
+                                       assert tkwattrnode11 isa nullable TKwattr
                                        var tattridnode13 = nodearraylist8
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var ptypenode14 = nodearraylist9
-                                       assert ptypenode14 isa PType
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert ptypenode14 isa nullable PType
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -6383,7 +6382,7 @@ private class ReduceAction125
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -6392,24 +6391,24 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwattrnode9 = nodearraylist5
-                                       assert tkwattrnode9 isa TKwattr
+                                       assert tkwattrnode9 isa nullable TKwattr
                                        var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var ptypenode12 = nodearraylist7
-                                       assert ptypenode12 isa PType
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert ptypenode12 isa nullable PType
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                null,
@@ -6430,7 +6429,7 @@ private class ReduceAction126
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -6438,22 +6437,22 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwwritablenode6 = nodearraylist2
-                                       assert tkwwritablenode6 isa TKwwritable
-                                       var pablenode4 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode6 isa nullable TKwwritable
+                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
                                                tkwwritablenode6
                                        )
                                        var pvisibilitynode8 = nodearraylist3
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwattrnode9 = nodearraylist4
-                                       assert tkwattrnode9 isa TKwattr
+                                       assert tkwattrnode9 isa nullable TKwattr
                                        var tattridnode11 = nodearraylist5
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var ptypenode12 = nodearraylist6
-                                       assert ptypenode12 isa PType
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert ptypenode12 isa nullable PType
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pablenode4,
@@ -6474,7 +6473,7 @@ private class ReduceAction127
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -6483,24 +6482,24 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa TKwredef
+                                       assert tkwredefnode5 isa nullable TKwredef
                                        var tkwwritablenode6 = nodearraylist3
-                                       assert tkwwritablenode6 isa TKwwritable
-                                       var pablenode4 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode6 isa nullable TKwwritable
+                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                tkwredefnode5,
                                                tkwwritablenode6
                                        )
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwattrnode9 = nodearraylist5
-                                       assert tkwattrnode9 isa TKwattr
+                                       assert tkwattrnode9 isa nullable TKwattr
                                        var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var ptypenode12 = nodearraylist7
-                                       assert ptypenode12 isa PType
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert ptypenode12 isa nullable PType
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pablenode4,
@@ -6521,23 +6520,23 @@ private class ReduceAction128
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var pvisibilitynode6 = nodearraylist2
-                                       assert pvisibilitynode6 isa PVisibility
+                                       assert pvisibilitynode6 isa nullable PVisibility
                                        var tkwattrnode7 = nodearraylist3
-                                       assert tkwattrnode7 isa TKwattr
+                                       assert tkwattrnode7 isa nullable TKwattr
                                        var tattridnode9 = nodearraylist4
-                                       assert tattridnode9 isa TAttrid
+                                       assert tattridnode9 isa nullable TAttrid
                                        var ptypenode10 = nodearraylist5
-                                       assert ptypenode10 isa PType
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert ptypenode10 isa nullable PType
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                null,
@@ -6558,7 +6557,7 @@ private class ReduceAction129
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -6568,30 +6567,30 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwwritablenode8 = nodearraylist3
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
                                                tkwwritablenode8
                                        )
                                        var tkwredefnode9 = nodearraylist4
-                                       assert tkwredefnode9 isa TKwredef
+                                       assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwattrnode11 = nodearraylist6
-                                       assert tkwattrnode11 isa TKwattr
+                                       assert tkwattrnode11 isa nullable TKwattr
                                        var tattridnode13 = nodearraylist7
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var ptypenode14 = nodearraylist8
-                                       assert ptypenode14 isa PType
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert ptypenode14 isa nullable PType
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -6612,7 +6611,7 @@ private class ReduceAction130
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -6623,32 +6622,32 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist4
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
                                        var tkwredefnode9 = nodearraylist5
-                                       assert tkwredefnode9 isa TKwredef
+                                       assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwattrnode11 = nodearraylist7
-                                       assert tkwattrnode11 isa TKwattr
+                                       assert tkwattrnode11 isa nullable TKwattr
                                        var tattridnode13 = nodearraylist8
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var ptypenode14 = nodearraylist9
-                                       assert ptypenode14 isa PType
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert ptypenode14 isa nullable PType
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -6669,7 +6668,7 @@ private class ReduceAction131
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -6678,24 +6677,24 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwattrnode9 = nodearraylist5
-                                       assert tkwattrnode9 isa TKwattr
+                                       assert tkwattrnode9 isa nullable TKwattr
                                        var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var ptypenode12 = nodearraylist7
-                                       assert ptypenode12 isa PType
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert ptypenode12 isa nullable PType
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                null,
@@ -6716,7 +6715,7 @@ private class ReduceAction132
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -6727,32 +6726,32 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwwritablenode8 = nodearraylist4
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
                                                tkwwritablenode8
                                        )
                                        var tkwredefnode9 = nodearraylist5
-                                       assert tkwredefnode9 isa TKwredef
+                                       assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwattrnode11 = nodearraylist7
-                                       assert tkwattrnode11 isa TKwattr
+                                       assert tkwattrnode11 isa nullable TKwattr
                                        var tattridnode13 = nodearraylist8
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var ptypenode14 = nodearraylist9
-                                       assert ptypenode14 isa PType
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert ptypenode14 isa nullable PType
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -6773,7 +6772,7 @@ private class ReduceAction133
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
@@ -6785,34 +6784,34 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist5
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
                                        var tkwredefnode9 = nodearraylist6
-                                       assert tkwredefnode9 isa TKwredef
+                                       assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist7
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwattrnode11 = nodearraylist8
-                                       assert tkwattrnode11 isa TKwattr
+                                       assert tkwattrnode11 isa nullable TKwattr
                                        var tattridnode13 = nodearraylist9
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var ptypenode14 = nodearraylist10
-                                       assert ptypenode14 isa PType
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert ptypenode14 isa nullable PType
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -6833,7 +6832,7 @@ private class ReduceAction134
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -6843,26 +6842,26 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist5
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwattrnode9 = nodearraylist6
-                                       assert tkwattrnode9 isa TKwattr
+                                       assert tkwattrnode9 isa nullable TKwattr
                                        var tattridnode11 = nodearraylist7
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var ptypenode12 = nodearraylist8
-                                       assert ptypenode12 isa PType
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert ptypenode12 isa nullable PType
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                null,
@@ -6883,7 +6882,7 @@ private class ReduceAction135
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -6892,24 +6891,24 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwwritablenode6 = nodearraylist2
-                                       assert tkwwritablenode6 isa TKwwritable
-                                       var pablenode4 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode6 isa nullable TKwwritable
+                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
                                                tkwwritablenode6
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwattrnode9 = nodearraylist5
-                                       assert tkwattrnode9 isa TKwattr
+                                       assert tkwattrnode9 isa nullable TKwattr
                                        var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var ptypenode12 = nodearraylist7
-                                       assert ptypenode12 isa PType
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert ptypenode12 isa nullable PType
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pablenode4,
@@ -6930,7 +6929,7 @@ private class ReduceAction136
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -6940,26 +6939,26 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa TKwredef
+                                       assert tkwredefnode5 isa nullable TKwredef
                                        var tkwwritablenode6 = nodearraylist3
-                                       assert tkwwritablenode6 isa TKwwritable
-                                       var pablenode4 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode6 isa nullable TKwwritable
+                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                tkwredefnode5,
                                                tkwwritablenode6
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist5
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwattrnode9 = nodearraylist6
-                                       assert tkwattrnode9 isa TKwattr
+                                       assert tkwattrnode9 isa nullable TKwattr
                                        var tattridnode11 = nodearraylist7
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var ptypenode12 = nodearraylist8
-                                       assert ptypenode12 isa PType
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert ptypenode12 isa nullable PType
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pablenode4,
@@ -6980,7 +6979,7 @@ private class ReduceAction137
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -6988,18 +6987,18 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa TKwredef
+                                       assert tkwredefnode5 isa nullable TKwredef
                                        var pvisibilitynode6 = nodearraylist3
-                                       assert pvisibilitynode6 isa PVisibility
+                                       assert pvisibilitynode6 isa nullable PVisibility
                                        var tkwattrnode7 = nodearraylist4
-                                       assert tkwattrnode7 isa TKwattr
+                                       assert tkwattrnode7 isa nullable TKwattr
                                        var tattridnode9 = nodearraylist5
-                                       assert tattridnode9 isa TAttrid
+                                       assert tattridnode9 isa nullable TAttrid
                                        var ptypenode10 = nodearraylist6
-                                       assert ptypenode10 isa PType
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert ptypenode10 isa nullable PType
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                null,
@@ -7020,7 +7019,7 @@ private class ReduceAction138
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -7031,28 +7030,28 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwwritablenode8 = nodearraylist3
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist4
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwattrnode11 = nodearraylist5
-                                       assert tkwattrnode11 isa TKwattr
+                                       assert tkwattrnode11 isa nullable TKwattr
                                        var tattridnode13 = nodearraylist6
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var pexprnode15 = nodearraylist9
-                                       assert pexprnode15 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode15 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -7073,7 +7072,7 @@ private class ReduceAction139
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
@@ -7085,30 +7084,30 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist4
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwattrnode11 = nodearraylist6
-                                       assert tkwattrnode11 isa TKwattr
+                                       assert tkwattrnode11 isa nullable TKwattr
                                        var tattridnode13 = nodearraylist7
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var pexprnode15 = nodearraylist10
-                                       assert pexprnode15 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode15 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -7129,7 +7128,7 @@ private class ReduceAction140
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -7139,22 +7138,22 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
                                                tkwreadablenode5
                                        )
                                        var pvisibilitynode8 = nodearraylist3
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwattrnode9 = nodearraylist4
-                                       assert tkwattrnode9 isa TKwattr
+                                       assert tkwattrnode9 isa nullable TKwattr
                                        var tattridnode11 = nodearraylist5
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var pexprnode13 = nodearraylist8
-                                       assert pexprnode13 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode13 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                null,
@@ -7175,7 +7174,7 @@ private class ReduceAction141
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
@@ -7187,30 +7186,30 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwwritablenode8 = nodearraylist4
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwattrnode11 = nodearraylist6
-                                       assert tkwattrnode11 isa TKwattr
+                                       assert tkwattrnode11 isa nullable TKwattr
                                        var tattridnode13 = nodearraylist7
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var pexprnode15 = nodearraylist10
-                                       assert pexprnode15 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode15 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -7231,7 +7230,7 @@ private class ReduceAction142
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
@@ -7244,32 +7243,32 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist5
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwattrnode11 = nodearraylist7
-                                       assert tkwattrnode11 isa TKwattr
+                                       assert tkwattrnode11 isa nullable TKwattr
                                        var tattridnode13 = nodearraylist8
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var pexprnode15 = nodearraylist11
-                                       assert pexprnode15 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode15 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -7290,7 +7289,7 @@ private class ReduceAction143
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -7301,24 +7300,24 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwattrnode9 = nodearraylist5
-                                       assert tkwattrnode9 isa TKwattr
+                                       assert tkwattrnode9 isa nullable TKwattr
                                        var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var pexprnode13 = nodearraylist9
-                                       assert pexprnode13 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode13 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                null,
@@ -7339,7 +7338,7 @@ private class ReduceAction144
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -7349,22 +7348,22 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwwritablenode6 = nodearraylist2
-                                       assert tkwwritablenode6 isa TKwwritable
-                                       var pablenode4 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode6 isa nullable TKwwritable
+                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
                                                tkwwritablenode6
                                        )
                                        var pvisibilitynode8 = nodearraylist3
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwattrnode9 = nodearraylist4
-                                       assert tkwattrnode9 isa TKwattr
+                                       assert tkwattrnode9 isa nullable TKwattr
                                        var tattridnode11 = nodearraylist5
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var pexprnode13 = nodearraylist8
-                                       assert pexprnode13 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode13 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pablenode4,
@@ -7385,7 +7384,7 @@ private class ReduceAction145
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -7396,24 +7395,24 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa TKwredef
+                                       assert tkwredefnode5 isa nullable TKwredef
                                        var tkwwritablenode6 = nodearraylist3
-                                       assert tkwwritablenode6 isa TKwwritable
-                                       var pablenode4 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode6 isa nullable TKwwritable
+                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                tkwredefnode5,
                                                tkwwritablenode6
                                        )
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwattrnode9 = nodearraylist5
-                                       assert tkwattrnode9 isa TKwattr
+                                       assert tkwattrnode9 isa nullable TKwattr
                                        var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var pexprnode13 = nodearraylist9
-                                       assert pexprnode13 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode13 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pablenode4,
@@ -7434,7 +7433,7 @@ private class ReduceAction146
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -7443,16 +7442,16 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var pvisibilitynode6 = nodearraylist2
-                                       assert pvisibilitynode6 isa PVisibility
+                                       assert pvisibilitynode6 isa nullable PVisibility
                                        var tkwattrnode7 = nodearraylist3
-                                       assert tkwattrnode7 isa TKwattr
+                                       assert tkwattrnode7 isa nullable TKwattr
                                        var tattridnode9 = nodearraylist4
-                                       assert tattridnode9 isa TAttrid
+                                       assert tattridnode9 isa nullable TAttrid
                                        var pexprnode11 = nodearraylist7
-                                       assert pexprnode11 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode11 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                null,
@@ -7473,7 +7472,7 @@ private class ReduceAction147
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
@@ -7485,30 +7484,30 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwwritablenode8 = nodearraylist3
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
                                                tkwwritablenode8
                                        )
                                        var tkwredefnode9 = nodearraylist4
-                                       assert tkwredefnode9 isa TKwredef
+                                       assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwattrnode11 = nodearraylist6
-                                       assert tkwattrnode11 isa TKwattr
+                                       assert tkwattrnode11 isa nullable TKwattr
                                        var tattridnode13 = nodearraylist7
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var pexprnode15 = nodearraylist10
-                                       assert pexprnode15 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode15 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -7529,7 +7528,7 @@ private class ReduceAction148
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
@@ -7542,32 +7541,32 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist4
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
                                        var tkwredefnode9 = nodearraylist5
-                                       assert tkwredefnode9 isa TKwredef
+                                       assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwattrnode11 = nodearraylist7
-                                       assert tkwattrnode11 isa TKwattr
+                                       assert tkwattrnode11 isa nullable TKwattr
                                        var tattridnode13 = nodearraylist8
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var pexprnode15 = nodearraylist11
-                                       assert pexprnode15 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode15 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -7588,7 +7587,7 @@ private class ReduceAction149
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -7599,24 +7598,24 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwattrnode9 = nodearraylist5
-                                       assert tkwattrnode9 isa TKwattr
+                                       assert tkwattrnode9 isa nullable TKwattr
                                        var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var pexprnode13 = nodearraylist9
-                                       assert pexprnode13 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode13 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                null,
@@ -7637,7 +7636,7 @@ private class ReduceAction150
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
@@ -7650,32 +7649,32 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwwritablenode8 = nodearraylist4
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
                                                tkwwritablenode8
                                        )
                                        var tkwredefnode9 = nodearraylist5
-                                       assert tkwredefnode9 isa TKwredef
+                                       assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwattrnode11 = nodearraylist7
-                                       assert tkwattrnode11 isa TKwattr
+                                       assert tkwattrnode11 isa nullable TKwattr
                                        var tattridnode13 = nodearraylist8
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var pexprnode15 = nodearraylist11
-                                       assert pexprnode15 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode15 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -7696,7 +7695,7 @@ private class ReduceAction151
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist12 = p.pop
                                        var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
@@ -7710,34 +7709,34 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist5
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
                                        var tkwredefnode9 = nodearraylist6
-                                       assert tkwredefnode9 isa TKwredef
+                                       assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist7
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwattrnode11 = nodearraylist8
-                                       assert tkwattrnode11 isa TKwattr
+                                       assert tkwattrnode11 isa nullable TKwattr
                                        var tattridnode13 = nodearraylist9
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var pexprnode15 = nodearraylist12
-                                       assert pexprnode15 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode15 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -7758,7 +7757,7 @@ private class ReduceAction152
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
@@ -7770,26 +7769,26 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist5
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwattrnode9 = nodearraylist6
-                                       assert tkwattrnode9 isa TKwattr
+                                       assert tkwattrnode9 isa nullable TKwattr
                                        var tattridnode11 = nodearraylist7
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var pexprnode13 = nodearraylist10
-                                       assert pexprnode13 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode13 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                null,
@@ -7810,7 +7809,7 @@ private class ReduceAction153
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -7821,24 +7820,24 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwwritablenode6 = nodearraylist2
-                                       assert tkwwritablenode6 isa TKwwritable
-                                       var pablenode4 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode6 isa nullable TKwwritable
+                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
                                                tkwwritablenode6
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwattrnode9 = nodearraylist5
-                                       assert tkwattrnode9 isa TKwattr
+                                       assert tkwattrnode9 isa nullable TKwattr
                                        var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var pexprnode13 = nodearraylist9
-                                       assert pexprnode13 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode13 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pablenode4,
@@ -7859,7 +7858,7 @@ private class ReduceAction154
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
@@ -7871,26 +7870,26 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa TKwredef
+                                       assert tkwredefnode5 isa nullable TKwredef
                                        var tkwwritablenode6 = nodearraylist3
-                                       assert tkwwritablenode6 isa TKwwritable
-                                       var pablenode4 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode6 isa nullable TKwwritable
+                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                tkwredefnode5,
                                                tkwwritablenode6
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist5
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwattrnode9 = nodearraylist6
-                                       assert tkwattrnode9 isa TKwattr
+                                       assert tkwattrnode9 isa nullable TKwattr
                                        var tattridnode11 = nodearraylist7
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var pexprnode13 = nodearraylist10
-                                       assert pexprnode13 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode13 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pablenode4,
@@ -7911,7 +7910,7 @@ private class ReduceAction155
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -7921,18 +7920,18 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa TKwredef
+                                       assert tkwredefnode5 isa nullable TKwredef
                                        var pvisibilitynode6 = nodearraylist3
-                                       assert pvisibilitynode6 isa PVisibility
+                                       assert pvisibilitynode6 isa nullable PVisibility
                                        var tkwattrnode7 = nodearraylist4
-                                       assert tkwattrnode7 isa TKwattr
+                                       assert tkwattrnode7 isa nullable TKwattr
                                        var tattridnode9 = nodearraylist5
-                                       assert tattridnode9 isa TAttrid
+                                       assert tattridnode9 isa nullable TAttrid
                                        var pexprnode11 = nodearraylist8
-                                       assert pexprnode11 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode11 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                null,
@@ -7953,7 +7952,7 @@ private class ReduceAction156
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
@@ -7965,30 +7964,30 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwwritablenode8 = nodearraylist3
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist4
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwattrnode11 = nodearraylist5
-                                       assert tkwattrnode11 isa TKwattr
+                                       assert tkwattrnode11 isa nullable TKwattr
                                        var tattridnode13 = nodearraylist6
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var ptypenode14 = nodearraylist7
-                                       assert ptypenode14 isa PType
+                                       assert ptypenode14 isa nullable PType
                                        var pexprnode15 = nodearraylist10
-                                       assert pexprnode15 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode15 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -8009,7 +8008,7 @@ private class ReduceAction157
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
@@ -8022,32 +8021,32 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist4
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwattrnode11 = nodearraylist6
-                                       assert tkwattrnode11 isa TKwattr
+                                       assert tkwattrnode11 isa nullable TKwattr
                                        var tattridnode13 = nodearraylist7
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var ptypenode14 = nodearraylist8
-                                       assert ptypenode14 isa PType
+                                       assert ptypenode14 isa nullable PType
                                        var pexprnode15 = nodearraylist11
-                                       assert pexprnode15 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode15 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -8068,7 +8067,7 @@ private class ReduceAction158
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -8079,24 +8078,24 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
                                                tkwreadablenode5
                                        )
                                        var pvisibilitynode8 = nodearraylist3
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwattrnode9 = nodearraylist4
-                                       assert tkwattrnode9 isa TKwattr
+                                       assert tkwattrnode9 isa nullable TKwattr
                                        var tattridnode11 = nodearraylist5
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var ptypenode12 = nodearraylist6
-                                       assert ptypenode12 isa PType
+                                       assert ptypenode12 isa nullable PType
                                        var pexprnode13 = nodearraylist9
-                                       assert pexprnode13 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode13 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                null,
@@ -8117,7 +8116,7 @@ private class ReduceAction159
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
@@ -8130,32 +8129,32 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwwritablenode8 = nodearraylist4
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwattrnode11 = nodearraylist6
-                                       assert tkwattrnode11 isa TKwattr
+                                       assert tkwattrnode11 isa nullable TKwattr
                                        var tattridnode13 = nodearraylist7
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var ptypenode14 = nodearraylist8
-                                       assert ptypenode14 isa PType
+                                       assert ptypenode14 isa nullable PType
                                        var pexprnode15 = nodearraylist11
-                                       assert pexprnode15 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode15 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -8176,7 +8175,7 @@ private class ReduceAction160
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist12 = p.pop
                                        var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
@@ -8190,34 +8189,34 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist5
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwattrnode11 = nodearraylist7
-                                       assert tkwattrnode11 isa TKwattr
+                                       assert tkwattrnode11 isa nullable TKwattr
                                        var tattridnode13 = nodearraylist8
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var ptypenode14 = nodearraylist9
-                                       assert ptypenode14 isa PType
+                                       assert ptypenode14 isa nullable PType
                                        var pexprnode15 = nodearraylist12
-                                       assert pexprnode15 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode15 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -8238,7 +8237,7 @@ private class ReduceAction161
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
@@ -8250,26 +8249,26 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwattrnode9 = nodearraylist5
-                                       assert tkwattrnode9 isa TKwattr
+                                       assert tkwattrnode9 isa nullable TKwattr
                                        var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var ptypenode12 = nodearraylist7
-                                       assert ptypenode12 isa PType
+                                       assert ptypenode12 isa nullable PType
                                        var pexprnode13 = nodearraylist10
-                                       assert pexprnode13 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode13 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                null,
@@ -8290,7 +8289,7 @@ private class ReduceAction162
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -8301,24 +8300,24 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwwritablenode6 = nodearraylist2
-                                       assert tkwwritablenode6 isa TKwwritable
-                                       var pablenode4 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode6 isa nullable TKwwritable
+                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
                                                tkwwritablenode6
                                        )
                                        var pvisibilitynode8 = nodearraylist3
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwattrnode9 = nodearraylist4
-                                       assert tkwattrnode9 isa TKwattr
+                                       assert tkwattrnode9 isa nullable TKwattr
                                        var tattridnode11 = nodearraylist5
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var ptypenode12 = nodearraylist6
-                                       assert ptypenode12 isa PType
+                                       assert ptypenode12 isa nullable PType
                                        var pexprnode13 = nodearraylist9
-                                       assert pexprnode13 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode13 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pablenode4,
@@ -8339,7 +8338,7 @@ private class ReduceAction163
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
@@ -8351,26 +8350,26 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa TKwredef
+                                       assert tkwredefnode5 isa nullable TKwredef
                                        var tkwwritablenode6 = nodearraylist3
-                                       assert tkwwritablenode6 isa TKwwritable
-                                       var pablenode4 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode6 isa nullable TKwwritable
+                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                tkwredefnode5,
                                                tkwwritablenode6
                                        )
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwattrnode9 = nodearraylist5
-                                       assert tkwattrnode9 isa TKwattr
+                                       assert tkwattrnode9 isa nullable TKwattr
                                        var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var ptypenode12 = nodearraylist7
-                                       assert ptypenode12 isa PType
+                                       assert ptypenode12 isa nullable PType
                                        var pexprnode13 = nodearraylist10
-                                       assert pexprnode13 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode13 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pablenode4,
@@ -8391,7 +8390,7 @@ private class ReduceAction164
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -8401,18 +8400,18 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var pvisibilitynode6 = nodearraylist2
-                                       assert pvisibilitynode6 isa PVisibility
+                                       assert pvisibilitynode6 isa nullable PVisibility
                                        var tkwattrnode7 = nodearraylist3
-                                       assert tkwattrnode7 isa TKwattr
+                                       assert tkwattrnode7 isa nullable TKwattr
                                        var tattridnode9 = nodearraylist4
-                                       assert tattridnode9 isa TAttrid
+                                       assert tattridnode9 isa nullable TAttrid
                                        var ptypenode10 = nodearraylist5
-                                       assert ptypenode10 isa PType
+                                       assert ptypenode10 isa nullable PType
                                        var pexprnode11 = nodearraylist8
-                                       assert pexprnode11 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode11 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                null,
@@ -8433,7 +8432,7 @@ private class ReduceAction165
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
@@ -8446,32 +8445,32 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwwritablenode8 = nodearraylist3
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
                                                tkwwritablenode8
                                        )
                                        var tkwredefnode9 = nodearraylist4
-                                       assert tkwredefnode9 isa TKwredef
+                                       assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwattrnode11 = nodearraylist6
-                                       assert tkwattrnode11 isa TKwattr
+                                       assert tkwattrnode11 isa nullable TKwattr
                                        var tattridnode13 = nodearraylist7
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var ptypenode14 = nodearraylist8
-                                       assert ptypenode14 isa PType
+                                       assert ptypenode14 isa nullable PType
                                        var pexprnode15 = nodearraylist11
-                                       assert pexprnode15 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode15 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -8492,7 +8491,7 @@ private class ReduceAction166
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist12 = p.pop
                                        var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
@@ -8506,34 +8505,34 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist4
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
                                        var tkwredefnode9 = nodearraylist5
-                                       assert tkwredefnode9 isa TKwredef
+                                       assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwattrnode11 = nodearraylist7
-                                       assert tkwattrnode11 isa TKwattr
+                                       assert tkwattrnode11 isa nullable TKwattr
                                        var tattridnode13 = nodearraylist8
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var ptypenode14 = nodearraylist9
-                                       assert ptypenode14 isa PType
+                                       assert ptypenode14 isa nullable PType
                                        var pexprnode15 = nodearraylist12
-                                       assert pexprnode15 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode15 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -8554,7 +8553,7 @@ private class ReduceAction167
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
@@ -8566,26 +8565,26 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwattrnode9 = nodearraylist5
-                                       assert tkwattrnode9 isa TKwattr
+                                       assert tkwattrnode9 isa nullable TKwattr
                                        var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var ptypenode12 = nodearraylist7
-                                       assert ptypenode12 isa PType
+                                       assert ptypenode12 isa nullable PType
                                        var pexprnode13 = nodearraylist10
-                                       assert pexprnode13 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode13 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                null,
@@ -8606,7 +8605,7 @@ private class ReduceAction168
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist12 = p.pop
                                        var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
@@ -8620,34 +8619,34 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwwritablenode8 = nodearraylist4
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
                                                tkwwritablenode8
                                        )
                                        var tkwredefnode9 = nodearraylist5
-                                       assert tkwredefnode9 isa TKwredef
+                                       assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwattrnode11 = nodearraylist7
-                                       assert tkwattrnode11 isa TKwattr
+                                       assert tkwattrnode11 isa nullable TKwattr
                                        var tattridnode13 = nodearraylist8
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var ptypenode14 = nodearraylist9
-                                       assert ptypenode14 isa PType
+                                       assert ptypenode14 isa nullable PType
                                        var pexprnode15 = nodearraylist12
-                                       assert pexprnode15 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode15 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -8668,7 +8667,7 @@ private class ReduceAction169
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist13 = p.pop
                                        var nodearraylist12 = p.pop
                                        var nodearraylist11 = p.pop
@@ -8683,36 +8682,36 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist5
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
                                        var tkwredefnode9 = nodearraylist6
-                                       assert tkwredefnode9 isa TKwredef
+                                       assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist7
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwattrnode11 = nodearraylist8
-                                       assert tkwattrnode11 isa TKwattr
+                                       assert tkwattrnode11 isa nullable TKwattr
                                        var tattridnode13 = nodearraylist9
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var ptypenode14 = nodearraylist10
-                                       assert ptypenode14 isa PType
+                                       assert ptypenode14 isa nullable PType
                                        var pexprnode15 = nodearraylist13
-                                       assert pexprnode15 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode15 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -8733,7 +8732,7 @@ private class ReduceAction170
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
@@ -8746,28 +8745,28 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist5
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwattrnode9 = nodearraylist6
-                                       assert tkwattrnode9 isa TKwattr
+                                       assert tkwattrnode9 isa nullable TKwattr
                                        var tattridnode11 = nodearraylist7
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var ptypenode12 = nodearraylist8
-                                       assert ptypenode12 isa PType
+                                       assert ptypenode12 isa nullable PType
                                        var pexprnode13 = nodearraylist11
-                                       assert pexprnode13 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode13 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                null,
@@ -8788,7 +8787,7 @@ private class ReduceAction171
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
@@ -8800,26 +8799,26 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwwritablenode6 = nodearraylist2
-                                       assert tkwwritablenode6 isa TKwwritable
-                                       var pablenode4 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode6 isa nullable TKwwritable
+                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
                                                tkwwritablenode6
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwattrnode9 = nodearraylist5
-                                       assert tkwattrnode9 isa TKwattr
+                                       assert tkwattrnode9 isa nullable TKwattr
                                        var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var ptypenode12 = nodearraylist7
-                                       assert ptypenode12 isa PType
+                                       assert ptypenode12 isa nullable PType
                                        var pexprnode13 = nodearraylist10
-                                       assert pexprnode13 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode13 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pablenode4,
@@ -8840,7 +8839,7 @@ private class ReduceAction172
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
@@ -8853,28 +8852,28 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa TKwredef
+                                       assert tkwredefnode5 isa nullable TKwredef
                                        var tkwwritablenode6 = nodearraylist3
-                                       assert tkwwritablenode6 isa TKwwritable
-                                       var pablenode4 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode6 isa nullable TKwwritable
+                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                tkwredefnode5,
                                                tkwwritablenode6
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist5
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwattrnode9 = nodearraylist6
-                                       assert tkwattrnode9 isa TKwattr
+                                       assert tkwattrnode9 isa nullable TKwattr
                                        var tattridnode11 = nodearraylist7
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var ptypenode12 = nodearraylist8
-                                       assert ptypenode12 isa PType
+                                       assert ptypenode12 isa nullable PType
                                        var pexprnode13 = nodearraylist11
-                                       assert pexprnode13 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode13 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pablenode4,
@@ -8895,7 +8894,7 @@ private class ReduceAction173
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -8906,20 +8905,20 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa TKwredef
+                                       assert tkwredefnode5 isa nullable TKwredef
                                        var pvisibilitynode6 = nodearraylist3
-                                       assert pvisibilitynode6 isa PVisibility
+                                       assert pvisibilitynode6 isa nullable PVisibility
                                        var tkwattrnode7 = nodearraylist4
-                                       assert tkwattrnode7 isa TKwattr
+                                       assert tkwattrnode7 isa nullable TKwattr
                                        var tattridnode9 = nodearraylist5
-                                       assert tattridnode9 isa TAttrid
+                                       assert tattridnode9 isa nullable TAttrid
                                        var ptypenode10 = nodearraylist6
-                                       assert ptypenode10 isa PType
+                                       assert ptypenode10 isa nullable PType
                                        var pexprnode11 = nodearraylist9
-                                       assert pexprnode11 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode11 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                null,
@@ -8940,7 +8939,7 @@ private class ReduceAction174
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -8948,26 +8947,26 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwwritablenode8 = nodearraylist3
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist4
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwvarnode12 = nodearraylist5
-                                       assert tkwvarnode12 isa TKwvar
+                                       assert tkwvarnode12 isa nullable TKwvar
                                        var tattridnode13 = nodearraylist6
-                                       assert tattridnode13 isa TAttrid
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert tattridnode13 isa nullable TAttrid
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -8988,7 +8987,7 @@ private class ReduceAction175
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -8997,28 +8996,28 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist4
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwvarnode12 = nodearraylist6
-                                       assert tkwvarnode12 isa TKwvar
+                                       assert tkwvarnode12 isa nullable TKwvar
                                        var tattridnode13 = nodearraylist7
-                                       assert tattridnode13 isa TAttrid
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert tattridnode13 isa nullable TAttrid
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -9039,27 +9038,27 @@ private class ReduceAction176
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
                                                tkwreadablenode5
                                        )
                                        var pvisibilitynode8 = nodearraylist3
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwvarnode10 = nodearraylist4
-                                       assert tkwvarnode10 isa TKwvar
+                                       assert tkwvarnode10 isa nullable TKwvar
                                        var tattridnode11 = nodearraylist5
-                                       assert tattridnode11 isa TAttrid
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert tattridnode11 isa nullable TAttrid
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                null,
@@ -9080,7 +9079,7 @@ private class ReduceAction177
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -9089,28 +9088,28 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwwritablenode8 = nodearraylist4
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwvarnode12 = nodearraylist6
-                                       assert tkwvarnode12 isa TKwvar
+                                       assert tkwvarnode12 isa nullable TKwvar
                                        var tattridnode13 = nodearraylist7
-                                       assert tattridnode13 isa TAttrid
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert tattridnode13 isa nullable TAttrid
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -9131,7 +9130,7 @@ private class ReduceAction178
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -9141,30 +9140,30 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist5
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwvarnode12 = nodearraylist7
-                                       assert tkwvarnode12 isa TKwvar
+                                       assert tkwvarnode12 isa nullable TKwvar
                                        var tattridnode13 = nodearraylist8
-                                       assert tattridnode13 isa TAttrid
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert tattridnode13 isa nullable TAttrid
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -9185,7 +9184,7 @@ private class ReduceAction179
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -9193,22 +9192,22 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwvarnode10 = nodearraylist5
-                                       assert tkwvarnode10 isa TKwvar
+                                       assert tkwvarnode10 isa nullable TKwvar
                                        var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa TAttrid
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert tattridnode11 isa nullable TAttrid
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                null,
@@ -9229,27 +9228,27 @@ private class ReduceAction180
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwwritablenode6 = nodearraylist2
-                                       assert tkwwritablenode6 isa TKwwritable
-                                       var pablenode4 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode6 isa nullable TKwwritable
+                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
                                                tkwwritablenode6
                                        )
                                        var pvisibilitynode8 = nodearraylist3
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwvarnode10 = nodearraylist4
-                                       assert tkwvarnode10 isa TKwvar
+                                       assert tkwvarnode10 isa nullable TKwvar
                                        var tattridnode11 = nodearraylist5
-                                       assert tattridnode11 isa TAttrid
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert tattridnode11 isa nullable TAttrid
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pablenode4,
@@ -9270,7 +9269,7 @@ private class ReduceAction181
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -9278,22 +9277,22 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa TKwredef
+                                       assert tkwredefnode5 isa nullable TKwredef
                                        var tkwwritablenode6 = nodearraylist3
-                                       assert tkwwritablenode6 isa TKwwritable
-                                       var pablenode4 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode6 isa nullable TKwwritable
+                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                tkwredefnode5,
                                                tkwwritablenode6
                                        )
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwvarnode10 = nodearraylist5
-                                       assert tkwvarnode10 isa TKwvar
+                                       assert tkwvarnode10 isa nullable TKwvar
                                        var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa TAttrid
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert tattridnode11 isa nullable TAttrid
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pablenode4,
@@ -9314,20 +9313,20 @@ private class ReduceAction182
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var pvisibilitynode6 = nodearraylist2
-                                       assert pvisibilitynode6 isa PVisibility
+                                       assert pvisibilitynode6 isa nullable PVisibility
                                        var tkwvarnode8 = nodearraylist3
-                                       assert tkwvarnode8 isa TKwvar
+                                       assert tkwvarnode8 isa nullable TKwvar
                                        var tattridnode9 = nodearraylist4
-                                       assert tattridnode9 isa TAttrid
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert tattridnode9 isa nullable TAttrid
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                null,
@@ -9348,7 +9347,7 @@ private class ReduceAction183
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -9357,28 +9356,28 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwwritablenode8 = nodearraylist3
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
                                                tkwwritablenode8
                                        )
                                        var tkwredefnode9 = nodearraylist4
-                                       assert tkwredefnode9 isa TKwredef
+                                       assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwvarnode12 = nodearraylist6
-                                       assert tkwvarnode12 isa TKwvar
+                                       assert tkwvarnode12 isa nullable TKwvar
                                        var tattridnode13 = nodearraylist7
-                                       assert tattridnode13 isa TAttrid
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert tattridnode13 isa nullable TAttrid
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -9399,7 +9398,7 @@ private class ReduceAction184
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -9409,30 +9408,30 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist4
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
                                        var tkwredefnode9 = nodearraylist5
-                                       assert tkwredefnode9 isa TKwredef
+                                       assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwvarnode12 = nodearraylist7
-                                       assert tkwvarnode12 isa TKwvar
+                                       assert tkwvarnode12 isa nullable TKwvar
                                        var tattridnode13 = nodearraylist8
-                                       assert tattridnode13 isa TAttrid
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert tattridnode13 isa nullable TAttrid
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -9453,7 +9452,7 @@ private class ReduceAction185
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -9461,22 +9460,22 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwvarnode10 = nodearraylist5
-                                       assert tkwvarnode10 isa TKwvar
+                                       assert tkwvarnode10 isa nullable TKwvar
                                        var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa TAttrid
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert tattridnode11 isa nullable TAttrid
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                null,
@@ -9497,7 +9496,7 @@ private class ReduceAction186
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -9507,30 +9506,30 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwwritablenode8 = nodearraylist4
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
                                                tkwwritablenode8
                                        )
                                        var tkwredefnode9 = nodearraylist5
-                                       assert tkwredefnode9 isa TKwredef
+                                       assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwvarnode12 = nodearraylist7
-                                       assert tkwvarnode12 isa TKwvar
+                                       assert tkwvarnode12 isa nullable TKwvar
                                        var tattridnode13 = nodearraylist8
-                                       assert tattridnode13 isa TAttrid
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert tattridnode13 isa nullable TAttrid
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -9551,7 +9550,7 @@ private class ReduceAction187
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -9562,32 +9561,32 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist5
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
                                        var tkwredefnode9 = nodearraylist6
-                                       assert tkwredefnode9 isa TKwredef
+                                       assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist7
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwvarnode12 = nodearraylist8
-                                       assert tkwvarnode12 isa TKwvar
+                                       assert tkwvarnode12 isa nullable TKwvar
                                        var tattridnode13 = nodearraylist9
-                                       assert tattridnode13 isa TAttrid
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert tattridnode13 isa nullable TAttrid
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -9608,7 +9607,7 @@ private class ReduceAction188
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -9617,24 +9616,24 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist5
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwvarnode10 = nodearraylist6
-                                       assert tkwvarnode10 isa TKwvar
+                                       assert tkwvarnode10 isa nullable TKwvar
                                        var tattridnode11 = nodearraylist7
-                                       assert tattridnode11 isa TAttrid
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert tattridnode11 isa nullable TAttrid
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                null,
@@ -9655,7 +9654,7 @@ private class ReduceAction189
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -9663,22 +9662,22 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwwritablenode6 = nodearraylist2
-                                       assert tkwwritablenode6 isa TKwwritable
-                                       var pablenode4 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode6 isa nullable TKwwritable
+                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
                                                tkwwritablenode6
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwvarnode10 = nodearraylist5
-                                       assert tkwvarnode10 isa TKwvar
+                                       assert tkwvarnode10 isa nullable TKwvar
                                        var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa TAttrid
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert tattridnode11 isa nullable TAttrid
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pablenode4,
@@ -9699,7 +9698,7 @@ private class ReduceAction190
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -9708,24 +9707,24 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa TKwredef
+                                       assert tkwredefnode5 isa nullable TKwredef
                                        var tkwwritablenode6 = nodearraylist3
-                                       assert tkwwritablenode6 isa TKwwritable
-                                       var pablenode4 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode6 isa nullable TKwwritable
+                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                tkwredefnode5,
                                                tkwwritablenode6
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist5
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwvarnode10 = nodearraylist6
-                                       assert tkwvarnode10 isa TKwvar
+                                       assert tkwvarnode10 isa nullable TKwvar
                                        var tattridnode11 = nodearraylist7
-                                       assert tattridnode11 isa TAttrid
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert tattridnode11 isa nullable TAttrid
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pablenode4,
@@ -9746,23 +9745,23 @@ private class ReduceAction191
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa TKwredef
+                                       assert tkwredefnode5 isa nullable TKwredef
                                        var pvisibilitynode6 = nodearraylist3
-                                       assert pvisibilitynode6 isa PVisibility
+                                       assert pvisibilitynode6 isa nullable PVisibility
                                        var tkwvarnode8 = nodearraylist4
-                                       assert tkwvarnode8 isa TKwvar
+                                       assert tkwvarnode8 isa nullable TKwvar
                                        var tattridnode9 = nodearraylist5
-                                       assert tattridnode9 isa TAttrid
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert tattridnode9 isa nullable TAttrid
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                null,
@@ -9783,7 +9782,7 @@ private class ReduceAction192
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -9792,28 +9791,28 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwwritablenode8 = nodearraylist3
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist4
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwvarnode12 = nodearraylist5
-                                       assert tkwvarnode12 isa TKwvar
+                                       assert tkwvarnode12 isa nullable TKwvar
                                        var tattridnode13 = nodearraylist6
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var ptypenode14 = nodearraylist7
-                                       assert ptypenode14 isa PType
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert ptypenode14 isa nullable PType
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -9834,7 +9833,7 @@ private class ReduceAction193
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -9844,30 +9843,30 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist4
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwvarnode12 = nodearraylist6
-                                       assert tkwvarnode12 isa TKwvar
+                                       assert tkwvarnode12 isa nullable TKwvar
                                        var tattridnode13 = nodearraylist7
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var ptypenode14 = nodearraylist8
-                                       assert ptypenode14 isa PType
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert ptypenode14 isa nullable PType
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -9888,7 +9887,7 @@ private class ReduceAction194
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -9896,22 +9895,22 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
                                                tkwreadablenode5
                                        )
                                        var pvisibilitynode8 = nodearraylist3
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwvarnode10 = nodearraylist4
-                                       assert tkwvarnode10 isa TKwvar
+                                       assert tkwvarnode10 isa nullable TKwvar
                                        var tattridnode11 = nodearraylist5
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var ptypenode12 = nodearraylist6
-                                       assert ptypenode12 isa PType
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert ptypenode12 isa nullable PType
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                null,
@@ -9932,7 +9931,7 @@ private class ReduceAction195
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -9942,30 +9941,30 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwwritablenode8 = nodearraylist4
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwvarnode12 = nodearraylist6
-                                       assert tkwvarnode12 isa TKwvar
+                                       assert tkwvarnode12 isa nullable TKwvar
                                        var tattridnode13 = nodearraylist7
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var ptypenode14 = nodearraylist8
-                                       assert ptypenode14 isa PType
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert ptypenode14 isa nullable PType
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -9986,7 +9985,7 @@ private class ReduceAction196
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -9997,32 +9996,32 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist5
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwvarnode12 = nodearraylist7
-                                       assert tkwvarnode12 isa TKwvar
+                                       assert tkwvarnode12 isa nullable TKwvar
                                        var tattridnode13 = nodearraylist8
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var ptypenode14 = nodearraylist9
-                                       assert ptypenode14 isa PType
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert ptypenode14 isa nullable PType
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -10043,7 +10042,7 @@ private class ReduceAction197
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -10052,24 +10051,24 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwvarnode10 = nodearraylist5
-                                       assert tkwvarnode10 isa TKwvar
+                                       assert tkwvarnode10 isa nullable TKwvar
                                        var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var ptypenode12 = nodearraylist7
-                                       assert ptypenode12 isa PType
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert ptypenode12 isa nullable PType
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                null,
@@ -10090,7 +10089,7 @@ private class ReduceAction198
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -10098,22 +10097,22 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwwritablenode6 = nodearraylist2
-                                       assert tkwwritablenode6 isa TKwwritable
-                                       var pablenode4 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode6 isa nullable TKwwritable
+                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
                                                tkwwritablenode6
                                        )
                                        var pvisibilitynode8 = nodearraylist3
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwvarnode10 = nodearraylist4
-                                       assert tkwvarnode10 isa TKwvar
+                                       assert tkwvarnode10 isa nullable TKwvar
                                        var tattridnode11 = nodearraylist5
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var ptypenode12 = nodearraylist6
-                                       assert ptypenode12 isa PType
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert ptypenode12 isa nullable PType
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pablenode4,
@@ -10134,7 +10133,7 @@ private class ReduceAction199
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -10143,24 +10142,24 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa TKwredef
+                                       assert tkwredefnode5 isa nullable TKwredef
                                        var tkwwritablenode6 = nodearraylist3
-                                       assert tkwwritablenode6 isa TKwwritable
-                                       var pablenode4 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode6 isa nullable TKwwritable
+                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                tkwredefnode5,
                                                tkwwritablenode6
                                        )
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwvarnode10 = nodearraylist5
-                                       assert tkwvarnode10 isa TKwvar
+                                       assert tkwvarnode10 isa nullable TKwvar
                                        var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var ptypenode12 = nodearraylist7
-                                       assert ptypenode12 isa PType
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert ptypenode12 isa nullable PType
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pablenode4,
@@ -10181,23 +10180,23 @@ private class ReduceAction200
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var pvisibilitynode6 = nodearraylist2
-                                       assert pvisibilitynode6 isa PVisibility
+                                       assert pvisibilitynode6 isa nullable PVisibility
                                        var tkwvarnode8 = nodearraylist3
-                                       assert tkwvarnode8 isa TKwvar
+                                       assert tkwvarnode8 isa nullable TKwvar
                                        var tattridnode9 = nodearraylist4
-                                       assert tattridnode9 isa TAttrid
+                                       assert tattridnode9 isa nullable TAttrid
                                        var ptypenode10 = nodearraylist5
-                                       assert ptypenode10 isa PType
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert ptypenode10 isa nullable PType
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                null,
@@ -10218,7 +10217,7 @@ private class ReduceAction201
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -10228,30 +10227,30 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwwritablenode8 = nodearraylist3
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
                                                tkwwritablenode8
                                        )
                                        var tkwredefnode9 = nodearraylist4
-                                       assert tkwredefnode9 isa TKwredef
+                                       assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwvarnode12 = nodearraylist6
-                                       assert tkwvarnode12 isa TKwvar
+                                       assert tkwvarnode12 isa nullable TKwvar
                                        var tattridnode13 = nodearraylist7
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var ptypenode14 = nodearraylist8
-                                       assert ptypenode14 isa PType
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert ptypenode14 isa nullable PType
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -10272,7 +10271,7 @@ private class ReduceAction202
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -10283,32 +10282,32 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist4
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
                                        var tkwredefnode9 = nodearraylist5
-                                       assert tkwredefnode9 isa TKwredef
+                                       assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwvarnode12 = nodearraylist7
-                                       assert tkwvarnode12 isa TKwvar
+                                       assert tkwvarnode12 isa nullable TKwvar
                                        var tattridnode13 = nodearraylist8
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var ptypenode14 = nodearraylist9
-                                       assert ptypenode14 isa PType
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert ptypenode14 isa nullable PType
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -10329,7 +10328,7 @@ private class ReduceAction203
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -10338,24 +10337,24 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwvarnode10 = nodearraylist5
-                                       assert tkwvarnode10 isa TKwvar
+                                       assert tkwvarnode10 isa nullable TKwvar
                                        var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var ptypenode12 = nodearraylist7
-                                       assert ptypenode12 isa PType
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert ptypenode12 isa nullable PType
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                null,
@@ -10376,7 +10375,7 @@ private class ReduceAction204
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -10387,32 +10386,32 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwwritablenode8 = nodearraylist4
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
                                                tkwwritablenode8
                                        )
                                        var tkwredefnode9 = nodearraylist5
-                                       assert tkwredefnode9 isa TKwredef
+                                       assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwvarnode12 = nodearraylist7
-                                       assert tkwvarnode12 isa TKwvar
+                                       assert tkwvarnode12 isa nullable TKwvar
                                        var tattridnode13 = nodearraylist8
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var ptypenode14 = nodearraylist9
-                                       assert ptypenode14 isa PType
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert ptypenode14 isa nullable PType
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -10433,7 +10432,7 @@ private class ReduceAction205
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
@@ -10445,34 +10444,34 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist5
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
                                        var tkwredefnode9 = nodearraylist6
-                                       assert tkwredefnode9 isa TKwredef
+                                       assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist7
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwvarnode12 = nodearraylist8
-                                       assert tkwvarnode12 isa TKwvar
+                                       assert tkwvarnode12 isa nullable TKwvar
                                        var tattridnode13 = nodearraylist9
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var ptypenode14 = nodearraylist10
-                                       assert ptypenode14 isa PType
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert ptypenode14 isa nullable PType
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -10493,7 +10492,7 @@ private class ReduceAction206
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -10503,26 +10502,26 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist5
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwvarnode10 = nodearraylist6
-                                       assert tkwvarnode10 isa TKwvar
+                                       assert tkwvarnode10 isa nullable TKwvar
                                        var tattridnode11 = nodearraylist7
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var ptypenode12 = nodearraylist8
-                                       assert ptypenode12 isa PType
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert ptypenode12 isa nullable PType
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                null,
@@ -10543,7 +10542,7 @@ private class ReduceAction207
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -10552,24 +10551,24 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwwritablenode6 = nodearraylist2
-                                       assert tkwwritablenode6 isa TKwwritable
-                                       var pablenode4 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode6 isa nullable TKwwritable
+                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
                                                tkwwritablenode6
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwvarnode10 = nodearraylist5
-                                       assert tkwvarnode10 isa TKwvar
+                                       assert tkwvarnode10 isa nullable TKwvar
                                        var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var ptypenode12 = nodearraylist7
-                                       assert ptypenode12 isa PType
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert ptypenode12 isa nullable PType
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pablenode4,
@@ -10590,7 +10589,7 @@ private class ReduceAction208
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -10600,26 +10599,26 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa TKwredef
+                                       assert tkwredefnode5 isa nullable TKwredef
                                        var tkwwritablenode6 = nodearraylist3
-                                       assert tkwwritablenode6 isa TKwwritable
-                                       var pablenode4 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode6 isa nullable TKwwritable
+                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                tkwredefnode5,
                                                tkwwritablenode6
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist5
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwvarnode10 = nodearraylist6
-                                       assert tkwvarnode10 isa TKwvar
+                                       assert tkwvarnode10 isa nullable TKwvar
                                        var tattridnode11 = nodearraylist7
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var ptypenode12 = nodearraylist8
-                                       assert ptypenode12 isa PType
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert ptypenode12 isa nullable PType
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pablenode4,
@@ -10640,7 +10639,7 @@ private class ReduceAction209
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -10648,18 +10647,18 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa TKwredef
+                                       assert tkwredefnode5 isa nullable TKwredef
                                        var pvisibilitynode6 = nodearraylist3
-                                       assert pvisibilitynode6 isa PVisibility
+                                       assert pvisibilitynode6 isa nullable PVisibility
                                        var tkwvarnode8 = nodearraylist4
-                                       assert tkwvarnode8 isa TKwvar
+                                       assert tkwvarnode8 isa nullable TKwvar
                                        var tattridnode9 = nodearraylist5
-                                       assert tattridnode9 isa TAttrid
+                                       assert tattridnode9 isa nullable TAttrid
                                        var ptypenode10 = nodearraylist6
-                                       assert ptypenode10 isa PType
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert ptypenode10 isa nullable PType
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                null,
@@ -10680,7 +10679,7 @@ private class ReduceAction210
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -10691,28 +10690,28 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwwritablenode8 = nodearraylist3
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist4
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwvarnode12 = nodearraylist5
-                                       assert tkwvarnode12 isa TKwvar
+                                       assert tkwvarnode12 isa nullable TKwvar
                                        var tattridnode13 = nodearraylist6
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var pexprnode15 = nodearraylist9
-                                       assert pexprnode15 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode15 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -10733,7 +10732,7 @@ private class ReduceAction211
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
@@ -10745,30 +10744,30 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist4
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwvarnode12 = nodearraylist6
-                                       assert tkwvarnode12 isa TKwvar
+                                       assert tkwvarnode12 isa nullable TKwvar
                                        var tattridnode13 = nodearraylist7
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var pexprnode15 = nodearraylist10
-                                       assert pexprnode15 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode15 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -10789,7 +10788,7 @@ private class ReduceAction212
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -10799,22 +10798,22 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
                                                tkwreadablenode5
                                        )
                                        var pvisibilitynode8 = nodearraylist3
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwvarnode10 = nodearraylist4
-                                       assert tkwvarnode10 isa TKwvar
+                                       assert tkwvarnode10 isa nullable TKwvar
                                        var tattridnode11 = nodearraylist5
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var pexprnode13 = nodearraylist8
-                                       assert pexprnode13 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode13 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                null,
@@ -10835,7 +10834,7 @@ private class ReduceAction213
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
@@ -10847,30 +10846,30 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwwritablenode8 = nodearraylist4
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwvarnode12 = nodearraylist6
-                                       assert tkwvarnode12 isa TKwvar
+                                       assert tkwvarnode12 isa nullable TKwvar
                                        var tattridnode13 = nodearraylist7
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var pexprnode15 = nodearraylist10
-                                       assert pexprnode15 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode15 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -10891,7 +10890,7 @@ private class ReduceAction214
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
@@ -10904,32 +10903,32 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist5
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwvarnode12 = nodearraylist7
-                                       assert tkwvarnode12 isa TKwvar
+                                       assert tkwvarnode12 isa nullable TKwvar
                                        var tattridnode13 = nodearraylist8
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var pexprnode15 = nodearraylist11
-                                       assert pexprnode15 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode15 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -10950,7 +10949,7 @@ private class ReduceAction215
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -10961,24 +10960,24 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwvarnode10 = nodearraylist5
-                                       assert tkwvarnode10 isa TKwvar
+                                       assert tkwvarnode10 isa nullable TKwvar
                                        var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var pexprnode13 = nodearraylist9
-                                       assert pexprnode13 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode13 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                null,
@@ -10999,7 +10998,7 @@ private class ReduceAction216
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -11009,22 +11008,22 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwwritablenode6 = nodearraylist2
-                                       assert tkwwritablenode6 isa TKwwritable
-                                       var pablenode4 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode6 isa nullable TKwwritable
+                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
                                                tkwwritablenode6
                                        )
                                        var pvisibilitynode8 = nodearraylist3
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwvarnode10 = nodearraylist4
-                                       assert tkwvarnode10 isa TKwvar
+                                       assert tkwvarnode10 isa nullable TKwvar
                                        var tattridnode11 = nodearraylist5
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var pexprnode13 = nodearraylist8
-                                       assert pexprnode13 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode13 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pablenode4,
@@ -11045,7 +11044,7 @@ private class ReduceAction217
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -11056,24 +11055,24 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa TKwredef
+                                       assert tkwredefnode5 isa nullable TKwredef
                                        var tkwwritablenode6 = nodearraylist3
-                                       assert tkwwritablenode6 isa TKwwritable
-                                       var pablenode4 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode6 isa nullable TKwwritable
+                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                tkwredefnode5,
                                                tkwwritablenode6
                                        )
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwvarnode10 = nodearraylist5
-                                       assert tkwvarnode10 isa TKwvar
+                                       assert tkwvarnode10 isa nullable TKwvar
                                        var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var pexprnode13 = nodearraylist9
-                                       assert pexprnode13 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode13 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pablenode4,
@@ -11094,7 +11093,7 @@ private class ReduceAction218
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -11103,16 +11102,16 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var pvisibilitynode6 = nodearraylist2
-                                       assert pvisibilitynode6 isa PVisibility
+                                       assert pvisibilitynode6 isa nullable PVisibility
                                        var tkwvarnode8 = nodearraylist3
-                                       assert tkwvarnode8 isa TKwvar
+                                       assert tkwvarnode8 isa nullable TKwvar
                                        var tattridnode9 = nodearraylist4
-                                       assert tattridnode9 isa TAttrid
+                                       assert tattridnode9 isa nullable TAttrid
                                        var pexprnode11 = nodearraylist7
-                                       assert pexprnode11 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode11 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                null,
@@ -11133,7 +11132,7 @@ private class ReduceAction219
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
@@ -11145,30 +11144,30 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwwritablenode8 = nodearraylist3
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
                                                tkwwritablenode8
                                        )
                                        var tkwredefnode9 = nodearraylist4
-                                       assert tkwredefnode9 isa TKwredef
+                                       assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwvarnode12 = nodearraylist6
-                                       assert tkwvarnode12 isa TKwvar
+                                       assert tkwvarnode12 isa nullable TKwvar
                                        var tattridnode13 = nodearraylist7
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var pexprnode15 = nodearraylist10
-                                       assert pexprnode15 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode15 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -11189,7 +11188,7 @@ private class ReduceAction220
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
@@ -11202,32 +11201,32 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist4
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
                                        var tkwredefnode9 = nodearraylist5
-                                       assert tkwredefnode9 isa TKwredef
+                                       assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwvarnode12 = nodearraylist7
-                                       assert tkwvarnode12 isa TKwvar
+                                       assert tkwvarnode12 isa nullable TKwvar
                                        var tattridnode13 = nodearraylist8
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var pexprnode15 = nodearraylist11
-                                       assert pexprnode15 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode15 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -11248,7 +11247,7 @@ private class ReduceAction221
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -11259,24 +11258,24 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwvarnode10 = nodearraylist5
-                                       assert tkwvarnode10 isa TKwvar
+                                       assert tkwvarnode10 isa nullable TKwvar
                                        var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var pexprnode13 = nodearraylist9
-                                       assert pexprnode13 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode13 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                null,
@@ -11297,7 +11296,7 @@ private class ReduceAction222
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
@@ -11310,32 +11309,32 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwwritablenode8 = nodearraylist4
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
                                                tkwwritablenode8
                                        )
                                        var tkwredefnode9 = nodearraylist5
-                                       assert tkwredefnode9 isa TKwredef
+                                       assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwvarnode12 = nodearraylist7
-                                       assert tkwvarnode12 isa TKwvar
+                                       assert tkwvarnode12 isa nullable TKwvar
                                        var tattridnode13 = nodearraylist8
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var pexprnode15 = nodearraylist11
-                                       assert pexprnode15 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode15 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -11356,7 +11355,7 @@ private class ReduceAction223
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist12 = p.pop
                                        var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
@@ -11370,34 +11369,34 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist5
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
                                        var tkwredefnode9 = nodearraylist6
-                                       assert tkwredefnode9 isa TKwredef
+                                       assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist7
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwvarnode12 = nodearraylist8
-                                       assert tkwvarnode12 isa TKwvar
+                                       assert tkwvarnode12 isa nullable TKwvar
                                        var tattridnode13 = nodearraylist9
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var pexprnode15 = nodearraylist12
-                                       assert pexprnode15 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode15 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -11418,7 +11417,7 @@ private class ReduceAction224
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
@@ -11430,26 +11429,26 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist5
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwvarnode10 = nodearraylist6
-                                       assert tkwvarnode10 isa TKwvar
+                                       assert tkwvarnode10 isa nullable TKwvar
                                        var tattridnode11 = nodearraylist7
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var pexprnode13 = nodearraylist10
-                                       assert pexprnode13 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode13 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                null,
@@ -11470,7 +11469,7 @@ private class ReduceAction225
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -11481,24 +11480,24 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwwritablenode6 = nodearraylist2
-                                       assert tkwwritablenode6 isa TKwwritable
-                                       var pablenode4 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode6 isa nullable TKwwritable
+                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
                                                tkwwritablenode6
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwvarnode10 = nodearraylist5
-                                       assert tkwvarnode10 isa TKwvar
+                                       assert tkwvarnode10 isa nullable TKwvar
                                        var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var pexprnode13 = nodearraylist9
-                                       assert pexprnode13 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode13 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pablenode4,
@@ -11519,7 +11518,7 @@ private class ReduceAction226
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
@@ -11531,26 +11530,26 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa TKwredef
+                                       assert tkwredefnode5 isa nullable TKwredef
                                        var tkwwritablenode6 = nodearraylist3
-                                       assert tkwwritablenode6 isa TKwwritable
-                                       var pablenode4 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode6 isa nullable TKwwritable
+                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                tkwredefnode5,
                                                tkwwritablenode6
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist5
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwvarnode10 = nodearraylist6
-                                       assert tkwvarnode10 isa TKwvar
+                                       assert tkwvarnode10 isa nullable TKwvar
                                        var tattridnode11 = nodearraylist7
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var pexprnode13 = nodearraylist10
-                                       assert pexprnode13 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode13 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pablenode4,
@@ -11571,7 +11570,7 @@ private class ReduceAction227
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -11581,18 +11580,18 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa TKwredef
+                                       assert tkwredefnode5 isa nullable TKwredef
                                        var pvisibilitynode6 = nodearraylist3
-                                       assert pvisibilitynode6 isa PVisibility
+                                       assert pvisibilitynode6 isa nullable PVisibility
                                        var tkwvarnode8 = nodearraylist4
-                                       assert tkwvarnode8 isa TKwvar
+                                       assert tkwvarnode8 isa nullable TKwvar
                                        var tattridnode9 = nodearraylist5
-                                       assert tattridnode9 isa TAttrid
+                                       assert tattridnode9 isa nullable TAttrid
                                        var pexprnode11 = nodearraylist8
-                                       assert pexprnode11 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode11 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                null,
@@ -11613,7 +11612,7 @@ private class ReduceAction228
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
@@ -11625,30 +11624,30 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwwritablenode8 = nodearraylist3
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist4
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwvarnode12 = nodearraylist5
-                                       assert tkwvarnode12 isa TKwvar
+                                       assert tkwvarnode12 isa nullable TKwvar
                                        var tattridnode13 = nodearraylist6
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var ptypenode14 = nodearraylist7
-                                       assert ptypenode14 isa PType
+                                       assert ptypenode14 isa nullable PType
                                        var pexprnode15 = nodearraylist10
-                                       assert pexprnode15 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode15 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -11669,7 +11668,7 @@ private class ReduceAction229
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
@@ -11682,32 +11681,32 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist4
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwvarnode12 = nodearraylist6
-                                       assert tkwvarnode12 isa TKwvar
+                                       assert tkwvarnode12 isa nullable TKwvar
                                        var tattridnode13 = nodearraylist7
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var ptypenode14 = nodearraylist8
-                                       assert ptypenode14 isa PType
+                                       assert ptypenode14 isa nullable PType
                                        var pexprnode15 = nodearraylist11
-                                       assert pexprnode15 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode15 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -11728,7 +11727,7 @@ private class ReduceAction230
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -11739,24 +11738,24 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
                                                tkwreadablenode5
                                        )
                                        var pvisibilitynode8 = nodearraylist3
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwvarnode10 = nodearraylist4
-                                       assert tkwvarnode10 isa TKwvar
+                                       assert tkwvarnode10 isa nullable TKwvar
                                        var tattridnode11 = nodearraylist5
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var ptypenode12 = nodearraylist6
-                                       assert ptypenode12 isa PType
+                                       assert ptypenode12 isa nullable PType
                                        var pexprnode13 = nodearraylist9
-                                       assert pexprnode13 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode13 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                null,
@@ -11777,7 +11776,7 @@ private class ReduceAction231
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
@@ -11790,32 +11789,32 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwwritablenode8 = nodearraylist4
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwvarnode12 = nodearraylist6
-                                       assert tkwvarnode12 isa TKwvar
+                                       assert tkwvarnode12 isa nullable TKwvar
                                        var tattridnode13 = nodearraylist7
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var ptypenode14 = nodearraylist8
-                                       assert ptypenode14 isa PType
+                                       assert ptypenode14 isa nullable PType
                                        var pexprnode15 = nodearraylist11
-                                       assert pexprnode15 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode15 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -11836,7 +11835,7 @@ private class ReduceAction232
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist12 = p.pop
                                        var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
@@ -11850,34 +11849,34 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist5
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwvarnode12 = nodearraylist7
-                                       assert tkwvarnode12 isa TKwvar
+                                       assert tkwvarnode12 isa nullable TKwvar
                                        var tattridnode13 = nodearraylist8
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var ptypenode14 = nodearraylist9
-                                       assert ptypenode14 isa PType
+                                       assert ptypenode14 isa nullable PType
                                        var pexprnode15 = nodearraylist12
-                                       assert pexprnode15 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode15 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -11898,7 +11897,7 @@ private class ReduceAction233
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
@@ -11910,26 +11909,26 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwvarnode10 = nodearraylist5
-                                       assert tkwvarnode10 isa TKwvar
+                                       assert tkwvarnode10 isa nullable TKwvar
                                        var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var ptypenode12 = nodearraylist7
-                                       assert ptypenode12 isa PType
+                                       assert ptypenode12 isa nullable PType
                                        var pexprnode13 = nodearraylist10
-                                       assert pexprnode13 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode13 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                null,
@@ -11950,7 +11949,7 @@ private class ReduceAction234
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -11961,24 +11960,24 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwwritablenode6 = nodearraylist2
-                                       assert tkwwritablenode6 isa TKwwritable
-                                       var pablenode4 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode6 isa nullable TKwwritable
+                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
                                                tkwwritablenode6
                                        )
                                        var pvisibilitynode8 = nodearraylist3
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwvarnode10 = nodearraylist4
-                                       assert tkwvarnode10 isa TKwvar
+                                       assert tkwvarnode10 isa nullable TKwvar
                                        var tattridnode11 = nodearraylist5
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var ptypenode12 = nodearraylist6
-                                       assert ptypenode12 isa PType
+                                       assert ptypenode12 isa nullable PType
                                        var pexprnode13 = nodearraylist9
-                                       assert pexprnode13 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode13 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pablenode4,
@@ -11999,7 +11998,7 @@ private class ReduceAction235
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
@@ -12011,26 +12010,26 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa TKwredef
+                                       assert tkwredefnode5 isa nullable TKwredef
                                        var tkwwritablenode6 = nodearraylist3
-                                       assert tkwwritablenode6 isa TKwwritable
-                                       var pablenode4 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode6 isa nullable TKwwritable
+                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                tkwredefnode5,
                                                tkwwritablenode6
                                        )
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwvarnode10 = nodearraylist5
-                                       assert tkwvarnode10 isa TKwvar
+                                       assert tkwvarnode10 isa nullable TKwvar
                                        var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var ptypenode12 = nodearraylist7
-                                       assert ptypenode12 isa PType
+                                       assert ptypenode12 isa nullable PType
                                        var pexprnode13 = nodearraylist10
-                                       assert pexprnode13 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode13 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pablenode4,
@@ -12051,7 +12050,7 @@ private class ReduceAction236
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -12061,18 +12060,18 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var pvisibilitynode6 = nodearraylist2
-                                       assert pvisibilitynode6 isa PVisibility
+                                       assert pvisibilitynode6 isa nullable PVisibility
                                        var tkwvarnode8 = nodearraylist3
-                                       assert tkwvarnode8 isa TKwvar
+                                       assert tkwvarnode8 isa nullable TKwvar
                                        var tattridnode9 = nodearraylist4
-                                       assert tattridnode9 isa TAttrid
+                                       assert tattridnode9 isa nullable TAttrid
                                        var ptypenode10 = nodearraylist5
-                                       assert ptypenode10 isa PType
+                                       assert ptypenode10 isa nullable PType
                                        var pexprnode11 = nodearraylist8
-                                       assert pexprnode11 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode11 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                null,
@@ -12093,7 +12092,7 @@ private class ReduceAction237
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
@@ -12106,32 +12105,32 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwwritablenode8 = nodearraylist3
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
                                                tkwwritablenode8
                                        )
                                        var tkwredefnode9 = nodearraylist4
-                                       assert tkwredefnode9 isa TKwredef
+                                       assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwvarnode12 = nodearraylist6
-                                       assert tkwvarnode12 isa TKwvar
+                                       assert tkwvarnode12 isa nullable TKwvar
                                        var tattridnode13 = nodearraylist7
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var ptypenode14 = nodearraylist8
-                                       assert ptypenode14 isa PType
+                                       assert ptypenode14 isa nullable PType
                                        var pexprnode15 = nodearraylist11
-                                       assert pexprnode15 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode15 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -12152,7 +12151,7 @@ private class ReduceAction238
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist12 = p.pop
                                        var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
@@ -12166,34 +12165,34 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist4
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
                                        var tkwredefnode9 = nodearraylist5
-                                       assert tkwredefnode9 isa TKwredef
+                                       assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwvarnode12 = nodearraylist7
-                                       assert tkwvarnode12 isa TKwvar
+                                       assert tkwvarnode12 isa nullable TKwvar
                                        var tattridnode13 = nodearraylist8
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var ptypenode14 = nodearraylist9
-                                       assert ptypenode14 isa PType
+                                       assert ptypenode14 isa nullable PType
                                        var pexprnode15 = nodearraylist12
-                                       assert pexprnode15 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode15 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -12214,7 +12213,7 @@ private class ReduceAction239
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
@@ -12226,26 +12225,26 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwvarnode10 = nodearraylist5
-                                       assert tkwvarnode10 isa TKwvar
+                                       assert tkwvarnode10 isa nullable TKwvar
                                        var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var ptypenode12 = nodearraylist7
-                                       assert ptypenode12 isa PType
+                                       assert ptypenode12 isa nullable PType
                                        var pexprnode13 = nodearraylist10
-                                       assert pexprnode13 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode13 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                null,
@@ -12266,7 +12265,7 @@ private class ReduceAction240
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist12 = p.pop
                                        var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
@@ -12280,34 +12279,34 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwwritablenode8 = nodearraylist4
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
                                                tkwwritablenode8
                                        )
                                        var tkwredefnode9 = nodearraylist5
-                                       assert tkwredefnode9 isa TKwredef
+                                       assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwvarnode12 = nodearraylist7
-                                       assert tkwvarnode12 isa TKwvar
+                                       assert tkwvarnode12 isa nullable TKwvar
                                        var tattridnode13 = nodearraylist8
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var ptypenode14 = nodearraylist9
-                                       assert ptypenode14 isa PType
+                                       assert ptypenode14 isa nullable PType
                                        var pexprnode15 = nodearraylist12
-                                       assert pexprnode15 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode15 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -12328,7 +12327,7 @@ private class ReduceAction241
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist13 = p.pop
                                        var nodearraylist12 = p.pop
                                        var nodearraylist11 = p.pop
@@ -12343,36 +12342,36 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist5
-                                       assert tkwwritablenode8 isa TKwwritable
-                                       var pablenode6 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode8 isa nullable TKwwritable
+                                       var pablenode6: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
                                        var tkwredefnode9 = nodearraylist6
-                                       assert tkwredefnode9 isa TKwredef
+                                       assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist7
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwvarnode12 = nodearraylist8
-                                       assert tkwvarnode12 isa TKwvar
+                                       assert tkwvarnode12 isa nullable TKwvar
                                        var tattridnode13 = nodearraylist9
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var ptypenode14 = nodearraylist10
-                                       assert ptypenode14 isa PType
+                                       assert ptypenode14 isa nullable PType
                                        var pexprnode15 = nodearraylist13
-                                       assert pexprnode15 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode15 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -12393,7 +12392,7 @@ private class ReduceAction242
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
@@ -12406,28 +12405,28 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
-                                       assert tkwreadablenode5 isa TKwreadable
-                                       var pablenode3 = new AReadAble.init_areadable(
+                                       assert tkwreadablenode5 isa nullable TKwreadable
+                                       var pablenode3: nullable AReadAble = new AReadAble.init_areadable(
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist5
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwvarnode10 = nodearraylist6
-                                       assert tkwvarnode10 isa TKwvar
+                                       assert tkwvarnode10 isa nullable TKwvar
                                        var tattridnode11 = nodearraylist7
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var ptypenode12 = nodearraylist8
-                                       assert ptypenode12 isa PType
+                                       assert ptypenode12 isa nullable PType
                                        var pexprnode13 = nodearraylist11
-                                       assert pexprnode13 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode13 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                pablenode3,
                                                null,
@@ -12448,7 +12447,7 @@ private class ReduceAction243
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
@@ -12460,26 +12459,26 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwwritablenode6 = nodearraylist2
-                                       assert tkwwritablenode6 isa TKwwritable
-                                       var pablenode4 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode6 isa nullable TKwwritable
+                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                null,
                                                tkwwritablenode6
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwvarnode10 = nodearraylist5
-                                       assert tkwvarnode10 isa TKwvar
+                                       assert tkwvarnode10 isa nullable TKwvar
                                        var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var ptypenode12 = nodearraylist7
-                                       assert ptypenode12 isa PType
+                                       assert ptypenode12 isa nullable PType
                                        var pexprnode13 = nodearraylist10
-                                       assert pexprnode13 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode13 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pablenode4,
@@ -12500,7 +12499,7 @@ private class ReduceAction244
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
@@ -12513,28 +12512,28 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa TKwredef
+                                       assert tkwredefnode5 isa nullable TKwredef
                                        var tkwwritablenode6 = nodearraylist3
-                                       assert tkwwritablenode6 isa TKwwritable
-                                       var pablenode4 = new AWriteAble.init_awriteable(
+                                       assert tkwwritablenode6 isa nullable TKwwritable
+                                       var pablenode4: nullable AWriteAble = new AWriteAble.init_awriteable(
                                                tkwredefnode5,
                                                tkwwritablenode6
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist5
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwvarnode10 = nodearraylist6
-                                       assert tkwvarnode10 isa TKwvar
+                                       assert tkwvarnode10 isa nullable TKwvar
                                        var tattridnode11 = nodearraylist7
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var ptypenode12 = nodearraylist8
-                                       assert ptypenode12 isa PType
+                                       assert ptypenode12 isa nullable PType
                                        var pexprnode13 = nodearraylist11
-                                       assert pexprnode13 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode13 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                pablenode4,
@@ -12555,7 +12554,7 @@ private class ReduceAction245
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -12566,20 +12565,20 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa TKwredef
+                                       assert tkwredefnode5 isa nullable TKwredef
                                        var pvisibilitynode6 = nodearraylist3
-                                       assert pvisibilitynode6 isa PVisibility
+                                       assert pvisibilitynode6 isa nullable PVisibility
                                        var tkwvarnode8 = nodearraylist4
-                                       assert tkwvarnode8 isa TKwvar
+                                       assert tkwvarnode8 isa nullable TKwvar
                                        var tattridnode9 = nodearraylist5
-                                       assert tattridnode9 isa TAttrid
+                                       assert tattridnode9 isa nullable TAttrid
                                        var ptypenode10 = nodearraylist6
-                                       assert ptypenode10 isa PType
+                                       assert ptypenode10 isa nullable PType
                                        var pexprnode11 = nodearraylist9
-                                       assert pexprnode11 isa PExpr
-                                       var ppropdefnode1 = new AAttrPropdef.init_aattrpropdef(
+                                       assert pexprnode11 isa nullable PExpr
+                                       var ppropdefnode1: nullable AAttrPropdef = new AAttrPropdef.init_aattrpropdef(
                                                pdocnode2,
                                                null,
                                                null,
@@ -12600,7 +12599,7 @@ private class ReduceAction246
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -12608,16 +12607,16 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var tkwinitnode5 = nodearraylist3
-                                       assert tkwinitnode5 isa TKwinit
+                                       assert tkwinitnode5 isa nullable TKwinit
                                        var psignaturenode7 = nodearraylist4
-                                       assert psignaturenode7 isa PSignature
+                                       assert psignaturenode7 isa nullable PSignature
                                        var pexprnode8 = nodearraylist6
-                                       assert pexprnode8 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+                                       assert pexprnode8 isa nullable PExpr
+                                       var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -12635,7 +12634,7 @@ private class ReduceAction247
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -12644,18 +12643,18 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var tkwinitnode5 = nodearraylist4
-                                       assert tkwinitnode5 isa TKwinit
+                                       assert tkwinitnode5 isa nullable TKwinit
                                        var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa PSignature
+                                       assert psignaturenode7 isa nullable PSignature
                                        var pexprnode8 = nodearraylist7
-                                       assert pexprnode8 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+                                       assert pexprnode8 isa nullable PExpr
+                                       var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -12673,7 +12672,7 @@ private class ReduceAction248
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -12682,18 +12681,18 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var tkwinitnode5 = nodearraylist3
-                                       assert tkwinitnode5 isa TKwinit
+                                       assert tkwinitnode5 isa nullable TKwinit
                                        var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
+                                       assert pmethidnode6 isa nullable PMethid
                                        var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa PSignature
+                                       assert psignaturenode7 isa nullable PSignature
                                        var pexprnode8 = nodearraylist7
-                                       assert pexprnode8 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+                                       assert pexprnode8 isa nullable PExpr
+                                       var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -12711,7 +12710,7 @@ private class ReduceAction249
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -12721,20 +12720,20 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var tkwinitnode5 = nodearraylist4
-                                       assert tkwinitnode5 isa TKwinit
+                                       assert tkwinitnode5 isa nullable TKwinit
                                        var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
+                                       assert pmethidnode6 isa nullable PMethid
                                        var psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa PSignature
+                                       assert psignaturenode7 isa nullable PSignature
                                        var pexprnode8 = nodearraylist8
-                                       assert pexprnode8 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+                                       assert pexprnode8 isa nullable PExpr
+                                       var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -12752,7 +12751,7 @@ private class ReduceAction250
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -12761,16 +12760,16 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var tkwinitnode5 = nodearraylist3
-                                       assert tkwinitnode5 isa TKwinit
+                                       assert tkwinitnode5 isa nullable TKwinit
                                        var psignaturenode7 = nodearraylist4
-                                       assert psignaturenode7 isa PSignature
+                                       assert psignaturenode7 isa nullable PSignature
                                        var pexprnode8 = nodearraylist6
-                                       assert pexprnode8 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+                                       assert pexprnode8 isa nullable PExpr
+                                       var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -12788,7 +12787,7 @@ private class ReduceAction251
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -12798,18 +12797,18 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var tkwinitnode5 = nodearraylist4
-                                       assert tkwinitnode5 isa TKwinit
+                                       assert tkwinitnode5 isa nullable TKwinit
                                        var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa PSignature
+                                       assert psignaturenode7 isa nullable PSignature
                                        var pexprnode8 = nodearraylist7
-                                       assert pexprnode8 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+                                       assert pexprnode8 isa nullable PExpr
+                                       var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -12827,7 +12826,7 @@ private class ReduceAction252
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -12837,18 +12836,18 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var tkwinitnode5 = nodearraylist3
-                                       assert tkwinitnode5 isa TKwinit
+                                       assert tkwinitnode5 isa nullable TKwinit
                                        var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
+                                       assert pmethidnode6 isa nullable PMethid
                                        var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa PSignature
+                                       assert psignaturenode7 isa nullable PSignature
                                        var pexprnode8 = nodearraylist7
-                                       assert pexprnode8 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+                                       assert pexprnode8 isa nullable PExpr
+                                       var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -12866,7 +12865,7 @@ private class ReduceAction253
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -12877,20 +12876,20 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var tkwinitnode5 = nodearraylist4
-                                       assert tkwinitnode5 isa TKwinit
+                                       assert tkwinitnode5 isa nullable TKwinit
                                        var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
+                                       assert pmethidnode6 isa nullable PMethid
                                        var psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa PSignature
+                                       assert psignaturenode7 isa nullable PSignature
                                        var pexprnode8 = nodearraylist8
-                                       assert pexprnode8 isa PExpr
-                                       var ppropdefnode1 = new AConcreteInitPropdef.init_aconcreteinitpropdef(
+                                       assert pexprnode8 isa nullable PExpr
+                                       var ppropdefnode1: nullable AConcreteInitPropdef = new AConcreteInitPropdef.init_aconcreteinitpropdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -12908,23 +12907,23 @@ private class ReduceAction254
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var tkwtypenode5 = nodearraylist3
-                                       assert tkwtypenode5 isa TKwtype
+                                       assert tkwtypenode5 isa nullable TKwtype
                                        var tclassidnode6 = nodearraylist4
-                                       assert tclassidnode6 isa TClassid
+                                       assert tclassidnode6 isa nullable TClassid
                                        var ptypenode7 = nodearraylist5
-                                       assert ptypenode7 isa PType
-                                       var ppropdefnode1 = new ATypePropdef.init_atypepropdef(
+                                       assert ptypenode7 isa nullable PType
+                                       var ppropdefnode1: nullable ATypePropdef = new ATypePropdef.init_atypepropdef(
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -12941,7 +12940,7 @@ private class ReduceAction255
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -12949,18 +12948,18 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var tkwtypenode5 = nodearraylist4
-                                       assert tkwtypenode5 isa TKwtype
+                                       assert tkwtypenode5 isa nullable TKwtype
                                        var tclassidnode6 = nodearraylist5
-                                       assert tclassidnode6 isa TClassid
+                                       assert tclassidnode6 isa nullable TClassid
                                        var ptypenode7 = nodearraylist6
-                                       assert ptypenode7 isa PType
-                                       var ppropdefnode1 = new ATypePropdef.init_atypepropdef(
+                                       assert ptypenode7 isa nullable PType
+                                       var ppropdefnode1: nullable ATypePropdef = new ATypePropdef.init_atypepropdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -12977,8 +12976,8 @@ private class ReduceAction256
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var pvisibilitynode1 = new APublicVisibility.init_apublicvisibility(
+                                       var node_list: nullable Object = null
+                                       var pvisibilitynode1: nullable APublicVisibility = new APublicVisibility.init_apublicvisibility(
                                        )
                                        node_list = pvisibilitynode1
                                        p.push(p.go_to(13), node_list)
@@ -12989,12 +12988,12 @@ private class ReduceAction257
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwprivatenode2 = nodearraylist1
-                                       assert tkwprivatenode2 isa TKwprivate
-                                       var pvisibilitynode1 = new APrivateVisibility.init_aprivatevisibility(
+                                       assert tkwprivatenode2 isa nullable TKwprivate
+                                       var pvisibilitynode1: nullable APrivateVisibility = new APrivateVisibility.init_aprivatevisibility(
                                                tkwprivatenode2
                                        )
                                        node_list = pvisibilitynode1
@@ -13006,12 +13005,12 @@ private class ReduceAction258
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwprotectednode2 = nodearraylist1
-                                       assert tkwprotectednode2 isa TKwprotected
-                                       var pvisibilitynode1 = new AProtectedVisibility.init_aprotectedvisibility(
+                                       assert tkwprotectednode2 isa nullable TKwprotected
+                                       var pvisibilitynode1: nullable AProtectedVisibility = new AProtectedVisibility.init_aprotectedvisibility(
                                                tkwprotectednode2
                                        )
                                        node_list = pvisibilitynode1
@@ -13023,12 +13022,12 @@ private class ReduceAction259
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwintrudenode2 = nodearraylist1
-                                       assert tkwintrudenode2 isa TKwintrude
-                                       var pvisibilitynode1 = new AIntrudeVisibility.init_aintrudevisibility(
+                                       assert tkwintrudenode2 isa nullable TKwintrude
+                                       var pvisibilitynode1: nullable AIntrudeVisibility = new AIntrudeVisibility.init_aintrudevisibility(
                                                tkwintrudenode2
                                        )
                                        node_list = pvisibilitynode1
@@ -13040,11 +13039,11 @@ private class ReduceAction260
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tidnode2 = nodearraylist1
-                                       assert tidnode2 isa TId
-                                       var pmethidnode1 = new AIdMethid.init_aidmethid(
+                                       assert tidnode2 isa nullable TId
+                                       var pmethidnode1: nullable AIdMethid = new AIdMethid.init_aidmethid(
                                                tidnode2
                                        )
                                        node_list = pmethidnode1
@@ -13056,11 +13055,11 @@ private class ReduceAction261
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tplusnode2 = nodearraylist1
-                                       assert tplusnode2 isa TPlus
-                                       var pmethidnode1 = new APlusMethid.init_aplusmethid(
+                                       assert tplusnode2 isa nullable TPlus
+                                       var pmethidnode1: nullable APlusMethid = new APlusMethid.init_aplusmethid(
                                                tplusnode2
                                        )
                                        node_list = pmethidnode1
@@ -13072,11 +13071,11 @@ private class ReduceAction262
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tminusnode2 = nodearraylist1
-                                       assert tminusnode2 isa TMinus
-                                       var pmethidnode1 = new AMinusMethid.init_aminusmethid(
+                                       assert tminusnode2 isa nullable TMinus
+                                       var pmethidnode1: nullable AMinusMethid = new AMinusMethid.init_aminusmethid(
                                                tminusnode2
                                        )
                                        node_list = pmethidnode1
@@ -13088,11 +13087,11 @@ private class ReduceAction263
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tstarnode2 = nodearraylist1
-                                       assert tstarnode2 isa TStar
-                                       var pmethidnode1 = new AStarMethid.init_astarmethid(
+                                       assert tstarnode2 isa nullable TStar
+                                       var pmethidnode1: nullable AStarMethid = new AStarMethid.init_astarmethid(
                                                tstarnode2
                                        )
                                        node_list = pmethidnode1
@@ -13104,11 +13103,11 @@ private class ReduceAction264
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tslashnode2 = nodearraylist1
-                                       assert tslashnode2 isa TSlash
-                                       var pmethidnode1 = new ASlashMethid.init_aslashmethid(
+                                       assert tslashnode2 isa nullable TSlash
+                                       var pmethidnode1: nullable ASlashMethid = new ASlashMethid.init_aslashmethid(
                                                tslashnode2
                                        )
                                        node_list = pmethidnode1
@@ -13120,11 +13119,11 @@ private class ReduceAction265
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tpercentnode2 = nodearraylist1
-                                       assert tpercentnode2 isa TPercent
-                                       var pmethidnode1 = new APercentMethid.init_apercentmethid(
+                                       assert tpercentnode2 isa nullable TPercent
+                                       var pmethidnode1: nullable APercentMethid = new APercentMethid.init_apercentmethid(
                                                tpercentnode2
                                        )
                                        node_list = pmethidnode1
@@ -13136,11 +13135,11 @@ private class ReduceAction266
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var teqnode2 = nodearraylist1
-                                       assert teqnode2 isa TEq
-                                       var pmethidnode1 = new AEqMethid.init_aeqmethid(
+                                       assert teqnode2 isa nullable TEq
+                                       var pmethidnode1: nullable AEqMethid = new AEqMethid.init_aeqmethid(
                                                teqnode2
                                        )
                                        node_list = pmethidnode1
@@ -13152,11 +13151,11 @@ private class ReduceAction267
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tnenode2 = nodearraylist1
-                                       assert tnenode2 isa TNe
-                                       var pmethidnode1 = new ANeMethid.init_anemethid(
+                                       assert tnenode2 isa nullable TNe
+                                       var pmethidnode1: nullable ANeMethid = new ANeMethid.init_anemethid(
                                                tnenode2
                                        )
                                        node_list = pmethidnode1
@@ -13168,11 +13167,11 @@ private class ReduceAction268
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tlenode2 = nodearraylist1
-                                       assert tlenode2 isa TLe
-                                       var pmethidnode1 = new ALeMethid.init_alemethid(
+                                       assert tlenode2 isa nullable TLe
+                                       var pmethidnode1: nullable ALeMethid = new ALeMethid.init_alemethid(
                                                tlenode2
                                        )
                                        node_list = pmethidnode1
@@ -13184,11 +13183,11 @@ private class ReduceAction269
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tgenode2 = nodearraylist1
-                                       assert tgenode2 isa TGe
-                                       var pmethidnode1 = new AGeMethid.init_agemethid(
+                                       assert tgenode2 isa nullable TGe
+                                       var pmethidnode1: nullable AGeMethid = new AGeMethid.init_agemethid(
                                                tgenode2
                                        )
                                        node_list = pmethidnode1
@@ -13200,11 +13199,11 @@ private class ReduceAction270
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tltnode2 = nodearraylist1
-                                       assert tltnode2 isa TLt
-                                       var pmethidnode1 = new ALtMethid.init_altmethid(
+                                       assert tltnode2 isa nullable TLt
+                                       var pmethidnode1: nullable ALtMethid = new ALtMethid.init_altmethid(
                                                tltnode2
                                        )
                                        node_list = pmethidnode1
@@ -13216,11 +13215,11 @@ private class ReduceAction271
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tgtnode2 = nodearraylist1
-                                       assert tgtnode2 isa TGt
-                                       var pmethidnode1 = new AGtMethid.init_agtmethid(
+                                       assert tgtnode2 isa nullable TGt
+                                       var pmethidnode1: nullable AGtMethid = new AGtMethid.init_agtmethid(
                                                tgtnode2
                                        )
                                        node_list = pmethidnode1
@@ -13232,14 +13231,14 @@ private class ReduceAction272
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tobranode2 = nodearraylist1
-                                       assert tobranode2 isa TObra
+                                       assert tobranode2 isa nullable TObra
                                        var tcbranode3 = nodearraylist2
-                                       assert tcbranode3 isa TCbra
-                                       var pmethidnode1 = new ABraMethid.init_abramethid(
+                                       assert tcbranode3 isa nullable TCbra
+                                       var pmethidnode1: nullable ABraMethid = new ABraMethid.init_abramethid(
                                                tobranode2,
                                                tcbranode3
                                        )
@@ -13252,11 +13251,11 @@ private class ReduceAction273
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tstarshipnode2 = nodearraylist1
-                                       assert tstarshipnode2 isa TStarship
-                                       var pmethidnode1 = new AStarshipMethid.init_astarshipmethid(
+                                       assert tstarshipnode2 isa nullable TStarship
+                                       var pmethidnode1: nullable AStarshipMethid = new AStarshipMethid.init_astarshipmethid(
                                                tstarshipnode2
                                        )
                                        node_list = pmethidnode1
@@ -13268,14 +13267,14 @@ private class ReduceAction274
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tidnode2 = nodearraylist1
-                                       assert tidnode2 isa TId
+                                       assert tidnode2 isa nullable TId
                                        var tassignnode3 = nodearraylist2
-                                       assert tassignnode3 isa TAssign
-                                       var pmethidnode1 = new AAssignMethid.init_aassignmethid(
+                                       assert tassignnode3 isa nullable TAssign
+                                       var pmethidnode1: nullable AAssignMethid = new AAssignMethid.init_aassignmethid(
                                                tidnode2,
                                                tassignnode3
                                        )
@@ -13288,17 +13287,17 @@ private class ReduceAction275
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tobranode2 = nodearraylist1
-                                       assert tobranode2 isa TObra
+                                       assert tobranode2 isa nullable TObra
                                        var tcbranode3 = nodearraylist2
-                                       assert tcbranode3 isa TCbra
+                                       assert tcbranode3 isa nullable TCbra
                                        var tassignnode4 = nodearraylist3
-                                       assert tassignnode4 isa TAssign
-                                       var pmethidnode1 = new ABraassignMethid.init_abraassignmethid(
+                                       assert tassignnode4 isa nullable TAssign
+                                       var pmethidnode1: nullable ABraassignMethid = new ABraassignMethid.init_abraassignmethid(
                                                tobranode2,
                                                tcbranode3,
                                                tassignnode4
@@ -13312,20 +13311,20 @@ private class ReduceAction276
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
                                        var listnode5 = new Array[Object]
-                                       var listnode4 = nodearraylist1 
+                                       var listnode4 = nodearraylist1
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var psignaturenode1 = new ASignature.init_asignature(
+#                                      end
+                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
                                                listnode2,
                                                null,
                                                listnode5
@@ -13339,30 +13338,30 @@ private class ReduceAction277
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 listnode2 = nodearraylist1 
+                                       var listnode2 = nodearraylist1
                                        assert listnode2 isa Array[Object]
-                                       if listnode2 != null then
+#                                      if listnode2 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode2
                                                else
                                                        listnode3.append(listnode2)
                                                end
-                                       end
-                                       var listnode5 = nodearraylist2 
+#                                      end
+                                       var listnode5 = nodearraylist2
                                        assert listnode5 isa Array[Object]
-                                       if listnode5 != null then
+#                                      if listnode5 != null then
                                                if listnode6.is_empty then
                                                        listnode6 = listnode5
                                                else
                                                        listnode6.append(listnode5)
                                                end
-                                       end
-                                       var psignaturenode1 = new ASignature.init_asignature(
+#                                      end
+                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
                                                listnode3,
                                                null,
                                                listnode6
@@ -13376,23 +13375,23 @@ private class ReduceAction278
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
                                        var listnode5 = new Array[Object]
                                        var ptypenode3 = nodearraylist1
-                                       assert ptypenode3 isa PType
-                                       var listnode4 = nodearraylist2 
+                                       assert ptypenode3 isa nullable PType
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var psignaturenode1 = new ASignature.init_asignature(
+#                                      end
+                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
                                                listnode2,
                                                ptypenode3,
                                                listnode5
@@ -13406,33 +13405,33 @@ private class ReduceAction279
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 listnode2 = nodearraylist1 
+                                       var listnode2 = nodearraylist1
                                        assert listnode2 isa Array[Object]
-                                       if listnode2 != null then
+#                                      if listnode2 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode2
                                                else
                                                        listnode3.append(listnode2)
                                                end
-                                       end
+#                                      end
                                        var ptypenode4 = nodearraylist2
-                                       assert ptypenode4 isa PType
-                                       var listnode5 = nodearraylist3 
+                                       assert ptypenode4 isa nullable PType
+                                       var listnode5 = nodearraylist3
                                        assert listnode5 isa Array[Object]
-                                       if listnode5 != null then
+#                                      if listnode5 != null then
                                                if listnode6.is_empty then
                                                        listnode6 = listnode5
                                                else
                                                        listnode6.append(listnode5)
                                                end
-                                       end
-                                       var psignaturenode1 = new ASignature.init_asignature(
+#                                      end
+                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
                                                listnode3,
                                                ptypenode4,
                                                listnode6
@@ -13446,11 +13445,11 @@ private class ReduceAction280
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
                                        var listnode4 = new Array[Object]
-                                       var psignaturenode1 = new ASignature.init_asignature(
+                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
                                                listnode2,
                                                null,
                                                listnode4
@@ -13464,21 +13463,21 @@ private class ReduceAction281
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
                                        var listnode5 = new Array[Object]
-                                       var listnode2 = nodearraylist1 
+                                       var listnode2 = nodearraylist1
                                        assert listnode2 isa Array[Object]
-                                       if listnode2 != null then
+#                                      if listnode2 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode2
                                                else
                                                        listnode3.append(listnode2)
                                                end
-                                       end
-                                       var psignaturenode1 = new ASignature.init_asignature(
+#                                      end
+                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
                                                listnode3,
                                                null,
                                                listnode5
@@ -13492,14 +13491,14 @@ private class ReduceAction282
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
                                        var listnode4 = new Array[Object]
                                        var ptypenode3 = nodearraylist1
-                                       assert ptypenode3 isa PType
-                                       var psignaturenode1 = new ASignature.init_asignature(
+                                       assert ptypenode3 isa nullable PType
+                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
                                                listnode2,
                                                ptypenode3,
                                                listnode4
@@ -13513,24 +13512,24 @@ private class ReduceAction283
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
                                        var listnode5 = new Array[Object]
-                                       var listnode2 = nodearraylist1 
+                                       var listnode2 = nodearraylist1
                                        assert listnode2 isa Array[Object]
-                                       if listnode2 != null then
+#                                      if listnode2 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode2
                                                else
                                                        listnode3.append(listnode2)
                                                end
-                                       end
+#                                      end
                                        var ptypenode4 = nodearraylist2
-                                       assert ptypenode4 isa PType
-                                       var psignaturenode1 = new ASignature.init_asignature(
+                                       assert ptypenode4 isa nullable PType
+                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
                                                listnode3,
                                                ptypenode4,
                                                listnode5
@@ -13544,10 +13543,10 @@ private class ReduceAction284
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var listnode2 = new Array[Object]
                                        var listnode4 = new Array[Object]
-                                       var psignaturenode1 = new ASignature.init_asignature(
+                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
                                                listnode2,
                                                null,
                                                listnode4
@@ -13561,20 +13560,20 @@ private class ReduceAction285
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
                                        var listnode5 = new Array[Object]
-                                       var listnode2 = nodearraylist1 
+                                       var listnode2 = nodearraylist1
                                        assert listnode2 isa Array[Object]
-                                       if listnode2 != null then
+#                                      if listnode2 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode2
                                                else
                                                        listnode3.append(listnode2)
                                                end
-                                       end
-                                       var psignaturenode1 = new ASignature.init_asignature(
+#                                      end
+                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
                                                listnode3,
                                                null,
                                                listnode5
@@ -13588,13 +13587,13 @@ private class ReduceAction286
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
                                        var listnode4 = new Array[Object]
                                        var ptypenode3 = nodearraylist1
-                                       assert ptypenode3 isa PType
-                                       var psignaturenode1 = new ASignature.init_asignature(
+                                       assert ptypenode3 isa nullable PType
+                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
                                                listnode2,
                                                ptypenode3,
                                                listnode4
@@ -13608,23 +13607,23 @@ private class ReduceAction287
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
                                        var listnode5 = new Array[Object]
-                                       var listnode2 = nodearraylist1 
+                                       var listnode2 = nodearraylist1
                                        assert listnode2 isa Array[Object]
-                                       if listnode2 != null then
+#                                      if listnode2 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode2
                                                else
                                                        listnode3.append(listnode2)
                                                end
-                                       end
+#                                      end
                                        var ptypenode4 = nodearraylist2
-                                       assert ptypenode4 isa PType
-                                       var psignaturenode1 = new ASignature.init_asignature(
+                                       assert ptypenode4 isa nullable PType
+                                       var psignaturenode1: nullable ASignature = new ASignature.init_asignature(
                                                listnode3,
                                                ptypenode4,
                                                listnode5
@@ -13638,7 +13637,7 @@ private class ReduceAction288
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -13646,7 +13645,7 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
                                        var pparamnode1 = nodearraylist3
-                                       assert pparamnode1 isa PParam
+                                       assert pparamnode1 isa nullable PParam
                                        if pparamnode1 != null then
                                                listnode2.add(pparamnode1)
                                        end
@@ -13659,7 +13658,7 @@ private class ReduceAction289
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -13668,19 +13667,19 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
                                        var pparamnode1 = nodearraylist3
-                                       assert pparamnode1 isa PParam
-                                       var listnode2 = nodearraylist4 
+                                       assert pparamnode1 isa nullable PParam
+                                       var listnode2 = nodearraylist4
                                        assert listnode2 isa Array[Object]
                                        if pparamnode1 != null then
                                                listnode3.add(pparamnode1)
                                        end
-                                       if listnode2 != null then
+#                                      if listnode2 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode2
                                                else
                                                        listnode3.append(listnode2)
                                                end
-                                       end
+#                                      end
                                        node_list = listnode3
                                        p.push(p.go_to(17), node_list)
        end
@@ -13690,7 +13689,7 @@ private class ReduceAction290
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
@@ -13704,12 +13703,12 @@ private class ReduceAction291
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pparamnode1 = nodearraylist3
-                                       assert pparamnode1 isa PParam
+                                       assert pparamnode1 isa nullable PParam
                                        node_list = pparamnode1
                                        p.push(p.go_to(18), node_list)
        end
@@ -13719,11 +13718,11 @@ private class ReduceAction292
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tidnode2 = nodearraylist1
-                                       assert tidnode2 isa TId
-                                       var pparamnode1 = new AParam.init_aparam(
+                                       assert tidnode2 isa nullable TId
+                                       var pparamnode1: nullable AParam = new AParam.init_aparam(
                                                tidnode2,
                                                null,
                                                null
@@ -13737,14 +13736,14 @@ private class ReduceAction293
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tidnode2 = nodearraylist1
-                                       assert tidnode2 isa TId
+                                       assert tidnode2 isa nullable TId
                                        var ptypenode3 = nodearraylist2
-                                       assert ptypenode3 isa PType
-                                       var pparamnode1 = new AParam.init_aparam(
+                                       assert ptypenode3 isa nullable PType
+                                       var pparamnode1: nullable AParam = new AParam.init_aparam(
                                                tidnode2,
                                                ptypenode3,
                                                null
@@ -13758,17 +13757,17 @@ private class ReduceAction294
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tidnode2 = nodearraylist1
-                                       assert tidnode2 isa TId
+                                       assert tidnode2 isa nullable TId
                                        var ptypenode3 = nodearraylist2
-                                       assert ptypenode3 isa PType
+                                       assert ptypenode3 isa nullable PType
                                        var tdotdotdotnode4 = nodearraylist3
-                                       assert tdotdotdotnode4 isa TDotdotdot
-                                       var pparamnode1 = new AParam.init_aparam(
+                                       assert tdotdotdotnode4 isa nullable TDotdotdot
+                                       var pparamnode1: nullable AParam = new AParam.init_aparam(
                                                tidnode2,
                                                ptypenode3,
                                                tdotdotdotnode4
@@ -13782,19 +13781,19 @@ private class ReduceAction295
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
-                                       var listnode1 = nodearraylist2 
+                                       var listnode1 = nodearraylist2
                                        assert listnode1 isa Array[Object]
-                                       if listnode1 != null then
+#                                      if listnode1 != null then
                                                if listnode2.is_empty then
                                                        listnode2 = listnode1
                                                else
                                                        listnode2.append(listnode1)
                                                end
-                                       end
+#                                      end
                                        node_list = listnode2
                                        p.push(p.go_to(20), node_list)
        end
@@ -13804,19 +13803,19 @@ private class ReduceAction296
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 tkwwithnode2 = nodearraylist1
-                                       assert tkwwithnode2 isa TKwwith
+                                       assert tkwwithnode2 isa nullable TKwwith
                                        var tidnode4 = nodearraylist3
-                                       assert tidnode4 isa TId
+                                       assert tidnode4 isa nullable TId
                                        var psignaturenode5 = nodearraylist4
-                                       assert psignaturenode5 isa PSignature
-                                       var pclosuredeclnode1 = new AClosureDecl.init_aclosuredecl(
+                                       assert psignaturenode5 isa nullable PSignature
+                                       var pclosuredeclnode1: nullable AClosureDecl = new AClosureDecl.init_aclosuredecl(
                                                tkwwithnode2,
                                                null,
                                                tidnode4,
@@ -13832,7 +13831,7 @@ private class ReduceAction297
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -13840,14 +13839,14 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwwithnode2 = nodearraylist1
-                                       assert tkwwithnode2 isa TKwwith
+                                       assert tkwwithnode2 isa nullable TKwwith
                                        var tkwbreaknode3 = nodearraylist2
-                                       assert tkwbreaknode3 isa TKwbreak
+                                       assert tkwbreaknode3 isa nullable TKwbreak
                                        var tidnode4 = nodearraylist4
-                                       assert tidnode4 isa TId
+                                       assert tidnode4 isa nullable TId
                                        var psignaturenode5 = nodearraylist5
-                                       assert psignaturenode5 isa PSignature
-                                       var pclosuredeclnode1 = new AClosureDecl.init_aclosuredecl(
+                                       assert psignaturenode5 isa nullable PSignature
+                                       var pclosuredeclnode1: nullable AClosureDecl = new AClosureDecl.init_aclosuredecl(
                                                tkwwithnode2,
                                                tkwbreaknode3,
                                                tidnode4,
@@ -13863,7 +13862,7 @@ private class ReduceAction298
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -13872,14 +13871,14 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwwithnode2 = nodearraylist1
-                                       assert tkwwithnode2 isa TKwwith
+                                       assert tkwwithnode2 isa nullable TKwwith
                                        var tidnode4 = nodearraylist3
-                                       assert tidnode4 isa TId
+                                       assert tidnode4 isa nullable TId
                                        var psignaturenode5 = nodearraylist4
-                                       assert psignaturenode5 isa PSignature
+                                       assert psignaturenode5 isa nullable PSignature
                                        var pexprnode6 = nodearraylist6
-                                       assert pexprnode6 isa PExpr
-                                       var pclosuredeclnode1 = new AClosureDecl.init_aclosuredecl(
+                                       assert pexprnode6 isa nullable PExpr
+                                       var pclosuredeclnode1: nullable AClosureDecl = new AClosureDecl.init_aclosuredecl(
                                                tkwwithnode2,
                                                null,
                                                tidnode4,
@@ -13895,7 +13894,7 @@ private class ReduceAction299
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -13905,16 +13904,16 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwwithnode2 = nodearraylist1
-                                       assert tkwwithnode2 isa TKwwith
+                                       assert tkwwithnode2 isa nullable TKwwith
                                        var tkwbreaknode3 = nodearraylist2
-                                       assert tkwbreaknode3 isa TKwbreak
+                                       assert tkwbreaknode3 isa nullable TKwbreak
                                        var tidnode4 = nodearraylist4
-                                       assert tidnode4 isa TId
+                                       assert tidnode4 isa nullable TId
                                        var psignaturenode5 = nodearraylist5
-                                       assert psignaturenode5 isa PSignature
+                                       assert psignaturenode5 isa nullable PSignature
                                        var pexprnode6 = nodearraylist7
-                                       assert pexprnode6 isa PExpr
-                                       var pclosuredeclnode1 = new AClosureDecl.init_aclosuredecl(
+                                       assert pexprnode6 isa nullable PExpr
+                                       var pclosuredeclnode1: nullable AClosureDecl = new AClosureDecl.init_aclosuredecl(
                                                tkwwithnode2,
                                                tkwbreaknode3,
                                                tidnode4,
@@ -13930,12 +13929,12 @@ private class ReduceAction300
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
                                        var tclassidnode3 = nodearraylist1
-                                       assert tclassidnode3 isa TClassid
-                                       var ptypenode1 = new AType.init_atype(
+                                       assert tclassidnode3 isa nullable TClassid
+                                       var ptypenode1: nullable AType = new AType.init_atype(
                                                null,
                                                tclassidnode3,
                                                listnode4
@@ -13949,15 +13948,15 @@ private class ReduceAction301
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
                                        var tkwnullablenode2 = nodearraylist1
-                                       assert tkwnullablenode2 isa TKwnullable
+                                       assert tkwnullablenode2 isa nullable TKwnullable
                                        var tclassidnode3 = nodearraylist2
-                                       assert tclassidnode3 isa TClassid
-                                       var ptypenode1 = new AType.init_atype(
+                                       assert tclassidnode3 isa nullable TClassid
+                                       var ptypenode1: nullable AType = new AType.init_atype(
                                                tkwnullablenode2,
                                                tclassidnode3,
                                                listnode4
@@ -13971,7 +13970,7 @@ private class ReduceAction302
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -13980,17 +13979,17 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var tclassidnode3 = nodearraylist1
-                                       assert tclassidnode3 isa TClassid
-                                       var listnode4 = nodearraylist4 
+                                       assert tclassidnode3 isa nullable TClassid
+                                       var listnode4 = nodearraylist4
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var ptypenode1 = new AType.init_atype(
+#                                      end
+                                       var ptypenode1: nullable AType = new AType.init_atype(
                                                null,
                                                tclassidnode3,
                                                listnode5
@@ -14004,7 +14003,7 @@ private class ReduceAction303
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -14014,19 +14013,19 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var tkwnullablenode2 = nodearraylist1
-                                       assert tkwnullablenode2 isa TKwnullable
+                                       assert tkwnullablenode2 isa nullable TKwnullable
                                        var tclassidnode3 = nodearraylist2
-                                       assert tclassidnode3 isa TClassid
-                                       var listnode4 = nodearraylist5 
+                                       assert tclassidnode3 isa nullable TClassid
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var ptypenode1 = new AType.init_atype(
+#                                      end
+                                       var ptypenode1: nullable AType = new AType.init_atype(
                                                tkwnullablenode2,
                                                tclassidnode3,
                                                listnode5
@@ -14040,11 +14039,11 @@ private class ReduceAction304
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
                                        var ptypenode1 = nodearraylist1
-                                       assert ptypenode1 isa PType
+                                       assert ptypenode1 isa nullable PType
                                        if ptypenode1 != null then
                                                listnode2.add(ptypenode1)
                                        end
@@ -14057,24 +14056,24 @@ private class ReduceAction305
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
                                        var ptypenode1 = nodearraylist1
-                                       assert ptypenode1 isa PType
-                                       var listnode2 = nodearraylist2 
+                                       assert ptypenode1 isa nullable PType
+                                       var listnode2 = nodearraylist2
                                        assert listnode2 isa Array[Object]
                                        if ptypenode1 != null then
                                                listnode3.add(ptypenode1)
                                        end
-                                       if listnode2 != null then
+#                                      if listnode2 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode2
                                                else
                                                        listnode3.append(listnode2)
                                                end
-                                       end
+#                                      end
                                        node_list = listnode3
                                        p.push(p.go_to(23), node_list)
        end
@@ -14084,12 +14083,12 @@ private class ReduceAction306
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var ptypenode1 = nodearraylist3
-                                       assert ptypenode1 isa PType
+                                       assert ptypenode1 isa nullable PType
                                        node_list = ptypenode1
                                        p.push(p.go_to(24), node_list)
        end
@@ -14099,12 +14098,12 @@ private class ReduceAction307
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var ptypenode1 = nodearraylist3
-                                       assert ptypenode1 isa PType
+                                       assert ptypenode1 isa nullable PType
                                        node_list = ptypenode1
                                        p.push(p.go_to(25), node_list)
        end
@@ -14114,10 +14113,10 @@ private class ReduceAction308
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(26), node_list)
        end
@@ -14127,18 +14126,18 @@ private class ReduceAction309
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 pexprnode2 = nodearraylist2
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        if pexprnode2 != null then
                                                listnode3.add(pexprnode2)
                                        end
-                                       var pexprnode1 = new ABlockExpr.init_ablockexpr(
+                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
                                                listnode3
                                        )
                                        node_list = pexprnode1
@@ -14150,7 +14149,7 @@ private class ReduceAction310
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -14158,20 +14157,20 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
                                        var pexprnode2 = nodearraylist2
-                                       assert pexprnode2 isa PExpr
-                                       var listnode3 = nodearraylist3 
+                                       assert pexprnode2 isa nullable PExpr
+                                       var listnode3 = nodearraylist3
                                        assert listnode3 isa Array[Object]
                                        if pexprnode2 != null then
                                                listnode4.add(pexprnode2)
                                        end
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
-                                       var pexprnode1 = new ABlockExpr.init_ablockexpr(
+#                                      end
+                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
                                                listnode4
                                        )
                                        node_list = pexprnode1
@@ -14183,11 +14182,11 @@ private class ReduceAction311
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
-                                       var pexprnode1 = new ABlockExpr.init_ablockexpr(
+                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
                                                listnode2
                                        )
                                        node_list = pexprnode1
@@ -14199,10 +14198,10 @@ private class ReduceAction312
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
-                                       var pexprnode1 = new ABlockExpr.init_ablockexpr(
+                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
                                                listnode2
                                        )
                                        node_list = pexprnode1
@@ -14214,11 +14213,11 @@ private class ReduceAction313
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist2
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(27), node_list)
        end
@@ -14228,10 +14227,10 @@ private class ReduceAction314
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(28), node_list)
        end
@@ -14241,10 +14240,10 @@ private class ReduceAction315
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(28), node_list)
        end
@@ -14254,11 +14253,11 @@ private class ReduceAction316
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tkwreturnnode2 = nodearraylist1
-                                       assert tkwreturnnode2 isa TKwreturn
-                                       var pexprnode1 = new AReturnExpr.init_areturnexpr(
+                                       assert tkwreturnnode2 isa nullable TKwreturn
+                                       var pexprnode1: nullable AReturnExpr = new AReturnExpr.init_areturnexpr(
                                                tkwreturnnode2,
                                                null
                                        )
@@ -14271,14 +14270,14 @@ private class ReduceAction317
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwreturnnode2 = nodearraylist1
-                                       assert tkwreturnnode2 isa TKwreturn
+                                       assert tkwreturnnode2 isa nullable TKwreturn
                                        var pexprnode3 = nodearraylist2
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AReturnExpr.init_areturnexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AReturnExpr = new AReturnExpr.init_areturnexpr(
                                                tkwreturnnode2,
                                                pexprnode3
                                        )
@@ -14291,11 +14290,11 @@ private class ReduceAction318
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tkwbreaknode2 = nodearraylist1
-                                       assert tkwbreaknode2 isa TKwbreak
-                                       var pexprnode1 = new ABreakExpr.init_abreakexpr(
+                                       assert tkwbreaknode2 isa nullable TKwbreak
+                                       var pexprnode1: nullable ABreakExpr = new ABreakExpr.init_abreakexpr(
                                                tkwbreaknode2,
                                                null
                                        )
@@ -14308,14 +14307,14 @@ private class ReduceAction319
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwbreaknode2 = nodearraylist1
-                                       assert tkwbreaknode2 isa TKwbreak
+                                       assert tkwbreaknode2 isa nullable TKwbreak
                                        var pexprnode3 = nodearraylist2
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new ABreakExpr.init_abreakexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable ABreakExpr = new ABreakExpr.init_abreakexpr(
                                                tkwbreaknode2,
                                                pexprnode3
                                        )
@@ -14328,11 +14327,11 @@ private class ReduceAction320
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tkwabortnode2 = nodearraylist1
-                                       assert tkwabortnode2 isa TKwabort
-                                       var pexprnode1 = new AAbortExpr.init_aabortexpr(
+                                       assert tkwabortnode2 isa nullable TKwabort
+                                       var pexprnode1: nullable AAbortExpr = new AAbortExpr.init_aabortexpr(
                                                tkwabortnode2
                                        )
                                        node_list = pexprnode1
@@ -14344,11 +14343,11 @@ private class ReduceAction321
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tkwcontinuenode2 = nodearraylist1
-                                       assert tkwcontinuenode2 isa TKwcontinue
-                                       var pexprnode1 = new AContinueExpr.init_acontinueexpr(
+                                       assert tkwcontinuenode2 isa nullable TKwcontinue
+                                       var pexprnode1: nullable AContinueExpr = new AContinueExpr.init_acontinueexpr(
                                                tkwcontinuenode2,
                                                null
                                        )
@@ -14361,14 +14360,14 @@ private class ReduceAction322
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwcontinuenode2 = nodearraylist1
-                                       assert tkwcontinuenode2 isa TKwcontinue
+                                       assert tkwcontinuenode2 isa nullable TKwcontinue
                                        var pexprnode3 = nodearraylist2
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AContinueExpr.init_acontinueexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AContinueExpr = new AContinueExpr.init_acontinueexpr(
                                                tkwcontinuenode2,
                                                pexprnode3
                                        )
@@ -14381,10 +14380,10 @@ private class ReduceAction323
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(28), node_list)
        end
@@ -14394,10 +14393,10 @@ private class ReduceAction324
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(28), node_list)
        end
@@ -14407,10 +14406,10 @@ private class ReduceAction325
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(28), node_list)
        end
@@ -14420,10 +14419,10 @@ private class ReduceAction326
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(28), node_list)
        end
@@ -14433,10 +14432,10 @@ private class ReduceAction327
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(28), node_list)
        end
@@ -14446,7 +14445,7 @@ private class ReduceAction328
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -14455,19 +14454,19 @@ special ReduceAction
                                        var listnode5 = new Array[Object]
                                        var listnode6 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist5 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -14482,25 +14481,25 @@ private class ReduceAction329
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var listnode6 = new Array[Object]
-                                       var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist2 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -14515,7 +14514,7 @@ private class ReduceAction330
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -14525,28 +14524,28 @@ special ReduceAction
                                        var listnode5 = new Array[Object]
                                        var listnode7 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist5 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var listnode6 = nodearraylist6 
+#                                      end
+                                       var listnode6 = nodearraylist6
                                        assert listnode6 isa Array[Object]
-                                       if listnode6 != null then
+#                                      if listnode6 != null then
                                                if listnode7.is_empty then
                                                        listnode7 = listnode6
                                                else
                                                        listnode7.append(listnode6)
                                                end
-                                       end
-                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -14561,35 +14560,35 @@ private class ReduceAction331
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var listnode7 = new Array[Object]
-                                       var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist2 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var listnode6 = nodearraylist3 
+#                                      end
+                                       var listnode6 = nodearraylist3
                                        assert listnode6 isa Array[Object]
-                                       if listnode6 != null then
+#                                      if listnode6 != null then
                                                if listnode7.is_empty then
                                                        listnode7 = listnode6
                                                else
                                                        listnode7.append(listnode6)
                                                end
-                                       end
-                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -14604,22 +14603,22 @@ private class ReduceAction332
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var tkwsupernode3 = nodearraylist1
-                                       assert tkwsupernode3 isa TKwsuper
-                                       var listnode4 = nodearraylist2 
+                                       assert tkwsupernode3 isa nullable TKwsuper
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pexprnode1 = new ASuperExpr.init_asuperexpr(
+#                                      end
+                                       var pexprnode1: nullable ASuperExpr = new ASuperExpr.init_asuperexpr(
                                                null,
                                                tkwsupernode3,
                                                listnode5
@@ -14633,25 +14632,25 @@ private class ReduceAction333
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var pqualifiednode2 = nodearraylist1
-                                       assert pqualifiednode2 isa PQualified
+                                       assert pqualifiednode2 isa nullable PQualified
                                        var tkwsupernode3 = nodearraylist2
-                                       assert tkwsupernode3 isa TKwsuper
-                                       var listnode4 = nodearraylist3 
+                                       assert tkwsupernode3 isa nullable TKwsuper
+                                       var listnode4 = nodearraylist3
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pexprnode1 = new ASuperExpr.init_asuperexpr(
+#                                      end
+                                       var pexprnode1: nullable ASuperExpr = new ASuperExpr.init_asuperexpr(
                                                pqualifiednode2,
                                                tkwsupernode3,
                                                listnode5
@@ -14665,7 +14664,7 @@ private class ReduceAction334
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -14673,19 +14672,19 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tkwinitnode3 = nodearraylist4
-                                       assert tkwinitnode3 isa TKwinit
-                                       var listnode4 = nodearraylist5 
+                                       assert tkwinitnode3 isa nullable TKwinit
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pexprnode1 = new AInitExpr.init_ainitexpr(
+#                                      end
+                                       var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
                                                pexprnode2,
                                                tkwinitnode3,
                                                listnode5
@@ -14699,24 +14698,24 @@ private class ReduceAction335
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
-                                       var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tkwinitnode3 = nodearraylist1
-                                       assert tkwinitnode3 isa TKwinit
-                                       var listnode4 = nodearraylist2 
+                                       assert tkwinitnode3 isa nullable TKwinit
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pexprnode1 = new AInitExpr.init_ainitexpr(
+#                                      end
+                                       var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
                                                pexprnode2,
                                                tkwinitnode3,
                                                listnode5
@@ -14730,11 +14729,11 @@ private class ReduceAction336
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
                                        var pclosuredefnode1 = nodearraylist1
-                                       assert pclosuredefnode1 isa PClosureDef
+                                       assert pclosuredefnode1 isa nullable PClosureDef
                                        if pclosuredefnode1 != null then
                                                listnode2.add(pclosuredefnode1)
                                        end
@@ -14747,24 +14746,24 @@ private class ReduceAction337
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
                                        var pclosuredefnode1 = nodearraylist1
-                                       assert pclosuredefnode1 isa PClosureDef
-                                       var listnode2 = nodearraylist2 
+                                       assert pclosuredefnode1 isa nullable PClosureDef
+                                       var listnode2 = nodearraylist2
                                        assert listnode2 isa Array[Object]
                                        if pclosuredefnode1 != null then
                                                listnode3.add(pclosuredefnode1)
                                        end
-                                       if listnode2 != null then
+#                                      if listnode2 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode2
                                                else
                                                        listnode3.append(listnode2)
                                                end
-                                       end
+#                                      end
                                        node_list = listnode3
                                        p.push(p.go_to(29), node_list)
        end
@@ -14774,18 +14773,18 @@ private class ReduceAction338
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
                                        var tkwwithnode2 = nodearraylist1
-                                       assert tkwwithnode2 isa TKwwith
+                                       assert tkwwithnode2 isa nullable TKwwith
                                        var tkwdonode4 = nodearraylist2
-                                       assert tkwdonode4 isa TKwdo
+                                       assert tkwdonode4 isa nullable TKwdo
                                        var pexprnode5 = nodearraylist3
-                                       assert pexprnode5 isa PExpr
-                                       var pclosuredefnode1 = new AClosureDef.init_aclosuredef(
+                                       assert pexprnode5 isa nullable PExpr
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
                                                tkwwithnode2,
                                                listnode3,
                                                tkwdonode4,
@@ -14800,28 +14799,28 @@ private class ReduceAction339
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 tkwwithnode2 = nodearraylist1
-                                       assert tkwwithnode2 isa TKwwith
-                                       var listnode3 = nodearraylist2 
+                                       assert tkwwithnode2 isa nullable TKwwith
+                                       var listnode3 = nodearraylist2
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
+#                                      end
                                        var tkwdonode5 = nodearraylist3
-                                       assert tkwdonode5 isa TKwdo
+                                       assert tkwdonode5 isa nullable TKwdo
                                        var pexprnode6 = nodearraylist4
-                                       assert pexprnode6 isa PExpr
-                                       var pclosuredefnode1 = new AClosureDef.init_aclosuredef(
+                                       assert pexprnode6 isa nullable PExpr
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
                                                tkwwithnode2,
                                                listnode4,
                                                tkwdonode5,
@@ -14836,7 +14835,7 @@ private class ReduceAction340
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -14844,19 +14843,19 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
                                        var tkwwithnode2 = nodearraylist1
-                                       assert tkwwithnode2 isa TKwwith
+                                       assert tkwwithnode2 isa nullable TKwwith
                                        var tkwdonode4 = nodearraylist2
-                                       assert tkwdonode4 isa TKwdo
+                                       assert tkwdonode4 isa nullable TKwdo
                                        var listnode7 = new Array[Object]
                                        var pexprnode6 = nodearraylist4
-                                       assert pexprnode6 isa PExpr
+                                       assert pexprnode6 isa nullable PExpr
                                        if pexprnode6 != null then
                                                listnode7.add(pexprnode6)
                                        end
-                                       var pexprnode5 = new ABlockExpr.init_ablockexpr(
+                                       var pexprnode5: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
                                                listnode7
                                        )
-                                       var pclosuredefnode1 = new AClosureDef.init_aclosuredef(
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
                                                tkwwithnode2,
                                                listnode3,
                                                tkwdonode4,
@@ -14871,7 +14870,7 @@ private class ReduceAction341
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -14880,28 +14879,28 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
                                        var tkwwithnode2 = nodearraylist1
-                                       assert tkwwithnode2 isa TKwwith
+                                       assert tkwwithnode2 isa nullable TKwwith
                                        var tkwdonode4 = nodearraylist2
-                                       assert tkwdonode4 isa TKwdo
+                                       assert tkwdonode4 isa nullable TKwdo
                                        var listnode8 = new Array[Object]
                                        var pexprnode6 = nodearraylist4
-                                       assert pexprnode6 isa PExpr
-                                       var listnode7 = nodearraylist5 
+                                       assert pexprnode6 isa nullable PExpr
+                                       var listnode7 = nodearraylist5
                                        assert listnode7 isa Array[Object]
                                        if pexprnode6 != null then
                                                listnode8.add(pexprnode6)
                                        end
-                                       if listnode7 != null then
+#                                      if listnode7 != null then
                                                if listnode8.is_empty then
                                                        listnode8 = listnode7
                                                else
                                                        listnode8.append(listnode7)
                                                end
-                                       end
-                                       var pexprnode5 = new ABlockExpr.init_ablockexpr(
+#                                      end
+                                       var pexprnode5: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
                                                listnode8
                                        )
-                                       var pclosuredefnode1 = new AClosureDef.init_aclosuredef(
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
                                                tkwwithnode2,
                                                listnode3,
                                                tkwdonode4,
@@ -14916,7 +14915,7 @@ private class ReduceAction342
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -14925,28 +14924,28 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
                                        var tkwwithnode2 = nodearraylist1
-                                       assert tkwwithnode2 isa TKwwith
-                                       var listnode3 = nodearraylist2 
+                                       assert tkwwithnode2 isa nullable TKwwith
+                                       var listnode3 = nodearraylist2
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
+#                                      end
                                        var tkwdonode5 = nodearraylist3
-                                       assert tkwdonode5 isa TKwdo
+                                       assert tkwdonode5 isa nullable TKwdo
                                        var listnode8 = new Array[Object]
                                        var pexprnode7 = nodearraylist5
-                                       assert pexprnode7 isa PExpr
+                                       assert pexprnode7 isa nullable PExpr
                                        if pexprnode7 != null then
                                                listnode8.add(pexprnode7)
                                        end
-                                       var pexprnode6 = new ABlockExpr.init_ablockexpr(
+                                       var pexprnode6: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
                                                listnode8
                                        )
-                                       var pclosuredefnode1 = new AClosureDef.init_aclosuredef(
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
                                                tkwwithnode2,
                                                listnode4,
                                                tkwdonode5,
@@ -14961,7 +14960,7 @@ private class ReduceAction343
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -14971,37 +14970,37 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
                                        var tkwwithnode2 = nodearraylist1
-                                       assert tkwwithnode2 isa TKwwith
-                                       var listnode3 = nodearraylist2 
+                                       assert tkwwithnode2 isa nullable TKwwith
+                                       var listnode3 = nodearraylist2
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
+#                                      end
                                        var tkwdonode5 = nodearraylist3
-                                       assert tkwdonode5 isa TKwdo
+                                       assert tkwdonode5 isa nullable TKwdo
                                        var listnode9 = new Array[Object]
                                        var pexprnode7 = nodearraylist5
-                                       assert pexprnode7 isa PExpr
-                                       var listnode8 = nodearraylist6 
+                                       assert pexprnode7 isa nullable PExpr
+                                       var listnode8 = nodearraylist6
                                        assert listnode8 isa Array[Object]
                                        if pexprnode7 != null then
                                                listnode9.add(pexprnode7)
                                        end
-                                       if listnode8 != null then
+#                                      if listnode8 != null then
                                                if listnode9.is_empty then
                                                        listnode9 = listnode8
                                                else
                                                        listnode9.append(listnode8)
                                                end
-                                       end
-                                       var pexprnode6 = new ABlockExpr.init_ablockexpr(
+#                                      end
+                                       var pexprnode6: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
                                                listnode9
                                        )
-                                       var pclosuredefnode1 = new AClosureDef.init_aclosuredef(
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
                                                tkwwithnode2,
                                                listnode4,
                                                tkwdonode5,
@@ -15016,16 +15015,16 @@ private class ReduceAction344
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
                                        var tkwwithnode2 = nodearraylist1
-                                       assert tkwwithnode2 isa TKwwith
+                                       assert tkwwithnode2 isa nullable TKwwith
                                        var tkwdonode4 = nodearraylist2
-                                       assert tkwdonode4 isa TKwdo
-                                       var pclosuredefnode1 = new AClosureDef.init_aclosuredef(
+                                       assert tkwdonode4 isa nullable TKwdo
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
                                                tkwwithnode2,
                                                listnode3,
                                                tkwdonode4,
@@ -15040,26 +15039,26 @@ private class ReduceAction345
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 tkwwithnode2 = nodearraylist1
-                                       assert tkwwithnode2 isa TKwwith
-                                       var listnode3 = nodearraylist2 
+                                       assert tkwwithnode2 isa nullable TKwwith
+                                       var listnode3 = nodearraylist2
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
+#                                      end
                                        var tkwdonode5 = nodearraylist3
-                                       assert tkwdonode5 isa TKwdo
-                                       var pclosuredefnode1 = new AClosureDef.init_aclosuredef(
+                                       assert tkwdonode5 isa nullable TKwdo
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
                                                tkwwithnode2,
                                                listnode4,
                                                tkwdonode5,
@@ -15074,14 +15073,14 @@ private class ReduceAction346
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwvarnode2 = nodearraylist1
-                                       assert tkwvarnode2 isa TKwvar
+                                       assert tkwvarnode2 isa nullable TKwvar
                                        var tidnode3 = nodearraylist2
-                                       assert tidnode3 isa TId
-                                       var pexprnode1 = new AVardeclExpr.init_avardeclexpr(
+                                       assert tidnode3 isa nullable TId
+                                       var pexprnode1: nullable AVardeclExpr = new AVardeclExpr.init_avardeclexpr(
                                                tkwvarnode2,
                                                tidnode3,
                                                null,
@@ -15097,17 +15096,17 @@ private class ReduceAction347
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwvarnode2 = nodearraylist1
-                                       assert tkwvarnode2 isa TKwvar
+                                       assert tkwvarnode2 isa nullable TKwvar
                                        var tidnode3 = nodearraylist2
-                                       assert tidnode3 isa TId
+                                       assert tidnode3 isa nullable TId
                                        var ptypenode4 = nodearraylist3
-                                       assert ptypenode4 isa PType
-                                       var pexprnode1 = new AVardeclExpr.init_avardeclexpr(
+                                       assert ptypenode4 isa nullable PType
+                                       var pexprnode1: nullable AVardeclExpr = new AVardeclExpr.init_avardeclexpr(
                                                tkwvarnode2,
                                                tidnode3,
                                                ptypenode4,
@@ -15123,21 +15122,21 @@ private class ReduceAction348
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 tkwvarnode2 = nodearraylist1
-                                       assert tkwvarnode2 isa TKwvar
+                                       assert tkwvarnode2 isa nullable TKwvar
                                        var tidnode3 = nodearraylist2
-                                       assert tidnode3 isa TId
+                                       assert tidnode3 isa nullable TId
                                        var tassignnode5 = nodearraylist3
-                                       assert tassignnode5 isa TAssign
+                                       assert tassignnode5 isa nullable TAssign
                                        var pexprnode6 = nodearraylist5
-                                       assert pexprnode6 isa PExpr
-                                       var pexprnode1 = new AVardeclExpr.init_avardeclexpr(
+                                       assert pexprnode6 isa nullable PExpr
+                                       var pexprnode1: nullable AVardeclExpr = new AVardeclExpr.init_avardeclexpr(
                                                tkwvarnode2,
                                                tidnode3,
                                                null,
@@ -15153,7 +15152,7 @@ private class ReduceAction349
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -15161,16 +15160,16 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwvarnode2 = nodearraylist1
-                                       assert tkwvarnode2 isa TKwvar
+                                       assert tkwvarnode2 isa nullable TKwvar
                                        var tidnode3 = nodearraylist2
-                                       assert tidnode3 isa TId
+                                       assert tidnode3 isa nullable TId
                                        var ptypenode4 = nodearraylist3
-                                       assert ptypenode4 isa PType
+                                       assert ptypenode4 isa nullable PType
                                        var tassignnode5 = nodearraylist4
-                                       assert tassignnode5 isa TAssign
+                                       assert tassignnode5 isa nullable TAssign
                                        var pexprnode6 = nodearraylist6
-                                       assert pexprnode6 isa PExpr
-                                       var pexprnode1 = new AVardeclExpr.init_avardeclexpr(
+                                       assert pexprnode6 isa nullable PExpr
+                                       var pexprnode1: nullable AVardeclExpr = new AVardeclExpr.init_avardeclexpr(
                                                tkwvarnode2,
                                                tidnode3,
                                                ptypenode4,
@@ -15186,7 +15185,7 @@ private class ReduceAction350
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -15194,14 +15193,14 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tattridnode3 = nodearraylist4
-                                       assert tattridnode3 isa TAttrid
+                                       assert tattridnode3 isa nullable TAttrid
                                        var tassignnode4 = nodearraylist5
-                                       assert tassignnode4 isa TAssign
+                                       assert tassignnode4 isa nullable TAssign
                                        var pexprnode5 = nodearraylist6
-                                       assert pexprnode5 isa PExpr
-                                       var pexprnode1 = new AAttrAssignExpr.init_aattrassignexpr(
+                                       assert pexprnode5 isa nullable PExpr
+                                       var pexprnode1: nullable AAttrAssignExpr = new AAttrAssignExpr.init_aattrassignexpr(
                                                pexprnode2,
                                                tattridnode3,
                                                tassignnode4,
@@ -15216,19 +15215,19 @@ private class ReduceAction351
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tattridnode3 = nodearraylist1
-                                       assert tattridnode3 isa TAttrid
+                                       assert tattridnode3 isa nullable TAttrid
                                        var tassignnode4 = nodearraylist2
-                                       assert tassignnode4 isa TAssign
+                                       assert tassignnode4 isa nullable TAssign
                                        var pexprnode5 = nodearraylist3
-                                       assert pexprnode5 isa PExpr
-                                       var pexprnode1 = new AAttrAssignExpr.init_aattrassignexpr(
+                                       assert pexprnode5 isa nullable PExpr
+                                       var pexprnode1: nullable AAttrAssignExpr = new AAttrAssignExpr.init_aattrassignexpr(
                                                pexprnode2,
                                                tattridnode3,
                                                tassignnode4,
@@ -15243,7 +15242,7 @@ private class ReduceAction352
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -15253,23 +15252,23 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist5 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
+#                                      end
                                        var tassignnode6 = nodearraylist6
-                                       assert tassignnode6 isa TAssign
+                                       assert tassignnode6 isa nullable TAssign
                                        var pexprnode7 = nodearraylist7
-                                       assert pexprnode7 isa PExpr
-                                       var pexprnode1 = new ACallAssignExpr.init_acallassignexpr(
+                                       assert pexprnode7 isa nullable PExpr
+                                       var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -15285,30 +15284,30 @@ private class ReduceAction353
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
-                                       var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist2 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
+#                                      end
                                        var tassignnode6 = nodearraylist3
-                                       assert tassignnode6 isa TAssign
+                                       assert tassignnode6 isa nullable TAssign
                                        var pexprnode7 = nodearraylist4
-                                       assert pexprnode7 isa PExpr
-                                       var pexprnode1 = new ACallAssignExpr.init_acallassignexpr(
+                                       assert pexprnode7 isa nullable PExpr
+                                       var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -15324,28 +15323,28 @@ private class ReduceAction354
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
-                                       var listnode3 = nodearraylist2 
+                                       assert pexprnode2 isa nullable PExpr
+                                       var listnode3 = nodearraylist2
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
+#                                      end
                                        var tassignnode5 = nodearraylist3
-                                       assert tassignnode5 isa TAssign
+                                       assert tassignnode5 isa nullable TAssign
                                        var pexprnode6 = nodearraylist4
-                                       assert pexprnode6 isa PExpr
-                                       var pexprnode1 = new ABraAssignExpr.init_abraassignexpr(
+                                       assert pexprnode6 isa nullable PExpr
+                                       var pexprnode1: nullable ABraAssignExpr = new ABraAssignExpr.init_abraassignexpr(
                                                pexprnode2,
                                                listnode4,
                                                tassignnode5,
@@ -15360,7 +15359,7 @@ private class ReduceAction355
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -15368,14 +15367,14 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tattridnode3 = nodearraylist4
-                                       assert tattridnode3 isa TAttrid
+                                       assert tattridnode3 isa nullable TAttrid
                                        var passignopnode4 = nodearraylist5
-                                       assert passignopnode4 isa PAssignOp
+                                       assert passignopnode4 isa nullable PAssignOp
                                        var pexprnode5 = nodearraylist6
-                                       assert pexprnode5 isa PExpr
-                                       var pexprnode1 = new AAttrReassignExpr.init_aattrreassignexpr(
+                                       assert pexprnode5 isa nullable PExpr
+                                       var pexprnode1: nullable AAttrReassignExpr = new AAttrReassignExpr.init_aattrreassignexpr(
                                                pexprnode2,
                                                tattridnode3,
                                                passignopnode4,
@@ -15390,19 +15389,19 @@ private class ReduceAction356
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tattridnode3 = nodearraylist1
-                                       assert tattridnode3 isa TAttrid
+                                       assert tattridnode3 isa nullable TAttrid
                                        var passignopnode4 = nodearraylist2
-                                       assert passignopnode4 isa PAssignOp
+                                       assert passignopnode4 isa nullable PAssignOp
                                        var pexprnode5 = nodearraylist3
-                                       assert pexprnode5 isa PExpr
-                                       var pexprnode1 = new AAttrReassignExpr.init_aattrreassignexpr(
+                                       assert pexprnode5 isa nullable PExpr
+                                       var pexprnode1: nullable AAttrReassignExpr = new AAttrReassignExpr.init_aattrreassignexpr(
                                                pexprnode2,
                                                tattridnode3,
                                                passignopnode4,
@@ -15417,7 +15416,7 @@ private class ReduceAction357
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -15427,23 +15426,23 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist5 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
+#                                      end
                                        var passignopnode6 = nodearraylist6
-                                       assert passignopnode6 isa PAssignOp
+                                       assert passignopnode6 isa nullable PAssignOp
                                        var pexprnode7 = nodearraylist7
-                                       assert pexprnode7 isa PExpr
-                                       var pexprnode1 = new ACallReassignExpr.init_acallreassignexpr(
+                                       assert pexprnode7 isa nullable PExpr
+                                       var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -15459,30 +15458,30 @@ private class ReduceAction358
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
-                                       var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist2 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
+#                                      end
                                        var passignopnode6 = nodearraylist3
-                                       assert passignopnode6 isa PAssignOp
+                                       assert passignopnode6 isa nullable PAssignOp
                                        var pexprnode7 = nodearraylist4
-                                       assert pexprnode7 isa PExpr
-                                       var pexprnode1 = new ACallReassignExpr.init_acallreassignexpr(
+                                       assert pexprnode7 isa nullable PExpr
+                                       var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -15498,28 +15497,28 @@ private class ReduceAction359
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
-                                       var listnode3 = nodearraylist2 
+                                       assert pexprnode2 isa nullable PExpr
+                                       var listnode3 = nodearraylist2
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
+#                                      end
                                        var passignopnode5 = nodearraylist3
-                                       assert passignopnode5 isa PAssignOp
+                                       assert passignopnode5 isa nullable PAssignOp
                                        var pexprnode6 = nodearraylist4
-                                       assert pexprnode6 isa PExpr
-                                       var pexprnode1 = new ABraReassignExpr.init_abrareassignexpr(
+                                       assert pexprnode6 isa nullable PExpr
+                                       var pexprnode1: nullable ABraReassignExpr = new ABraReassignExpr.init_abrareassignexpr(
                                                pexprnode2,
                                                listnode4,
                                                passignopnode5,
@@ -15534,11 +15533,11 @@ private class ReduceAction360
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tpluseqnode2 = nodearraylist1
-                                       assert tpluseqnode2 isa TPluseq
-                                       var passignopnode1 = new APlusAssignOp.init_aplusassignop(
+                                       assert tpluseqnode2 isa nullable TPluseq
+                                       var passignopnode1: nullable APlusAssignOp = new APlusAssignOp.init_aplusassignop(
                                                tpluseqnode2
                                        )
                                        node_list = passignopnode1
@@ -15550,11 +15549,11 @@ private class ReduceAction361
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tminuseqnode2 = nodearraylist1
-                                       assert tminuseqnode2 isa TMinuseq
-                                       var passignopnode1 = new AMinusAssignOp.init_aminusassignop(
+                                       assert tminuseqnode2 isa nullable TMinuseq
+                                       var passignopnode1: nullable AMinusAssignOp = new AMinusAssignOp.init_aminusassignop(
                                                tminuseqnode2
                                        )
                                        node_list = passignopnode1
@@ -15566,14 +15565,14 @@ private class ReduceAction362
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwdonode2 = nodearraylist1
-                                       assert tkwdonode2 isa TKwdo
+                                       assert tkwdonode2 isa nullable TKwdo
                                        var pexprnode3 = nodearraylist2
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new ADoExpr.init_adoexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable ADoExpr = new ADoExpr.init_adoexpr(
                                                tkwdonode2,
                                                pexprnode3
                                        )
@@ -15586,7 +15585,7 @@ private class ReduceAction363
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -15596,14 +15595,14 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwifnode2 = nodearraylist1
-                                       assert tkwifnode2 isa TKwif
+                                       assert tkwifnode2 isa nullable TKwif
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
+                                       assert pexprnode3 isa nullable PExpr
                                        var pexprnode4 = nodearraylist6
-                                       assert pexprnode4 isa PExpr
+                                       assert pexprnode4 isa nullable PExpr
                                        var pexprnode5 = nodearraylist8
-                                       assert pexprnode5 isa PExpr
-                                       var pexprnode1 = new AIfExpr.init_aifexpr(
+                                       assert pexprnode5 isa nullable PExpr
+                                       var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
                                                tkwifnode2,
                                                pexprnode3,
                                                pexprnode4,
@@ -15618,7 +15617,7 @@ private class ReduceAction364
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -15626,12 +15625,12 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwifnode2 = nodearraylist1
-                                       assert tkwifnode2 isa TKwif
+                                       assert tkwifnode2 isa nullable TKwif
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
+                                       assert pexprnode3 isa nullable PExpr
                                        var pexprnode4 = nodearraylist6
-                                       assert pexprnode4 isa PExpr
-                                       var pexprnode1 = new AIfExpr.init_aifexpr(
+                                       assert pexprnode4 isa nullable PExpr
+                                       var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
                                                tkwifnode2,
                                                pexprnode3,
                                                pexprnode4,
@@ -15646,7 +15645,7 @@ private class ReduceAction365
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -15657,21 +15656,21 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwifnode2 = nodearraylist1
-                                       assert tkwifnode2 isa TKwif
+                                       assert tkwifnode2 isa nullable TKwif
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
+                                       assert pexprnode3 isa nullable PExpr
                                        var listnode6 = new Array[Object]
                                        var pexprnode5 = nodearraylist7
-                                       assert pexprnode5 isa PExpr
+                                       assert pexprnode5 isa nullable PExpr
                                        if pexprnode5 != null then
                                                listnode6.add(pexprnode5)
                                        end
-                                       var pexprnode4 = new ABlockExpr.init_ablockexpr(
+                                       var pexprnode4: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
                                                listnode6
                                        )
                                        var pexprnode7 = nodearraylist9
-                                       assert pexprnode7 isa PExpr
-                                       var pexprnode1 = new AIfExpr.init_aifexpr(
+                                       assert pexprnode7 isa nullable PExpr
+                                       var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
                                                tkwifnode2,
                                                pexprnode3,
                                                pexprnode4,
@@ -15686,7 +15685,7 @@ private class ReduceAction366
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
@@ -15698,30 +15697,30 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwifnode2 = nodearraylist1
-                                       assert tkwifnode2 isa TKwif
+                                       assert tkwifnode2 isa nullable TKwif
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
+                                       assert pexprnode3 isa nullable PExpr
                                        var listnode7 = new Array[Object]
                                        var pexprnode5 = nodearraylist7
-                                       assert pexprnode5 isa PExpr
-                                       var listnode6 = nodearraylist8 
+                                       assert pexprnode5 isa nullable PExpr
+                                       var listnode6 = nodearraylist8
                                        assert listnode6 isa Array[Object]
                                        if pexprnode5 != null then
                                                listnode7.add(pexprnode5)
                                        end
-                                       if listnode6 != null then
+#                                      if listnode6 != null then
                                                if listnode7.is_empty then
                                                        listnode7 = listnode6
                                                else
                                                        listnode7.append(listnode6)
                                                end
-                                       end
-                                       var pexprnode4 = new ABlockExpr.init_ablockexpr(
+#                                      end
+                                       var pexprnode4: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
                                                listnode7
                                        )
                                        var pexprnode8 = nodearraylist10
-                                       assert pexprnode8 isa PExpr
-                                       var pexprnode1 = new AIfExpr.init_aifexpr(
+                                       assert pexprnode8 isa nullable PExpr
+                                       var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
                                                tkwifnode2,
                                                pexprnode3,
                                                pexprnode4,
@@ -15736,7 +15735,7 @@ private class ReduceAction367
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -15744,12 +15743,12 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwifnode2 = nodearraylist1
-                                       assert tkwifnode2 isa TKwif
+                                       assert tkwifnode2 isa nullable TKwif
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
+                                       assert pexprnode3 isa nullable PExpr
                                        var pexprnode5 = nodearraylist6
-                                       assert pexprnode5 isa PExpr
-                                       var pexprnode1 = new AIfExpr.init_aifexpr(
+                                       assert pexprnode5 isa nullable PExpr
+                                       var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
                                                tkwifnode2,
                                                pexprnode3,
                                                null,
@@ -15764,7 +15763,7 @@ private class ReduceAction368
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -15773,12 +15772,12 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwifnode2 = nodearraylist1
-                                       assert tkwifnode2 isa TKwif
+                                       assert tkwifnode2 isa nullable TKwif
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
+                                       assert pexprnode3 isa nullable PExpr
                                        var pexprnode5 = nodearraylist7
-                                       assert pexprnode5 isa PExpr
-                                       var pexprnode1 = new AIfExpr.init_aifexpr(
+                                       assert pexprnode5 isa nullable PExpr
+                                       var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
                                                tkwifnode2,
                                                pexprnode3,
                                                null,
@@ -15793,11 +15792,11 @@ private class ReduceAction369
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist2
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(37), node_list)
        end
@@ -15807,7 +15806,7 @@ private class ReduceAction370
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        node_list = null
                                        p.push(p.go_to(37), node_list)
@@ -15818,7 +15817,7 @@ private class ReduceAction371
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -15826,14 +15825,14 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwwhilenode2 = nodearraylist1
-                                       assert tkwwhilenode2 isa TKwwhile
+                                       assert tkwwhilenode2 isa nullable TKwwhile
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
+                                       assert pexprnode3 isa nullable PExpr
                                        var tkwdonode4 = nodearraylist5
-                                       assert tkwdonode4 isa TKwdo
+                                       assert tkwdonode4 isa nullable TKwdo
                                        var pexprnode5 = nodearraylist6
-                                       assert pexprnode5 isa PExpr
-                                       var pexprnode1 = new AWhileExpr.init_awhileexpr(
+                                       assert pexprnode5 isa nullable PExpr
+                                       var pexprnode1: nullable AWhileExpr = new AWhileExpr.init_awhileexpr(
                                                tkwwhilenode2,
                                                pexprnode3,
                                                tkwdonode4,
@@ -15848,7 +15847,7 @@ private class ReduceAction372
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
@@ -15860,16 +15859,16 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwfornode2 = nodearraylist1
-                                       assert tkwfornode2 isa TKwfor
+                                       assert tkwfornode2 isa nullable TKwfor
                                        var tidnode3 = nodearraylist3
-                                       assert tidnode3 isa TId
+                                       assert tidnode3 isa nullable TId
                                        var pexprnode4 = nodearraylist7
-                                       assert pexprnode4 isa PExpr
+                                       assert pexprnode4 isa nullable PExpr
                                        var tkwdonode5 = nodearraylist9
-                                       assert tkwdonode5 isa TKwdo
+                                       assert tkwdonode5 isa nullable TKwdo
                                        var pexprnode6 = nodearraylist10
-                                       assert pexprnode6 isa PExpr
-                                       var pexprnode1 = new AForExpr.init_aforexpr(
+                                       assert pexprnode6 isa nullable PExpr
+                                       var pexprnode1: nullable AForExpr = new AForExpr.init_aforexpr(
                                                tkwfornode2,
                                                tidnode3,
                                                pexprnode4,
@@ -15885,14 +15884,14 @@ private class ReduceAction373
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwassertnode2 = nodearraylist1
-                                       assert tkwassertnode2 isa TKwassert
+                                       assert tkwassertnode2 isa nullable TKwassert
                                        var pexprnode4 = nodearraylist2
-                                       assert pexprnode4 isa PExpr
-                                       var pexprnode1 = new AAssertExpr.init_aassertexpr(
+                                       assert pexprnode4 isa nullable PExpr
+                                       var pexprnode1: nullable AAssertExpr = new AAssertExpr.init_aassertexpr(
                                                tkwassertnode2,
                                                null,
                                                pexprnode4
@@ -15906,17 +15905,17 @@ private class ReduceAction374
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwassertnode2 = nodearraylist1
-                                       assert tkwassertnode2 isa TKwassert
+                                       assert tkwassertnode2 isa nullable TKwassert
                                        var tidnode3 = nodearraylist2
-                                       assert tidnode3 isa TId
+                                       assert tidnode3 isa nullable TId
                                        var pexprnode4 = nodearraylist3
-                                       assert pexprnode4 isa PExpr
-                                       var pexprnode1 = new AAssertExpr.init_aassertexpr(
+                                       assert pexprnode4 isa nullable PExpr
+                                       var pexprnode1: nullable AAssertExpr = new AAssertExpr.init_aassertexpr(
                                                tkwassertnode2,
                                                tidnode3,
                                                pexprnode4
@@ -15930,11 +15929,11 @@ private class ReduceAction375
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tidnode1 = nodearraylist1
-                                       assert tidnode1 isa TId
+                                       assert tidnode1 isa nullable TId
                                        node_list = tidnode1
                                        p.push(p.go_to(41), node_list)
        end
@@ -15944,10 +15943,10 @@ private class ReduceAction376
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(42), node_list)
        end
@@ -15957,7 +15956,7 @@ private class ReduceAction377
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -15967,28 +15966,28 @@ special ReduceAction
                                        var listnode5 = new Array[Object]
                                        var listnode7 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist5 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var listnode6 = nodearraylist6 
+#                                      end
+                                       var listnode6 = nodearraylist6
                                        assert listnode6 isa Array[Object]
-                                       if listnode6 != null then
+#                                      if listnode6 != null then
                                                if listnode7.is_empty then
                                                        listnode7 = listnode6
                                                else
                                                        listnode7.append(listnode6)
                                                end
-                                       end
-                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -16003,35 +16002,35 @@ private class ReduceAction378
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var listnode7 = new Array[Object]
-                                       var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist2 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var listnode6 = nodearraylist3 
+#                                      end
+                                       var listnode6 = nodearraylist3
                                        assert listnode6 isa Array[Object]
-                                       if listnode6 != null then
+#                                      if listnode6 != null then
                                                if listnode7.is_empty then
                                                        listnode7 = listnode6
                                                else
                                                        listnode7.append(listnode6)
                                                end
-                                       end
-                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -16046,33 +16045,33 @@ private class ReduceAction379
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
                                        var listnode6 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
-                                       var listnode3 = nodearraylist2 
+                                       assert pexprnode2 isa nullable PExpr
+                                       var listnode3 = nodearraylist2
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
-                                       var listnode5 = nodearraylist3 
+#                                      end
+                                       var listnode5 = nodearraylist3
                                        assert listnode5 isa Array[Object]
-                                       if listnode5 != null then
+#                                      if listnode5 != null then
                                                if listnode6.is_empty then
                                                        listnode6 = listnode5
                                                else
                                                        listnode6.append(listnode5)
                                                end
-                                       end
-                                       var pexprnode1 = new ABraExpr.init_abraexpr(
+#                                      end
+                                       var pexprnode1: nullable ABraExpr = new ABraExpr.init_abraexpr(
                                                pexprnode2,
                                                listnode4,
                                                listnode6
@@ -16086,10 +16085,10 @@ private class ReduceAction380
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(43), node_list)
        end
@@ -16099,7 +16098,7 @@ private class ReduceAction381
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
@@ -16112,18 +16111,18 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwifnode2 = nodearraylist1
-                                       assert tkwifnode2 isa TKwif
+                                       assert tkwifnode2 isa nullable TKwif
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
+                                       assert pexprnode3 isa nullable PExpr
                                        var tkwthennode4 = nodearraylist5
-                                       assert tkwthennode4 isa TKwthen
+                                       assert tkwthennode4 isa nullable TKwthen
                                        var pexprnode5 = nodearraylist7
-                                       assert pexprnode5 isa PExpr
+                                       assert pexprnode5 isa nullable PExpr
                                        var tkwelsenode6 = nodearraylist9
-                                       assert tkwelsenode6 isa TKwelse
+                                       assert tkwelsenode6 isa nullable TKwelse
                                        var pexprnode7 = nodearraylist11
-                                       assert pexprnode7 isa PExpr
-                                       var pexprnode1 = new AIfexprExpr.init_aifexprexpr(
+                                       assert pexprnode7 isa nullable PExpr
+                                       var pexprnode1: nullable AIfexprExpr = new AIfexprExpr.init_aifexprexpr(
                                                tkwifnode2,
                                                pexprnode3,
                                                tkwthennode4,
@@ -16140,10 +16139,10 @@ private class ReduceAction382
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(44), node_list)
        end
@@ -16153,16 +16152,16 @@ private class ReduceAction383
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AOrExpr.init_aorexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AOrExpr = new AOrExpr.init_aorexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -16175,16 +16174,16 @@ private class ReduceAction384
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AAndExpr.init_aandexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AAndExpr = new AAndExpr.init_aandexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -16197,10 +16196,10 @@ private class ReduceAction385
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(45), node_list)
        end
@@ -16210,15 +16209,15 @@ private class ReduceAction386
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwnotnode2 = nodearraylist1
-                                       assert tkwnotnode2 isa TKwnot
+                                       assert tkwnotnode2 isa nullable TKwnot
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new ANotExpr.init_anotexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable ANotExpr = new ANotExpr.init_anotexpr(
                                                tkwnotnode2,
                                                pexprnode3
                                        )
@@ -16231,10 +16230,10 @@ private class ReduceAction387
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(46), node_list)
        end
@@ -16244,16 +16243,16 @@ private class ReduceAction388
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AEqExpr.init_aeqexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AEqExpr = new AEqExpr.init_aeqexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -16266,16 +16265,16 @@ private class ReduceAction389
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AEeExpr.init_aeeexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AEeExpr = new AEeExpr.init_aeeexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -16288,16 +16287,16 @@ private class ReduceAction390
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new ANeExpr.init_aneexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable ANeExpr = new ANeExpr.init_aneexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -16310,16 +16309,16 @@ private class ReduceAction391
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new ALtExpr.init_altexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable ALtExpr = new ALtExpr.init_altexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -16332,16 +16331,16 @@ private class ReduceAction392
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new ALeExpr.init_aleexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable ALeExpr = new ALeExpr.init_aleexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -16354,16 +16353,16 @@ private class ReduceAction393
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AGtExpr.init_agtexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AGtExpr = new AGtExpr.init_agtexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -16376,16 +16375,16 @@ private class ReduceAction394
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AGeExpr.init_ageexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AGeExpr = new AGeExpr.init_ageexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -16398,16 +16397,16 @@ private class ReduceAction395
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AStarshipExpr.init_astarshipexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AStarshipExpr = new AStarshipExpr.init_astarshipexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -16420,16 +16419,16 @@ private class ReduceAction396
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var ptypenode3 = nodearraylist4
-                                       assert ptypenode3 isa PType
-                                       var pexprnode1 = new AIsaExpr.init_aisaexpr(
+                                       assert ptypenode3 isa nullable PType
+                                       var pexprnode1: nullable AIsaExpr = new AIsaExpr.init_aisaexpr(
                                                pexprnode2,
                                                ptypenode3
                                        )
@@ -16442,10 +16441,10 @@ private class ReduceAction397
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(47), node_list)
        end
@@ -16455,16 +16454,16 @@ private class ReduceAction398
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new APlusExpr.init_aplusexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable APlusExpr = new APlusExpr.init_aplusexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -16477,16 +16476,16 @@ private class ReduceAction399
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AMinusExpr.init_aminusexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AMinusExpr = new AMinusExpr.init_aminusexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -16499,10 +16498,10 @@ private class ReduceAction400
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(48), node_list)
        end
@@ -16512,16 +16511,16 @@ private class ReduceAction401
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AStarExpr.init_astarexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AStarExpr = new AStarExpr.init_astarexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -16534,16 +16533,16 @@ private class ReduceAction402
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new ASlashExpr.init_aslashexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable ASlashExpr = new ASlashExpr.init_aslashexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -16556,16 +16555,16 @@ private class ReduceAction403
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new APercentExpr.init_apercentexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable APercentExpr = new APercentExpr.init_apercentexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -16578,10 +16577,10 @@ private class ReduceAction404
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(49), node_list)
        end
@@ -16591,15 +16590,15 @@ private class ReduceAction405
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tminusnode2 = nodearraylist1
-                                       assert tminusnode2 isa TMinus
+                                       assert tminusnode2 isa nullable TMinus
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AUminusExpr.init_auminusexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AUminusExpr = new AUminusExpr.init_auminusexpr(
                                                tminusnode2,
                                                pexprnode3
                                        )
@@ -16612,15 +16611,15 @@ private class ReduceAction406
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwoncenode2 = nodearraylist1
-                                       assert tkwoncenode2 isa TKwonce
+                                       assert tkwoncenode2 isa nullable TKwonce
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AOnceExpr.init_aonceexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AOnceExpr = new AOnceExpr.init_aonceexpr(
                                                tkwoncenode2,
                                                pexprnode3
                                        )
@@ -16633,10 +16632,10 @@ private class ReduceAction407
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(50), node_list)
        end
@@ -16646,26 +16645,26 @@ private class ReduceAction408
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode6 = new Array[Object]
                                        var tkwnewnode2 = nodearraylist1
-                                       assert tkwnewnode2 isa TKwnew
+                                       assert tkwnewnode2 isa nullable TKwnew
                                        var ptypenode3 = nodearraylist3
-                                       assert ptypenode3 isa PType
-                                       var listnode5 = nodearraylist4 
+                                       assert ptypenode3 isa nullable PType
+                                       var listnode5 = nodearraylist4
                                        assert listnode5 isa Array[Object]
-                                       if listnode5 != null then
+#                                      if listnode5 != null then
                                                if listnode6.is_empty then
                                                        listnode6 = listnode5
                                                else
                                                        listnode6.append(listnode5)
                                                end
-                                       end
-                                       var pexprnode1 = new ANewExpr.init_anewexpr(
+#                                      end
+                                       var pexprnode1: nullable ANewExpr = new ANewExpr.init_anewexpr(
                                                tkwnewnode2,
                                                ptypenode3,
                                                null,
@@ -16680,19 +16679,19 @@ private class ReduceAction409
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 tkwissetnode2 = nodearraylist1
-                                       assert tkwissetnode2 isa TKwisset
+                                       assert tkwissetnode2 isa nullable TKwisset
                                        var pexprnode3 = nodearraylist2
-                                       assert pexprnode3 isa PExpr
+                                       assert pexprnode3 isa nullable PExpr
                                        var tattridnode4 = nodearraylist5
-                                       assert tattridnode4 isa TAttrid
-                                       var pexprnode1 = new AIssetAttrExpr.init_aissetattrexpr(
+                                       assert tattridnode4 isa nullable TAttrid
+                                       var pexprnode1: nullable AIssetAttrExpr = new AIssetAttrExpr.init_aissetattrexpr(
                                                tkwissetnode2,
                                                pexprnode3,
                                                tattridnode4
@@ -16706,16 +16705,16 @@ private class ReduceAction410
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwissetnode2 = nodearraylist1
-                                       assert tkwissetnode2 isa TKwisset
-                                       var pexprnode3 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       assert tkwissetnode2 isa nullable TKwisset
+                                       var pexprnode3: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tattridnode4 = nodearraylist2
-                                       assert tattridnode4 isa TAttrid
-                                       var pexprnode1 = new AIssetAttrExpr.init_aissetattrexpr(
+                                       assert tattridnode4 isa nullable TAttrid
+                                       var pexprnode1: nullable AIssetAttrExpr = new AIssetAttrExpr.init_aissetattrexpr(
                                                tkwissetnode2,
                                                pexprnode3,
                                                tattridnode4
@@ -16729,16 +16728,16 @@ private class ReduceAction411
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tattridnode3 = nodearraylist4
-                                       assert tattridnode3 isa TAttrid
-                                       var pexprnode1 = new AAttrExpr.init_aattrexpr(
+                                       assert tattridnode3 isa nullable TAttrid
+                                       var pexprnode1: nullable AAttrExpr = new AAttrExpr.init_aattrexpr(
                                                pexprnode2,
                                                tattridnode3
                                        )
@@ -16751,13 +16750,13 @@ private class ReduceAction412
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tattridnode3 = nodearraylist1
-                                       assert tattridnode3 isa TAttrid
-                                       var pexprnode1 = new AAttrExpr.init_aattrexpr(
+                                       assert tattridnode3 isa nullable TAttrid
+                                       var pexprnode1: nullable AAttrExpr = new AAttrExpr.init_aattrexpr(
                                                pexprnode2,
                                                tattridnode3
                                        )
@@ -16770,7 +16769,7 @@ private class ReduceAction413
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -16779,19 +16778,19 @@ special ReduceAction
                                        var listnode5 = new Array[Object]
                                        var listnode6 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist5 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -16806,25 +16805,25 @@ private class ReduceAction414
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var listnode6 = new Array[Object]
-                                       var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist2 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -16839,22 +16838,22 @@ private class ReduceAction415
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var tkwsupernode3 = nodearraylist1
-                                       assert tkwsupernode3 isa TKwsuper
-                                       var listnode4 = nodearraylist2 
+                                       assert tkwsupernode3 isa nullable TKwsuper
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pexprnode1 = new ASuperExpr.init_asuperexpr(
+#                                      end
+                                       var pexprnode1: nullable ASuperExpr = new ASuperExpr.init_asuperexpr(
                                                null,
                                                tkwsupernode3,
                                                listnode5
@@ -16868,25 +16867,25 @@ private class ReduceAction416
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var pqualifiednode2 = nodearraylist1
-                                       assert pqualifiednode2 isa PQualified
+                                       assert pqualifiednode2 isa nullable PQualified
                                        var tkwsupernode3 = nodearraylist2
-                                       assert tkwsupernode3 isa TKwsuper
-                                       var listnode4 = nodearraylist3 
+                                       assert tkwsupernode3 isa nullable TKwsuper
+                                       var listnode4 = nodearraylist3
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pexprnode1 = new ASuperExpr.init_asuperexpr(
+#                                      end
+                                       var pexprnode1: nullable ASuperExpr = new ASuperExpr.init_asuperexpr(
                                                pqualifiednode2,
                                                tkwsupernode3,
                                                listnode5
@@ -16900,7 +16899,7 @@ private class ReduceAction417
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -16908,19 +16907,19 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tkwinitnode3 = nodearraylist4
-                                       assert tkwinitnode3 isa TKwinit
-                                       var listnode4 = nodearraylist5 
+                                       assert tkwinitnode3 isa nullable TKwinit
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pexprnode1 = new AInitExpr.init_ainitexpr(
+#                                      end
+                                       var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
                                                pexprnode2,
                                                tkwinitnode3,
                                                listnode5
@@ -16934,24 +16933,24 @@ private class ReduceAction418
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
-                                       var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tkwinitnode3 = nodearraylist1
-                                       assert tkwinitnode3 isa TKwinit
-                                       var listnode4 = nodearraylist2 
+                                       assert tkwinitnode3 isa nullable TKwinit
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pexprnode1 = new AInitExpr.init_ainitexpr(
+#                                      end
+                                       var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
                                                pexprnode2,
                                                tkwinitnode3,
                                                listnode5
@@ -16965,23 +16964,23 @@ private class ReduceAction419
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
                                        var listnode5 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
-                                       var listnode3 = nodearraylist2 
+                                       assert pexprnode2 isa nullable PExpr
+                                       var listnode3 = nodearraylist2
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
-                                       var pexprnode1 = new ABraExpr.init_abraexpr(
+#                                      end
+                                       var pexprnode1: nullable ABraExpr = new ABraExpr.init_abraexpr(
                                                pexprnode2,
                                                listnode4,
                                                listnode5
@@ -16995,7 +16994,7 @@ private class ReduceAction420
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -17005,21 +17004,21 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode6 = new Array[Object]
                                        var tkwnewnode2 = nodearraylist1
-                                       assert tkwnewnode2 isa TKwnew
+                                       assert tkwnewnode2 isa nullable TKwnew
                                        var ptypenode3 = nodearraylist3
-                                       assert ptypenode3 isa PType
+                                       assert ptypenode3 isa nullable PType
                                        var tidnode4 = nodearraylist6
-                                       assert tidnode4 isa TId
-                                       var listnode5 = nodearraylist7 
+                                       assert tidnode4 isa nullable TId
+                                       var listnode5 = nodearraylist7
                                        assert listnode5 isa Array[Object]
-                                       if listnode5 != null then
+#                                      if listnode5 != null then
                                                if listnode6.is_empty then
                                                        listnode6 = listnode5
                                                else
                                                        listnode6.append(listnode5)
                                                end
-                                       end
-                                       var pexprnode1 = new ANewExpr.init_anewexpr(
+#                                      end
+                                       var pexprnode1: nullable ANewExpr = new ANewExpr.init_anewexpr(
                                                tkwnewnode2,
                                                ptypenode3,
                                                tidnode4,
@@ -17034,7 +17033,7 @@ private class ReduceAction421
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -17045,10 +17044,10 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist3
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist7
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new ACrangeExpr.init_acrangeexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable ACrangeExpr = new ACrangeExpr.init_acrangeexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -17061,7 +17060,7 @@ private class ReduceAction422
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -17072,10 +17071,10 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist3
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist7
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AOrangeExpr.init_aorangeexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AOrangeExpr = new AOrangeExpr.init_aorangeexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -17088,19 +17087,19 @@ private class ReduceAction423
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
-                                       var listnode2 = nodearraylist1 
+                                       var listnode2 = nodearraylist1
                                        assert listnode2 isa Array[Object]
-                                       if listnode2 != null then
+#                                      if listnode2 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode2
                                                else
                                                        listnode3.append(listnode2)
                                                end
-                                       end
-                                       var pexprnode1 = new AArrayExpr.init_aarrayexpr(
+#                                      end
+                                       var pexprnode1: nullable AArrayExpr = new AArrayExpr.init_aarrayexpr(
                                                listnode3
                                        )
                                        node_list = pexprnode1
@@ -17112,11 +17111,11 @@ private class ReduceAction424
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tkwselfnode2 = nodearraylist1
-                                       assert tkwselfnode2 isa TKwself
-                                       var pexprnode1 = new ASelfExpr.init_aselfexpr(
+                                       assert tkwselfnode2 isa nullable TKwself
+                                       var pexprnode1: nullable ASelfExpr = new ASelfExpr.init_aselfexpr(
                                                tkwselfnode2
                                        )
                                        node_list = pexprnode1
@@ -17128,11 +17127,11 @@ private class ReduceAction425
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tkwtruenode2 = nodearraylist1
-                                       assert tkwtruenode2 isa TKwtrue
-                                       var pexprnode1 = new ATrueExpr.init_atrueexpr(
+                                       assert tkwtruenode2 isa nullable TKwtrue
+                                       var pexprnode1: nullable ATrueExpr = new ATrueExpr.init_atrueexpr(
                                                tkwtruenode2
                                        )
                                        node_list = pexprnode1
@@ -17144,11 +17143,11 @@ private class ReduceAction426
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tkwfalsenode2 = nodearraylist1
-                                       assert tkwfalsenode2 isa TKwfalse
-                                       var pexprnode1 = new AFalseExpr.init_afalseexpr(
+                                       assert tkwfalsenode2 isa nullable TKwfalse
+                                       var pexprnode1: nullable AFalseExpr = new AFalseExpr.init_afalseexpr(
                                                tkwfalsenode2
                                        )
                                        node_list = pexprnode1
@@ -17160,11 +17159,11 @@ private class ReduceAction427
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tkwnullnode2 = nodearraylist1
-                                       assert tkwnullnode2 isa TKwnull
-                                       var pexprnode1 = new ANullExpr.init_anullexpr(
+                                       assert tkwnullnode2 isa nullable TKwnull
+                                       var pexprnode1: nullable ANullExpr = new ANullExpr.init_anullexpr(
                                                tkwnullnode2
                                        )
                                        node_list = pexprnode1
@@ -17176,11 +17175,11 @@ private class ReduceAction428
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tnumbernode2 = nodearraylist1
-                                       assert tnumbernode2 isa TNumber
-                                       var pexprnode1 = new AIntExpr.init_aintexpr(
+                                       assert tnumbernode2 isa nullable TNumber
+                                       var pexprnode1: nullable AIntExpr = new AIntExpr.init_aintexpr(
                                                tnumbernode2
                                        )
                                        node_list = pexprnode1
@@ -17192,11 +17191,11 @@ private class ReduceAction429
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tfloatnode2 = nodearraylist1
-                                       assert tfloatnode2 isa TFloat
-                                       var pexprnode1 = new AFloatExpr.init_afloatexpr(
+                                       assert tfloatnode2 isa nullable TFloat
+                                       var pexprnode1: nullable AFloatExpr = new AFloatExpr.init_afloatexpr(
                                                tfloatnode2
                                        )
                                        node_list = pexprnode1
@@ -17208,11 +17207,11 @@ private class ReduceAction430
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tcharnode2 = nodearraylist1
-                                       assert tcharnode2 isa TChar
-                                       var pexprnode1 = new ACharExpr.init_acharexpr(
+                                       assert tcharnode2 isa nullable TChar
+                                       var pexprnode1: nullable ACharExpr = new ACharExpr.init_acharexpr(
                                                tcharnode2
                                        )
                                        node_list = pexprnode1
@@ -17224,11 +17223,11 @@ private class ReduceAction431
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tstringnode2 = nodearraylist1
-                                       assert tstringnode2 isa TString
-                                       var pexprnode1 = new AStringExpr.init_astringexpr(
+                                       assert tstringnode2 isa nullable TString
+                                       var pexprnode1: nullable AStringExpr = new AStringExpr.init_astringexpr(
                                                tstringnode2
                                        )
                                        node_list = pexprnode1
@@ -17240,10 +17239,10 @@ private class ReduceAction432
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(51), node_list)
        end
@@ -17253,12 +17252,12 @@ private class ReduceAction433
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist2
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(51), node_list)
        end
@@ -17268,7 +17267,7 @@ private class ReduceAction434
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
@@ -17280,12 +17279,12 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tkwasnode3 = nodearraylist4
-                                       assert tkwasnode3 isa TKwas
+                                       assert tkwasnode3 isa nullable TKwas
                                        var ptypenode4 = nodearraylist8
-                                       assert ptypenode4 isa PType
-                                       var pexprnode1 = new AAsCastExpr.init_aascastexpr(
+                                       assert ptypenode4 isa nullable PType
+                                       var pexprnode1: nullable AAsCastExpr = new AAsCastExpr.init_aascastexpr(
                                                pexprnode2,
                                                tkwasnode3,
                                                ptypenode4
@@ -17299,7 +17298,7 @@ private class ReduceAction435
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist12 = p.pop
                                        var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
@@ -17313,14 +17312,14 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tkwasnode3 = nodearraylist4
-                                       assert tkwasnode3 isa TKwas
+                                       assert tkwasnode3 isa nullable TKwas
                                        var tkwnotnode4 = nodearraylist8
-                                       assert tkwnotnode4 isa TKwnot
+                                       assert tkwnotnode4 isa nullable TKwnot
                                        var tkwnullnode5 = nodearraylist10
-                                       assert tkwnullnode5 isa TKwnull
-                                       var pexprnode1 = new AAsNotnullExpr.init_aasnotnullexpr(
+                                       assert tkwnullnode5 isa nullable TKwnull
+                                       var pexprnode1: nullable AAsNotnullExpr = new AAsNotnullExpr.init_aasnotnullexpr(
                                                pexprnode2,
                                                tkwasnode3,
                                                tkwnotnode4,
@@ -17335,25 +17334,25 @@ private class ReduceAction436
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
-                                       var listnode2 = nodearraylist1 
+                                       var listnode2 = nodearraylist1
                                        assert listnode2 isa Array[Object]
                                        var pexprnode3 = nodearraylist2
-                                       assert pexprnode3 isa PExpr
-                                       if listnode2 != null then
+                                       assert pexprnode3 isa nullable PExpr
+#                                      if listnode2 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode2
                                                else
                                                        listnode4.append(listnode2)
                                                end
-                                       end
+#                                      end
                                        if pexprnode3 != null then
                                                listnode4.add(pexprnode3)
                                        end
-                                       var pexprnode1 = new ASuperstringExpr.init_asuperstringexpr(
+                                       var pexprnode1: nullable ASuperstringExpr = new ASuperstringExpr.init_asuperstringexpr(
                                                listnode4
                                        )
                                        node_list = pexprnode1
@@ -17365,35 +17364,35 @@ private class ReduceAction437
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
-                                       var listnode2 = nodearraylist1 
+                                       var listnode2 = nodearraylist1
                                        assert listnode2 isa Array[Object]
-                                       var listnode3 = nodearraylist2 
+                                       var listnode3 = nodearraylist2
                                        assert listnode3 isa Array[Object]
                                        var pexprnode4 = nodearraylist3
-                                       assert pexprnode4 isa PExpr
-                                       if listnode2 != null then
+                                       assert pexprnode4 isa nullable PExpr
+#                                      if listnode2 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode2
                                                else
                                                        listnode5.append(listnode2)
                                                end
-                                       end
-                                       if listnode3 != null then
+#                                      end
+#                                      if listnode3 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode3
                                                else
                                                        listnode5.append(listnode3)
                                                end
-                                       end
+#                                      end
                                        if pexprnode4 != null then
                                                listnode5.add(pexprnode4)
                                        end
-                                       var pexprnode1 = new ASuperstringExpr.init_asuperstringexpr(
+                                       var pexprnode1: nullable ASuperstringExpr = new ASuperstringExpr.init_asuperstringexpr(
                                                listnode5
                                        )
                                        node_list = pexprnode1
@@ -17405,16 +17404,16 @@ private class ReduceAction438
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        var pexprnode2 = nodearraylist3
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        if pexprnode1 != null then
                                                listnode3.add(pexprnode1)
                                        end
@@ -17430,11 +17429,11 @@ private class ReduceAction439
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tstartstringnode2 = nodearraylist1
-                                       assert tstartstringnode2 isa TStartString
-                                       var pexprnode1 = new AStartStringExpr.init_astartstringexpr(
+                                       assert tstartstringnode2 isa nullable TStartString
+                                       var pexprnode1: nullable AStartStringExpr = new AStartStringExpr.init_astartstringexpr(
                                                tstartstringnode2
                                        )
                                        node_list = pexprnode1
@@ -17446,16 +17445,16 @@ private class ReduceAction440
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        var pexprnode2 = nodearraylist3
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        if pexprnode1 != null then
                                                listnode3.add(pexprnode1)
                                        end
@@ -17471,11 +17470,11 @@ private class ReduceAction441
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tmidstringnode2 = nodearraylist1
-                                       assert tmidstringnode2 isa TMidString
-                                       var pexprnode1 = new AMidStringExpr.init_amidstringexpr(
+                                       assert tmidstringnode2 isa nullable TMidString
+                                       var pexprnode1: nullable AMidStringExpr = new AMidStringExpr.init_amidstringexpr(
                                                tmidstringnode2
                                        )
                                        node_list = pexprnode1
@@ -17487,11 +17486,11 @@ private class ReduceAction442
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tendstringnode2 = nodearraylist1
-                                       assert tendstringnode2 isa TEndString
-                                       var pexprnode1 = new AEndStringExpr.init_aendstringexpr(
+                                       assert tendstringnode2 isa nullable TEndString
+                                       var pexprnode1: nullable AEndStringExpr = new AEndStringExpr.init_aendstringexpr(
                                                tendstringnode2
                                        )
                                        node_list = pexprnode1
@@ -17503,7 +17502,7 @@ private class ReduceAction443
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -17511,7 +17510,7 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
                                        var pexprnode1 = nodearraylist3
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        if pexprnode1 != null then
                                                listnode2.add(pexprnode1)
                                        end
@@ -17524,7 +17523,7 @@ private class ReduceAction444
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -17533,19 +17532,19 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
                                        var pexprnode1 = nodearraylist3
-                                       assert pexprnode1 isa PExpr
-                                       var listnode2 = nodearraylist5 
+                                       assert pexprnode1 isa nullable PExpr
+                                       var listnode2 = nodearraylist5
                                        assert listnode2 isa Array[Object]
                                        if pexprnode1 != null then
                                                listnode3.add(pexprnode1)
                                        end
-                                       if listnode2 != null then
+#                                      if listnode2 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode2
                                                else
                                                        listnode3.append(listnode2)
                                                end
-                                       end
+#                                      end
                                        node_list = listnode3
                                        p.push(p.go_to(58), node_list)
        end
@@ -17555,7 +17554,7 @@ private class ReduceAction445
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
@@ -17569,7 +17568,7 @@ private class ReduceAction446
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var listnode1 = new Array[Object]
                                        node_list = listnode1
                                        p.push(p.go_to(58), node_list)
@@ -17580,7 +17579,7 @@ private class ReduceAction447
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -17588,7 +17587,7 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
                                        var pexprnode1 = nodearraylist3
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        if pexprnode1 != null then
                                                listnode2.add(pexprnode1)
                                        end
@@ -17601,7 +17600,7 @@ private class ReduceAction448
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -17610,19 +17609,19 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
                                        var pexprnode1 = nodearraylist3
-                                       assert pexprnode1 isa PExpr
-                                       var listnode2 = nodearraylist5 
+                                       assert pexprnode1 isa nullable PExpr
+                                       var listnode2 = nodearraylist5
                                        assert listnode2 isa Array[Object]
                                        if pexprnode1 != null then
                                                listnode3.add(pexprnode1)
                                        end
-                                       if listnode2 != null then
+#                                      if listnode2 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode2
                                                else
                                                        listnode3.append(listnode2)
                                                end
-                                       end
+#                                      end
                                        node_list = listnode3
                                        p.push(p.go_to(59), node_list)
        end
@@ -17632,11 +17631,11 @@ private class ReduceAction449
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        if pexprnode1 != null then
                                                listnode2.add(pexprnode1)
                                        end
@@ -17649,7 +17648,7 @@ private class ReduceAction450
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
@@ -17663,7 +17662,7 @@ private class ReduceAction451
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var listnode1 = new Array[Object]
                                        node_list = listnode1
                                        p.push(p.go_to(59), node_list)
@@ -17674,7 +17673,7 @@ private class ReduceAction452
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -17682,7 +17681,7 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
                                        var pexprnode1 = nodearraylist3
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        if pexprnode1 != null then
                                                listnode2.add(pexprnode1)
                                        end
@@ -17695,7 +17694,7 @@ private class ReduceAction453
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -17704,19 +17703,19 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
                                        var pexprnode1 = nodearraylist3
-                                       assert pexprnode1 isa PExpr
-                                       var listnode2 = nodearraylist5 
+                                       assert pexprnode1 isa nullable PExpr
+                                       var listnode2 = nodearraylist5
                                        assert listnode2 isa Array[Object]
                                        if pexprnode1 != null then
                                                listnode3.add(pexprnode1)
                                        end
-                                       if listnode2 != null then
+#                                      if listnode2 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode2
                                                else
                                                        listnode3.append(listnode2)
                                                end
-                                       end
+#                                      end
                                        node_list = listnode3
                                        p.push(p.go_to(60), node_list)
        end
@@ -17726,13 +17725,13 @@ private class ReduceAction454
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist3
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(61), node_list)
        end
@@ -17742,11 +17741,11 @@ private class ReduceAction455
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
                                        var tidnode1 = nodearraylist1
-                                       assert tidnode1 isa TId
+                                       assert tidnode1 isa nullable TId
                                        if tidnode1 != null then
                                                listnode2.add(tidnode1)
                                        end
@@ -17759,24 +17758,24 @@ private class ReduceAction456
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 listnode1 = nodearraylist1 
+                                       var listnode1 = nodearraylist1
                                        assert listnode1 isa Array[Object]
                                        var tidnode2 = nodearraylist5
-                                       assert tidnode2 isa TId
-                                       if listnode1 != null then
+                                       assert tidnode2 isa nullable TId
+#                                      if listnode1 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode1
                                                else
                                                        listnode3.append(listnode1)
                                                end
-                                       end
+#                                      end
                                        if tidnode2 != null then
                                                listnode3.add(tidnode2)
                                        end
@@ -17789,12 +17788,12 @@ private class ReduceAction457
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
                                        var tclassidnode3 = nodearraylist1
-                                       assert tclassidnode3 isa TClassid
-                                       var pqualifiednode1 = new AQualified.init_aqualified(
+                                       assert tclassidnode3 isa nullable TClassid
+                                       var pqualifiednode1: nullable AQualified = new AQualified.init_aqualified(
                                                listnode2,
                                                tclassidnode3
                                        )
@@ -17807,22 +17806,22 @@ private class ReduceAction458
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
-                                       var listnode2 = nodearraylist1 
+                                       var listnode2 = nodearraylist1
                                        assert listnode2 isa Array[Object]
-                                       if listnode2 != null then
+#                                      if listnode2 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode2
                                                else
                                                        listnode3.append(listnode2)
                                                end
-                                       end
+#                                      end
                                        var tclassidnode4 = nodearraylist2
-                                       assert tclassidnode4 isa TClassid
-                                       var pqualifiednode1 = new AQualified.init_aqualified(
+                                       assert tclassidnode4 isa nullable TClassid
+                                       var pqualifiednode1: nullable AQualified = new AQualified.init_aqualified(
                                                listnode3,
                                                tclassidnode4
                                        )
@@ -17835,19 +17834,19 @@ private class ReduceAction459
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
-                                       var listnode2 = nodearraylist1 
+                                       var listnode2 = nodearraylist1
                                        assert listnode2 isa Array[Object]
-                                       if listnode2 != null then
+#                                      if listnode2 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode2
                                                else
                                                        listnode3.append(listnode2)
                                                end
-                                       end
-                                       var pqualifiednode1 = new AQualified.init_aqualified(
+#                                      end
+                                       var pqualifiednode1: nullable AQualified = new AQualified.init_aqualified(
                                                listnode3,
                                                null
                                        )
@@ -17860,12 +17859,12 @@ private class ReduceAction460
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tidnode1 = nodearraylist1
-                                       assert tidnode1 isa TId
+                                       assert tidnode1 isa nullable TId
                                        node_list = tidnode1
                                        p.push(p.go_to(64), node_list)
        end
@@ -17875,12 +17874,12 @@ private class ReduceAction461
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tclassidnode1 = nodearraylist1
-                                       assert tclassidnode1 isa TClassid
+                                       assert tclassidnode1 isa nullable TClassid
                                        node_list = tclassidnode1
                                        p.push(p.go_to(65), node_list)
        end
@@ -17890,7 +17889,7 @@ private class ReduceAction462
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        p.push(p.go_to(66), node_list)
        end
@@ -17900,7 +17899,7 @@ private class ReduceAction463
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        p.push(p.go_to(66), node_list)
        end
@@ -17910,19 +17909,19 @@ private class ReduceAction464
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
-                                       var listnode2 = nodearraylist1 
+                                       var listnode2 = nodearraylist1
                                        assert listnode2 isa Array[Object]
-                                       if listnode2 != null then
+#                                      if listnode2 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode2
                                                else
                                                        listnode3.append(listnode2)
                                                end
-                                       end
-                                       var pdocnode1 = new ADoc.init_adoc(
+#                                      end
+                                       var pdocnode1: nullable ADoc = new ADoc.init_adoc(
                                                listnode3
                                        )
                                        node_list = pdocnode1
@@ -17934,20 +17933,20 @@ private class ReduceAction465
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
-                                       var listnode2 = nodearraylist2 
+                                       var listnode2 = nodearraylist2
                                        assert listnode2 isa Array[Object]
-                                       if listnode2 != null then
+#                                      if listnode2 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode2
                                                else
                                                        listnode3.append(listnode2)
                                                end
-                                       end
-                                       var pdocnode1 = new ADoc.init_adoc(
+#                                      end
+                                       var pdocnode1: nullable ADoc = new ADoc.init_adoc(
                                                listnode3
                                        )
                                        node_list = pdocnode1
@@ -17959,7 +17958,7 @@ private class ReduceAction466
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        node_list = null
                                        p.push(p.go_to(67), node_list)
@@ -17970,7 +17969,7 @@ private class ReduceAction467
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        node_list = null
                                        p.push(p.go_to(68), node_list)
        end
@@ -17980,10 +17979,10 @@ private class ReduceAction468
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pdocnode1 = nodearraylist1
-                                       assert pdocnode1 isa PDoc
+                                       assert pdocnode1 isa nullable PDoc
                                        node_list = pdocnode1
                                        p.push(p.go_to(68), node_list)
        end
@@ -17993,7 +17992,7 @@ private class ReduceAction469
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        p.push(p.go_to(69), node_list)
@@ -18004,7 +18003,7 @@ private class ReduceAction470
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
@@ -18016,7 +18015,7 @@ private class ReduceAction471
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        p.push(p.go_to(69), node_list)
        end
@@ -18026,11 +18025,11 @@ private class ReduceAction472
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var ppropdefnode1 = nodearraylist1
-                                       assert ppropdefnode1 isa PPropdef
+                                       assert ppropdefnode1 isa nullable PPropdef
                                        node_list = ppropdefnode1
                                        p.push(p.go_to(70), node_list)
        end
@@ -18040,7 +18039,7 @@ private class ReduceAction473
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -18049,18 +18048,18 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
+                                       assert tkwmethnode5 isa nullable TKwmeth
                                        var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
+                                       assert pmethidnode6 isa nullable PMethid
                                        var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa PSignature
+                                       assert psignaturenode7 isa nullable PSignature
                                        var pexprnode8 = nodearraylist7
-                                       assert pexprnode8 isa PExpr
-                                       var ppropdefnode1 = new AConcreteMethPropdef.init_aconcretemethpropdef(
+                                       assert pexprnode8 isa nullable PExpr
+                                       var ppropdefnode1: nullable AConcreteMethPropdef = new AConcreteMethPropdef.init_aconcretemethpropdef(
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -18078,7 +18077,7 @@ private class ReduceAction474
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -18088,20 +18087,20 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
+                                       assert tkwmethnode5 isa nullable TKwmeth
                                        var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
+                                       assert pmethidnode6 isa nullable PMethid
                                        var psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa PSignature
+                                       assert psignaturenode7 isa nullable PSignature
                                        var pexprnode8 = nodearraylist8
-                                       assert pexprnode8 isa PExpr
-                                       var ppropdefnode1 = new AConcreteMethPropdef.init_aconcretemethpropdef(
+                                       assert pexprnode8 isa nullable PExpr
+                                       var ppropdefnode1: nullable AConcreteMethPropdef = new AConcreteMethPropdef.init_aconcretemethpropdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -18119,7 +18118,7 @@ private class ReduceAction475
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -18129,18 +18128,18 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
+                                       assert tkwmethnode5 isa nullable TKwmeth
                                        var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
+                                       assert pmethidnode6 isa nullable PMethid
                                        var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa PSignature
+                                       assert psignaturenode7 isa nullable PSignature
                                        var pexprnode8 = nodearraylist7
-                                       assert pexprnode8 isa PExpr
-                                       var ppropdefnode1 = new AConcreteMethPropdef.init_aconcretemethpropdef(
+                                       assert pexprnode8 isa nullable PExpr
+                                       var ppropdefnode1: nullable AConcreteMethPropdef = new AConcreteMethPropdef.init_aconcretemethpropdef(
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -18158,7 +18157,7 @@ private class ReduceAction476
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -18169,20 +18168,20 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
+                                       assert tkwmethnode5 isa nullable TKwmeth
                                        var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
+                                       assert pmethidnode6 isa nullable PMethid
                                        var psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa PSignature
+                                       assert psignaturenode7 isa nullable PSignature
                                        var pexprnode8 = nodearraylist8
-                                       assert pexprnode8 isa PExpr
-                                       var ppropdefnode1 = new AConcreteMethPropdef.init_aconcretemethpropdef(
+                                       assert pexprnode8 isa nullable PExpr
+                                       var ppropdefnode1: nullable AConcreteMethPropdef = new AConcreteMethPropdef.init_aconcretemethpropdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -18200,7 +18199,7 @@ private class ReduceAction477
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -18209,16 +18208,16 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
+                                       assert tkwmethnode5 isa nullable TKwmeth
                                        var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
+                                       assert pmethidnode6 isa nullable PMethid
                                        var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa PSignature
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
+                                       assert psignaturenode7 isa nullable PSignature
+                                       var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -18236,7 +18235,7 @@ private class ReduceAction478
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -18246,18 +18245,18 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
+                                       assert tkwmethnode5 isa nullable TKwmeth
                                        var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
+                                       assert pmethidnode6 isa nullable PMethid
                                        var psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa PSignature
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
+                                       assert psignaturenode7 isa nullable PSignature
+                                       var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -18275,7 +18274,7 @@ private class ReduceAction479
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -18285,18 +18284,18 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
+                                       assert tkwmethnode5 isa nullable TKwmeth
                                        var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
+                                       assert pmethidnode6 isa nullable PMethid
                                        var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa PSignature
+                                       assert psignaturenode7 isa nullable PSignature
                                        var tstringnode8 = nodearraylist8
-                                       assert tstringnode8 isa TString
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
+                                       assert tstringnode8 isa nullable TString
+                                       var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -18314,7 +18313,7 @@ private class ReduceAction480
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
@@ -18325,20 +18324,20 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
+                                       assert tkwmethnode5 isa nullable TKwmeth
                                        var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
+                                       assert pmethidnode6 isa nullable PMethid
                                        var psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa PSignature
+                                       assert psignaturenode7 isa nullable PSignature
                                        var tstringnode8 = nodearraylist9
-                                       assert tstringnode8 isa TString
-                                       var ppropdefnode1 = new AExternMethPropdef.init_aexternmethpropdef(
+                                       assert tstringnode8 isa nullable TString
+                                       var ppropdefnode1: nullable AExternMethPropdef = new AExternMethPropdef.init_aexternmethpropdef(
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -18356,12 +18355,12 @@ private class ReduceAction481
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
                                        var tclassidnode3 = nodearraylist1
-                                       assert tclassidnode3 isa TClassid
-                                       var ptypenode1 = new AType.init_atype(
+                                       assert tclassidnode3 isa nullable TClassid
+                                       var ptypenode1: nullable AType = new AType.init_atype(
                                                null,
                                                tclassidnode3,
                                                listnode4
@@ -18375,15 +18374,15 @@ private class ReduceAction482
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
                                        var tkwnullablenode2 = nodearraylist1
-                                       assert tkwnullablenode2 isa TKwnullable
+                                       assert tkwnullablenode2 isa nullable TKwnullable
                                        var tclassidnode3 = nodearraylist2
-                                       assert tclassidnode3 isa TClassid
-                                       var ptypenode1 = new AType.init_atype(
+                                       assert tclassidnode3 isa nullable TClassid
+                                       var ptypenode1: nullable AType = new AType.init_atype(
                                                tkwnullablenode2,
                                                tclassidnode3,
                                                listnode4
@@ -18397,10 +18396,10 @@ private class ReduceAction483
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(73), node_list)
        end
@@ -18410,7 +18409,7 @@ private class ReduceAction484
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -18420,28 +18419,28 @@ special ReduceAction
                                        var listnode5 = new Array[Object]
                                        var listnode7 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist5 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var listnode6 = nodearraylist6 
+#                                      end
+                                       var listnode6 = nodearraylist6
                                        assert listnode6 isa Array[Object]
-                                       if listnode6 != null then
+#                                      if listnode6 != null then
                                                if listnode7.is_empty then
                                                        listnode7 = listnode6
                                                else
                                                        listnode7.append(listnode6)
                                                end
-                                       end
-                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -18456,35 +18455,35 @@ private class ReduceAction485
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var listnode7 = new Array[Object]
-                                       var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist2 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var listnode6 = nodearraylist3 
+#                                      end
+                                       var listnode6 = nodearraylist3
                                        assert listnode6 isa Array[Object]
-                                       if listnode6 != null then
+#                                      if listnode6 != null then
                                                if listnode7.is_empty then
                                                        listnode7 = listnode6
                                                else
                                                        listnode7.append(listnode6)
                                                end
-                                       end
-                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -18499,10 +18498,10 @@ private class ReduceAction486
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(74), node_list)
        end
@@ -18512,7 +18511,7 @@ private class ReduceAction487
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
@@ -18525,18 +18524,18 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwifnode2 = nodearraylist1
-                                       assert tkwifnode2 isa TKwif
+                                       assert tkwifnode2 isa nullable TKwif
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
+                                       assert pexprnode3 isa nullable PExpr
                                        var tkwthennode4 = nodearraylist5
-                                       assert tkwthennode4 isa TKwthen
+                                       assert tkwthennode4 isa nullable TKwthen
                                        var pexprnode5 = nodearraylist7
-                                       assert pexprnode5 isa PExpr
+                                       assert pexprnode5 isa nullable PExpr
                                        var tkwelsenode6 = nodearraylist9
-                                       assert tkwelsenode6 isa TKwelse
+                                       assert tkwelsenode6 isa nullable TKwelse
                                        var pexprnode7 = nodearraylist11
-                                       assert pexprnode7 isa PExpr
-                                       var pexprnode1 = new AIfexprExpr.init_aifexprexpr(
+                                       assert pexprnode7 isa nullable PExpr
+                                       var pexprnode1: nullable AIfexprExpr = new AIfexprExpr.init_aifexprexpr(
                                                tkwifnode2,
                                                pexprnode3,
                                                tkwthennode4,
@@ -18553,10 +18552,10 @@ private class ReduceAction488
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(75), node_list)
        end
@@ -18566,16 +18565,16 @@ private class ReduceAction489
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AOrExpr.init_aorexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AOrExpr = new AOrExpr.init_aorexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -18588,16 +18587,16 @@ private class ReduceAction490
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AAndExpr.init_aandexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AAndExpr = new AAndExpr.init_aandexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -18610,10 +18609,10 @@ private class ReduceAction491
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(76), node_list)
        end
@@ -18623,15 +18622,15 @@ private class ReduceAction492
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwnotnode2 = nodearraylist1
-                                       assert tkwnotnode2 isa TKwnot
+                                       assert tkwnotnode2 isa nullable TKwnot
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new ANotExpr.init_anotexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable ANotExpr = new ANotExpr.init_anotexpr(
                                                tkwnotnode2,
                                                pexprnode3
                                        )
@@ -18644,10 +18643,10 @@ private class ReduceAction493
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(77), node_list)
        end
@@ -18657,16 +18656,16 @@ private class ReduceAction494
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AEqExpr.init_aeqexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AEqExpr = new AEqExpr.init_aeqexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -18679,16 +18678,16 @@ private class ReduceAction495
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AEeExpr.init_aeeexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AEeExpr = new AEeExpr.init_aeeexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -18701,16 +18700,16 @@ private class ReduceAction496
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new ANeExpr.init_aneexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable ANeExpr = new ANeExpr.init_aneexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -18723,16 +18722,16 @@ private class ReduceAction497
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new ALtExpr.init_altexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable ALtExpr = new ALtExpr.init_altexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -18745,16 +18744,16 @@ private class ReduceAction498
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new ALeExpr.init_aleexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable ALeExpr = new ALeExpr.init_aleexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -18767,16 +18766,16 @@ private class ReduceAction499
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AGtExpr.init_agtexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AGtExpr = new AGtExpr.init_agtexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -18789,16 +18788,16 @@ private class ReduceAction500
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AGeExpr.init_ageexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AGeExpr = new AGeExpr.init_ageexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -18811,16 +18810,16 @@ private class ReduceAction501
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AStarshipExpr.init_astarshipexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AStarshipExpr = new AStarshipExpr.init_astarshipexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -18833,16 +18832,16 @@ private class ReduceAction502
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var ptypenode3 = nodearraylist4
-                                       assert ptypenode3 isa PType
-                                       var pexprnode1 = new AIsaExpr.init_aisaexpr(
+                                       assert ptypenode3 isa nullable PType
+                                       var pexprnode1: nullable AIsaExpr = new AIsaExpr.init_aisaexpr(
                                                pexprnode2,
                                                ptypenode3
                                        )
@@ -18855,10 +18854,10 @@ private class ReduceAction503
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(78), node_list)
        end
@@ -18868,16 +18867,16 @@ private class ReduceAction504
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new APlusExpr.init_aplusexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable APlusExpr = new APlusExpr.init_aplusexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -18890,16 +18889,16 @@ private class ReduceAction505
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AMinusExpr.init_aminusexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AMinusExpr = new AMinusExpr.init_aminusexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -18912,10 +18911,10 @@ private class ReduceAction506
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(79), node_list)
        end
@@ -18925,16 +18924,16 @@ private class ReduceAction507
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AStarExpr.init_astarexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AStarExpr = new AStarExpr.init_astarexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -18947,16 +18946,16 @@ private class ReduceAction508
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new ASlashExpr.init_aslashexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable ASlashExpr = new ASlashExpr.init_aslashexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -18969,16 +18968,16 @@ private class ReduceAction509
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new APercentExpr.init_apercentexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable APercentExpr = new APercentExpr.init_apercentexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -18991,10 +18990,10 @@ private class ReduceAction510
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(80), node_list)
        end
@@ -19004,15 +19003,15 @@ private class ReduceAction511
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tminusnode2 = nodearraylist1
-                                       assert tminusnode2 isa TMinus
+                                       assert tminusnode2 isa nullable TMinus
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AUminusExpr.init_auminusexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AUminusExpr = new AUminusExpr.init_auminusexpr(
                                                tminusnode2,
                                                pexprnode3
                                        )
@@ -19025,15 +19024,15 @@ private class ReduceAction512
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwoncenode2 = nodearraylist1
-                                       assert tkwoncenode2 isa TKwonce
+                                       assert tkwoncenode2 isa nullable TKwonce
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AOnceExpr.init_aonceexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AOnceExpr = new AOnceExpr.init_aonceexpr(
                                                tkwoncenode2,
                                                pexprnode3
                                        )
@@ -19046,10 +19045,10 @@ private class ReduceAction513
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(81), node_list)
        end
@@ -19059,26 +19058,26 @@ private class ReduceAction514
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode6 = new Array[Object]
                                        var tkwnewnode2 = nodearraylist1
-                                       assert tkwnewnode2 isa TKwnew
+                                       assert tkwnewnode2 isa nullable TKwnew
                                        var ptypenode3 = nodearraylist3
-                                       assert ptypenode3 isa PType
-                                       var listnode5 = nodearraylist4 
+                                       assert ptypenode3 isa nullable PType
+                                       var listnode5 = nodearraylist4
                                        assert listnode5 isa Array[Object]
-                                       if listnode5 != null then
+#                                      if listnode5 != null then
                                                if listnode6.is_empty then
                                                        listnode6 = listnode5
                                                else
                                                        listnode6.append(listnode5)
                                                end
-                                       end
-                                       var pexprnode1 = new ANewExpr.init_anewexpr(
+#                                      end
+                                       var pexprnode1: nullable ANewExpr = new ANewExpr.init_anewexpr(
                                                tkwnewnode2,
                                                ptypenode3,
                                                null,
@@ -19093,19 +19092,19 @@ private class ReduceAction515
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 tkwissetnode2 = nodearraylist1
-                                       assert tkwissetnode2 isa TKwisset
+                                       assert tkwissetnode2 isa nullable TKwisset
                                        var pexprnode3 = nodearraylist2
-                                       assert pexprnode3 isa PExpr
+                                       assert pexprnode3 isa nullable PExpr
                                        var tattridnode4 = nodearraylist5
-                                       assert tattridnode4 isa TAttrid
-                                       var pexprnode1 = new AIssetAttrExpr.init_aissetattrexpr(
+                                       assert tattridnode4 isa nullable TAttrid
+                                       var pexprnode1: nullable AIssetAttrExpr = new AIssetAttrExpr.init_aissetattrexpr(
                                                tkwissetnode2,
                                                pexprnode3,
                                                tattridnode4
@@ -19119,16 +19118,16 @@ private class ReduceAction516
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwissetnode2 = nodearraylist1
-                                       assert tkwissetnode2 isa TKwisset
-                                       var pexprnode3 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       assert tkwissetnode2 isa nullable TKwisset
+                                       var pexprnode3: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tattridnode4 = nodearraylist2
-                                       assert tattridnode4 isa TAttrid
-                                       var pexprnode1 = new AIssetAttrExpr.init_aissetattrexpr(
+                                       assert tattridnode4 isa nullable TAttrid
+                                       var pexprnode1: nullable AIssetAttrExpr = new AIssetAttrExpr.init_aissetattrexpr(
                                                tkwissetnode2,
                                                pexprnode3,
                                                tattridnode4
@@ -19142,16 +19141,16 @@ private class ReduceAction517
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tattridnode3 = nodearraylist4
-                                       assert tattridnode3 isa TAttrid
-                                       var pexprnode1 = new AAttrExpr.init_aattrexpr(
+                                       assert tattridnode3 isa nullable TAttrid
+                                       var pexprnode1: nullable AAttrExpr = new AAttrExpr.init_aattrexpr(
                                                pexprnode2,
                                                tattridnode3
                                        )
@@ -19164,13 +19163,13 @@ private class ReduceAction518
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tattridnode3 = nodearraylist1
-                                       assert tattridnode3 isa TAttrid
-                                       var pexprnode1 = new AAttrExpr.init_aattrexpr(
+                                       assert tattridnode3 isa nullable TAttrid
+                                       var pexprnode1: nullable AAttrExpr = new AAttrExpr.init_aattrexpr(
                                                pexprnode2,
                                                tattridnode3
                                        )
@@ -19183,7 +19182,7 @@ private class ReduceAction519
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -19192,19 +19191,19 @@ special ReduceAction
                                        var listnode5 = new Array[Object]
                                        var listnode6 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist5 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -19219,25 +19218,25 @@ private class ReduceAction520
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var listnode6 = new Array[Object]
-                                       var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist2 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -19252,22 +19251,22 @@ private class ReduceAction521
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var tkwsupernode3 = nodearraylist1
-                                       assert tkwsupernode3 isa TKwsuper
-                                       var listnode4 = nodearraylist2 
+                                       assert tkwsupernode3 isa nullable TKwsuper
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pexprnode1 = new ASuperExpr.init_asuperexpr(
+#                                      end
+                                       var pexprnode1: nullable ASuperExpr = new ASuperExpr.init_asuperexpr(
                                                null,
                                                tkwsupernode3,
                                                listnode5
@@ -19281,25 +19280,25 @@ private class ReduceAction522
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var pqualifiednode2 = nodearraylist1
-                                       assert pqualifiednode2 isa PQualified
+                                       assert pqualifiednode2 isa nullable PQualified
                                        var tkwsupernode3 = nodearraylist2
-                                       assert tkwsupernode3 isa TKwsuper
-                                       var listnode4 = nodearraylist3 
+                                       assert tkwsupernode3 isa nullable TKwsuper
+                                       var listnode4 = nodearraylist3
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pexprnode1 = new ASuperExpr.init_asuperexpr(
+#                                      end
+                                       var pexprnode1: nullable ASuperExpr = new ASuperExpr.init_asuperexpr(
                                                pqualifiednode2,
                                                tkwsupernode3,
                                                listnode5
@@ -19313,7 +19312,7 @@ private class ReduceAction523
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -19321,19 +19320,19 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tkwinitnode3 = nodearraylist4
-                                       assert tkwinitnode3 isa TKwinit
-                                       var listnode4 = nodearraylist5 
+                                       assert tkwinitnode3 isa nullable TKwinit
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pexprnode1 = new AInitExpr.init_ainitexpr(
+#                                      end
+                                       var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
                                                pexprnode2,
                                                tkwinitnode3,
                                                listnode5
@@ -19347,24 +19346,24 @@ private class ReduceAction524
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
-                                       var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tkwinitnode3 = nodearraylist1
-                                       assert tkwinitnode3 isa TKwinit
-                                       var listnode4 = nodearraylist2 
+                                       assert tkwinitnode3 isa nullable TKwinit
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pexprnode1 = new AInitExpr.init_ainitexpr(
+#                                      end
+                                       var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
                                                pexprnode2,
                                                tkwinitnode3,
                                                listnode5
@@ -19378,7 +19377,7 @@ private class ReduceAction525
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -19388,21 +19387,21 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode6 = new Array[Object]
                                        var tkwnewnode2 = nodearraylist1
-                                       assert tkwnewnode2 isa TKwnew
+                                       assert tkwnewnode2 isa nullable TKwnew
                                        var ptypenode3 = nodearraylist3
-                                       assert ptypenode3 isa PType
+                                       assert ptypenode3 isa nullable PType
                                        var tidnode4 = nodearraylist6
-                                       assert tidnode4 isa TId
-                                       var listnode5 = nodearraylist7 
+                                       assert tidnode4 isa nullable TId
+                                       var listnode5 = nodearraylist7
                                        assert listnode5 isa Array[Object]
-                                       if listnode5 != null then
+#                                      if listnode5 != null then
                                                if listnode6.is_empty then
                                                        listnode6 = listnode5
                                                else
                                                        listnode6.append(listnode5)
                                                end
-                                       end
-                                       var pexprnode1 = new ANewExpr.init_anewexpr(
+#                                      end
+                                       var pexprnode1: nullable ANewExpr = new ANewExpr.init_anewexpr(
                                                tkwnewnode2,
                                                ptypenode3,
                                                tidnode4,
@@ -19417,11 +19416,11 @@ private class ReduceAction526
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tkwselfnode2 = nodearraylist1
-                                       assert tkwselfnode2 isa TKwself
-                                       var pexprnode1 = new ASelfExpr.init_aselfexpr(
+                                       assert tkwselfnode2 isa nullable TKwself
+                                       var pexprnode1: nullable ASelfExpr = new ASelfExpr.init_aselfexpr(
                                                tkwselfnode2
                                        )
                                        node_list = pexprnode1
@@ -19433,11 +19432,11 @@ private class ReduceAction527
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tkwtruenode2 = nodearraylist1
-                                       assert tkwtruenode2 isa TKwtrue
-                                       var pexprnode1 = new ATrueExpr.init_atrueexpr(
+                                       assert tkwtruenode2 isa nullable TKwtrue
+                                       var pexprnode1: nullable ATrueExpr = new ATrueExpr.init_atrueexpr(
                                                tkwtruenode2
                                        )
                                        node_list = pexprnode1
@@ -19449,11 +19448,11 @@ private class ReduceAction528
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tkwfalsenode2 = nodearraylist1
-                                       assert tkwfalsenode2 isa TKwfalse
-                                       var pexprnode1 = new AFalseExpr.init_afalseexpr(
+                                       assert tkwfalsenode2 isa nullable TKwfalse
+                                       var pexprnode1: nullable AFalseExpr = new AFalseExpr.init_afalseexpr(
                                                tkwfalsenode2
                                        )
                                        node_list = pexprnode1
@@ -19465,11 +19464,11 @@ private class ReduceAction529
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tkwnullnode2 = nodearraylist1
-                                       assert tkwnullnode2 isa TKwnull
-                                       var pexprnode1 = new ANullExpr.init_anullexpr(
+                                       assert tkwnullnode2 isa nullable TKwnull
+                                       var pexprnode1: nullable ANullExpr = new ANullExpr.init_anullexpr(
                                                tkwnullnode2
                                        )
                                        node_list = pexprnode1
@@ -19481,11 +19480,11 @@ private class ReduceAction530
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tnumbernode2 = nodearraylist1
-                                       assert tnumbernode2 isa TNumber
-                                       var pexprnode1 = new AIntExpr.init_aintexpr(
+                                       assert tnumbernode2 isa nullable TNumber
+                                       var pexprnode1: nullable AIntExpr = new AIntExpr.init_aintexpr(
                                                tnumbernode2
                                        )
                                        node_list = pexprnode1
@@ -19497,11 +19496,11 @@ private class ReduceAction531
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tfloatnode2 = nodearraylist1
-                                       assert tfloatnode2 isa TFloat
-                                       var pexprnode1 = new AFloatExpr.init_afloatexpr(
+                                       assert tfloatnode2 isa nullable TFloat
+                                       var pexprnode1: nullable AFloatExpr = new AFloatExpr.init_afloatexpr(
                                                tfloatnode2
                                        )
                                        node_list = pexprnode1
@@ -19513,11 +19512,11 @@ private class ReduceAction532
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tcharnode2 = nodearraylist1
-                                       assert tcharnode2 isa TChar
-                                       var pexprnode1 = new ACharExpr.init_acharexpr(
+                                       assert tcharnode2 isa nullable TChar
+                                       var pexprnode1: nullable ACharExpr = new ACharExpr.init_acharexpr(
                                                tcharnode2
                                        )
                                        node_list = pexprnode1
@@ -19529,11 +19528,11 @@ private class ReduceAction533
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tstringnode2 = nodearraylist1
-                                       assert tstringnode2 isa TString
-                                       var pexprnode1 = new AStringExpr.init_astringexpr(
+                                       assert tstringnode2 isa nullable TString
+                                       var pexprnode1: nullable AStringExpr = new AStringExpr.init_astringexpr(
                                                tstringnode2
                                        )
                                        node_list = pexprnode1
@@ -19545,10 +19544,10 @@ private class ReduceAction534
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(82), node_list)
        end
@@ -19558,12 +19557,12 @@ private class ReduceAction535
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist2
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(82), node_list)
        end
@@ -19573,7 +19572,7 @@ private class ReduceAction536
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
@@ -19585,12 +19584,12 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tkwasnode3 = nodearraylist4
-                                       assert tkwasnode3 isa TKwas
+                                       assert tkwasnode3 isa nullable TKwas
                                        var ptypenode4 = nodearraylist8
-                                       assert ptypenode4 isa PType
-                                       var pexprnode1 = new AAsCastExpr.init_aascastexpr(
+                                       assert ptypenode4 isa nullable PType
+                                       var pexprnode1: nullable AAsCastExpr = new AAsCastExpr.init_aascastexpr(
                                                pexprnode2,
                                                tkwasnode3,
                                                ptypenode4
@@ -19604,7 +19603,7 @@ private class ReduceAction537
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist12 = p.pop
                                        var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
@@ -19618,14 +19617,14 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tkwasnode3 = nodearraylist4
-                                       assert tkwasnode3 isa TKwas
+                                       assert tkwasnode3 isa nullable TKwas
                                        var tkwnotnode4 = nodearraylist8
-                                       assert tkwnotnode4 isa TKwnot
+                                       assert tkwnotnode4 isa nullable TKwnot
                                        var tkwnullnode5 = nodearraylist10
-                                       assert tkwnullnode5 isa TKwnull
-                                       var pexprnode1 = new AAsNotnullExpr.init_aasnotnullexpr(
+                                       assert tkwnullnode5 isa nullable TKwnull
+                                       var pexprnode1: nullable AAsNotnullExpr = new AAsNotnullExpr.init_aasnotnullexpr(
                                                pexprnode2,
                                                tkwasnode3,
                                                tkwnotnode4,
@@ -19640,10 +19639,10 @@ private class ReduceAction538
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(83), node_list)
        end
@@ -19653,18 +19652,18 @@ private class ReduceAction539
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 pexprnode2 = nodearraylist2
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        if pexprnode2 != null then
                                                listnode3.add(pexprnode2)
                                        end
-                                       var pexprnode1 = new ABlockExpr.init_ablockexpr(
+                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
                                                listnode3
                                        )
                                        node_list = pexprnode1
@@ -19676,7 +19675,7 @@ private class ReduceAction540
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -19684,20 +19683,20 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
                                        var pexprnode2 = nodearraylist2
-                                       assert pexprnode2 isa PExpr
-                                       var listnode3 = nodearraylist3 
+                                       assert pexprnode2 isa nullable PExpr
+                                       var listnode3 = nodearraylist3
                                        assert listnode3 isa Array[Object]
                                        if pexprnode2 != null then
                                                listnode4.add(pexprnode2)
                                        end
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
-                                       var pexprnode1 = new ABlockExpr.init_ablockexpr(
+#                                      end
+                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
                                                listnode4
                                        )
                                        node_list = pexprnode1
@@ -19709,11 +19708,11 @@ private class ReduceAction541
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
-                                       var pexprnode1 = new ABlockExpr.init_ablockexpr(
+                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
                                                listnode2
                                        )
                                        node_list = pexprnode1
@@ -19725,10 +19724,10 @@ private class ReduceAction542
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
-                                       var pexprnode1 = new ABlockExpr.init_ablockexpr(
+                                       var pexprnode1: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
                                                listnode2
                                        )
                                        node_list = pexprnode1
@@ -19740,10 +19739,10 @@ private class ReduceAction543
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(84), node_list)
        end
@@ -19753,10 +19752,10 @@ private class ReduceAction544
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(84), node_list)
        end
@@ -19766,11 +19765,11 @@ private class ReduceAction545
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tkwreturnnode2 = nodearraylist1
-                                       assert tkwreturnnode2 isa TKwreturn
-                                       var pexprnode1 = new AReturnExpr.init_areturnexpr(
+                                       assert tkwreturnnode2 isa nullable TKwreturn
+                                       var pexprnode1: nullable AReturnExpr = new AReturnExpr.init_areturnexpr(
                                                tkwreturnnode2,
                                                null
                                        )
@@ -19783,14 +19782,14 @@ private class ReduceAction546
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwreturnnode2 = nodearraylist1
-                                       assert tkwreturnnode2 isa TKwreturn
+                                       assert tkwreturnnode2 isa nullable TKwreturn
                                        var pexprnode3 = nodearraylist2
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AReturnExpr.init_areturnexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AReturnExpr = new AReturnExpr.init_areturnexpr(
                                                tkwreturnnode2,
                                                pexprnode3
                                        )
@@ -19803,11 +19802,11 @@ private class ReduceAction547
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tkwbreaknode2 = nodearraylist1
-                                       assert tkwbreaknode2 isa TKwbreak
-                                       var pexprnode1 = new ABreakExpr.init_abreakexpr(
+                                       assert tkwbreaknode2 isa nullable TKwbreak
+                                       var pexprnode1: nullable ABreakExpr = new ABreakExpr.init_abreakexpr(
                                                tkwbreaknode2,
                                                null
                                        )
@@ -19820,14 +19819,14 @@ private class ReduceAction548
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwbreaknode2 = nodearraylist1
-                                       assert tkwbreaknode2 isa TKwbreak
+                                       assert tkwbreaknode2 isa nullable TKwbreak
                                        var pexprnode3 = nodearraylist2
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new ABreakExpr.init_abreakexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable ABreakExpr = new ABreakExpr.init_abreakexpr(
                                                tkwbreaknode2,
                                                pexprnode3
                                        )
@@ -19840,11 +19839,11 @@ private class ReduceAction549
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tkwabortnode2 = nodearraylist1
-                                       assert tkwabortnode2 isa TKwabort
-                                       var pexprnode1 = new AAbortExpr.init_aabortexpr(
+                                       assert tkwabortnode2 isa nullable TKwabort
+                                       var pexprnode1: nullable AAbortExpr = new AAbortExpr.init_aabortexpr(
                                                tkwabortnode2
                                        )
                                        node_list = pexprnode1
@@ -19856,11 +19855,11 @@ private class ReduceAction550
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tkwcontinuenode2 = nodearraylist1
-                                       assert tkwcontinuenode2 isa TKwcontinue
-                                       var pexprnode1 = new AContinueExpr.init_acontinueexpr(
+                                       assert tkwcontinuenode2 isa nullable TKwcontinue
+                                       var pexprnode1: nullable AContinueExpr = new AContinueExpr.init_acontinueexpr(
                                                tkwcontinuenode2,
                                                null
                                        )
@@ -19873,14 +19872,14 @@ private class ReduceAction551
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwcontinuenode2 = nodearraylist1
-                                       assert tkwcontinuenode2 isa TKwcontinue
+                                       assert tkwcontinuenode2 isa nullable TKwcontinue
                                        var pexprnode3 = nodearraylist2
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AContinueExpr.init_acontinueexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AContinueExpr = new AContinueExpr.init_acontinueexpr(
                                                tkwcontinuenode2,
                                                pexprnode3
                                        )
@@ -19893,10 +19892,10 @@ private class ReduceAction552
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(84), node_list)
        end
@@ -19906,10 +19905,10 @@ private class ReduceAction553
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(84), node_list)
        end
@@ -19919,10 +19918,10 @@ private class ReduceAction554
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(84), node_list)
        end
@@ -19932,10 +19931,10 @@ private class ReduceAction555
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(84), node_list)
        end
@@ -19945,10 +19944,10 @@ private class ReduceAction556
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(84), node_list)
        end
@@ -19958,7 +19957,7 @@ private class ReduceAction557
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -19967,19 +19966,19 @@ special ReduceAction
                                        var listnode5 = new Array[Object]
                                        var listnode6 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist5 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -19994,25 +19993,25 @@ private class ReduceAction558
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var listnode6 = new Array[Object]
-                                       var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist2 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -20027,7 +20026,7 @@ private class ReduceAction559
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -20037,28 +20036,28 @@ special ReduceAction
                                        var listnode5 = new Array[Object]
                                        var listnode7 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist5 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var listnode6 = nodearraylist6 
+#                                      end
+                                       var listnode6 = nodearraylist6
                                        assert listnode6 isa Array[Object]
-                                       if listnode6 != null then
+#                                      if listnode6 != null then
                                                if listnode7.is_empty then
                                                        listnode7 = listnode6
                                                else
                                                        listnode7.append(listnode6)
                                                end
-                                       end
-                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -20073,35 +20072,35 @@ private class ReduceAction560
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var listnode7 = new Array[Object]
-                                       var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist2 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var listnode6 = nodearraylist3 
+#                                      end
+                                       var listnode6 = nodearraylist3
                                        assert listnode6 isa Array[Object]
-                                       if listnode6 != null then
+#                                      if listnode6 != null then
                                                if listnode7.is_empty then
                                                        listnode7 = listnode6
                                                else
                                                        listnode7.append(listnode6)
                                                end
-                                       end
-                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -20116,22 +20115,22 @@ private class ReduceAction561
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var tkwsupernode3 = nodearraylist1
-                                       assert tkwsupernode3 isa TKwsuper
-                                       var listnode4 = nodearraylist2 
+                                       assert tkwsupernode3 isa nullable TKwsuper
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pexprnode1 = new ASuperExpr.init_asuperexpr(
+#                                      end
+                                       var pexprnode1: nullable ASuperExpr = new ASuperExpr.init_asuperexpr(
                                                null,
                                                tkwsupernode3,
                                                listnode5
@@ -20145,25 +20144,25 @@ private class ReduceAction562
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var pqualifiednode2 = nodearraylist1
-                                       assert pqualifiednode2 isa PQualified
+                                       assert pqualifiednode2 isa nullable PQualified
                                        var tkwsupernode3 = nodearraylist2
-                                       assert tkwsupernode3 isa TKwsuper
-                                       var listnode4 = nodearraylist3 
+                                       assert tkwsupernode3 isa nullable TKwsuper
+                                       var listnode4 = nodearraylist3
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pexprnode1 = new ASuperExpr.init_asuperexpr(
+#                                      end
+                                       var pexprnode1: nullable ASuperExpr = new ASuperExpr.init_asuperexpr(
                                                pqualifiednode2,
                                                tkwsupernode3,
                                                listnode5
@@ -20177,7 +20176,7 @@ private class ReduceAction563
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -20185,19 +20184,19 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tkwinitnode3 = nodearraylist4
-                                       assert tkwinitnode3 isa TKwinit
-                                       var listnode4 = nodearraylist5 
+                                       assert tkwinitnode3 isa nullable TKwinit
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pexprnode1 = new AInitExpr.init_ainitexpr(
+#                                      end
+                                       var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
                                                pexprnode2,
                                                tkwinitnode3,
                                                listnode5
@@ -20211,24 +20210,24 @@ private class ReduceAction564
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
-                                       var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tkwinitnode3 = nodearraylist1
-                                       assert tkwinitnode3 isa TKwinit
-                                       var listnode4 = nodearraylist2 
+                                       assert tkwinitnode3 isa nullable TKwinit
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pexprnode1 = new AInitExpr.init_ainitexpr(
+#                                      end
+                                       var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
                                                pexprnode2,
                                                tkwinitnode3,
                                                listnode5
@@ -20242,11 +20241,11 @@ private class ReduceAction565
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
                                        var pclosuredefnode1 = nodearraylist1
-                                       assert pclosuredefnode1 isa PClosureDef
+                                       assert pclosuredefnode1 isa nullable PClosureDef
                                        if pclosuredefnode1 != null then
                                                listnode2.add(pclosuredefnode1)
                                        end
@@ -20259,24 +20258,24 @@ private class ReduceAction566
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
                                        var pclosuredefnode1 = nodearraylist1
-                                       assert pclosuredefnode1 isa PClosureDef
-                                       var listnode2 = nodearraylist2 
+                                       assert pclosuredefnode1 isa nullable PClosureDef
+                                       var listnode2 = nodearraylist2
                                        assert listnode2 isa Array[Object]
                                        if pclosuredefnode1 != null then
                                                listnode3.add(pclosuredefnode1)
                                        end
-                                       if listnode2 != null then
+#                                      if listnode2 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode2
                                                else
                                                        listnode3.append(listnode2)
                                                end
-                                       end
+#                                      end
                                        node_list = listnode3
                                        p.push(p.go_to(85), node_list)
        end
@@ -20286,18 +20285,18 @@ private class ReduceAction567
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
                                        var tkwwithnode2 = nodearraylist1
-                                       assert tkwwithnode2 isa TKwwith
+                                       assert tkwwithnode2 isa nullable TKwwith
                                        var tkwdonode4 = nodearraylist2
-                                       assert tkwdonode4 isa TKwdo
+                                       assert tkwdonode4 isa nullable TKwdo
                                        var pexprnode5 = nodearraylist3
-                                       assert pexprnode5 isa PExpr
-                                       var pclosuredefnode1 = new AClosureDef.init_aclosuredef(
+                                       assert pexprnode5 isa nullable PExpr
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
                                                tkwwithnode2,
                                                listnode3,
                                                tkwdonode4,
@@ -20312,28 +20311,28 @@ private class ReduceAction568
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 tkwwithnode2 = nodearraylist1
-                                       assert tkwwithnode2 isa TKwwith
-                                       var listnode3 = nodearraylist2 
+                                       assert tkwwithnode2 isa nullable TKwwith
+                                       var listnode3 = nodearraylist2
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
+#                                      end
                                        var tkwdonode5 = nodearraylist3
-                                       assert tkwdonode5 isa TKwdo
+                                       assert tkwdonode5 isa nullable TKwdo
                                        var pexprnode6 = nodearraylist4
-                                       assert pexprnode6 isa PExpr
-                                       var pclosuredefnode1 = new AClosureDef.init_aclosuredef(
+                                       assert pexprnode6 isa nullable PExpr
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
                                                tkwwithnode2,
                                                listnode4,
                                                tkwdonode5,
@@ -20348,14 +20347,14 @@ private class ReduceAction569
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwvarnode2 = nodearraylist1
-                                       assert tkwvarnode2 isa TKwvar
+                                       assert tkwvarnode2 isa nullable TKwvar
                                        var tidnode3 = nodearraylist2
-                                       assert tidnode3 isa TId
-                                       var pexprnode1 = new AVardeclExpr.init_avardeclexpr(
+                                       assert tidnode3 isa nullable TId
+                                       var pexprnode1: nullable AVardeclExpr = new AVardeclExpr.init_avardeclexpr(
                                                tkwvarnode2,
                                                tidnode3,
                                                null,
@@ -20371,17 +20370,17 @@ private class ReduceAction570
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwvarnode2 = nodearraylist1
-                                       assert tkwvarnode2 isa TKwvar
+                                       assert tkwvarnode2 isa nullable TKwvar
                                        var tidnode3 = nodearraylist2
-                                       assert tidnode3 isa TId
+                                       assert tidnode3 isa nullable TId
                                        var ptypenode4 = nodearraylist3
-                                       assert ptypenode4 isa PType
-                                       var pexprnode1 = new AVardeclExpr.init_avardeclexpr(
+                                       assert ptypenode4 isa nullable PType
+                                       var pexprnode1: nullable AVardeclExpr = new AVardeclExpr.init_avardeclexpr(
                                                tkwvarnode2,
                                                tidnode3,
                                                ptypenode4,
@@ -20397,21 +20396,21 @@ private class ReduceAction571
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 tkwvarnode2 = nodearraylist1
-                                       assert tkwvarnode2 isa TKwvar
+                                       assert tkwvarnode2 isa nullable TKwvar
                                        var tidnode3 = nodearraylist2
-                                       assert tidnode3 isa TId
+                                       assert tidnode3 isa nullable TId
                                        var tassignnode5 = nodearraylist3
-                                       assert tassignnode5 isa TAssign
+                                       assert tassignnode5 isa nullable TAssign
                                        var pexprnode6 = nodearraylist5
-                                       assert pexprnode6 isa PExpr
-                                       var pexprnode1 = new AVardeclExpr.init_avardeclexpr(
+                                       assert pexprnode6 isa nullable PExpr
+                                       var pexprnode1: nullable AVardeclExpr = new AVardeclExpr.init_avardeclexpr(
                                                tkwvarnode2,
                                                tidnode3,
                                                null,
@@ -20427,7 +20426,7 @@ private class ReduceAction572
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -20435,16 +20434,16 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwvarnode2 = nodearraylist1
-                                       assert tkwvarnode2 isa TKwvar
+                                       assert tkwvarnode2 isa nullable TKwvar
                                        var tidnode3 = nodearraylist2
-                                       assert tidnode3 isa TId
+                                       assert tidnode3 isa nullable TId
                                        var ptypenode4 = nodearraylist3
-                                       assert ptypenode4 isa PType
+                                       assert ptypenode4 isa nullable PType
                                        var tassignnode5 = nodearraylist4
-                                       assert tassignnode5 isa TAssign
+                                       assert tassignnode5 isa nullable TAssign
                                        var pexprnode6 = nodearraylist6
-                                       assert pexprnode6 isa PExpr
-                                       var pexprnode1 = new AVardeclExpr.init_avardeclexpr(
+                                       assert pexprnode6 isa nullable PExpr
+                                       var pexprnode1: nullable AVardeclExpr = new AVardeclExpr.init_avardeclexpr(
                                                tkwvarnode2,
                                                tidnode3,
                                                ptypenode4,
@@ -20460,7 +20459,7 @@ private class ReduceAction573
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -20468,14 +20467,14 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tattridnode3 = nodearraylist4
-                                       assert tattridnode3 isa TAttrid
+                                       assert tattridnode3 isa nullable TAttrid
                                        var tassignnode4 = nodearraylist5
-                                       assert tassignnode4 isa TAssign
+                                       assert tassignnode4 isa nullable TAssign
                                        var pexprnode5 = nodearraylist6
-                                       assert pexprnode5 isa PExpr
-                                       var pexprnode1 = new AAttrAssignExpr.init_aattrassignexpr(
+                                       assert pexprnode5 isa nullable PExpr
+                                       var pexprnode1: nullable AAttrAssignExpr = new AAttrAssignExpr.init_aattrassignexpr(
                                                pexprnode2,
                                                tattridnode3,
                                                tassignnode4,
@@ -20490,19 +20489,19 @@ private class ReduceAction574
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tattridnode3 = nodearraylist1
-                                       assert tattridnode3 isa TAttrid
+                                       assert tattridnode3 isa nullable TAttrid
                                        var tassignnode4 = nodearraylist2
-                                       assert tassignnode4 isa TAssign
+                                       assert tassignnode4 isa nullable TAssign
                                        var pexprnode5 = nodearraylist3
-                                       assert pexprnode5 isa PExpr
-                                       var pexprnode1 = new AAttrAssignExpr.init_aattrassignexpr(
+                                       assert pexprnode5 isa nullable PExpr
+                                       var pexprnode1: nullable AAttrAssignExpr = new AAttrAssignExpr.init_aattrassignexpr(
                                                pexprnode2,
                                                tattridnode3,
                                                tassignnode4,
@@ -20517,7 +20516,7 @@ private class ReduceAction575
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -20527,23 +20526,23 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist5 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
+#                                      end
                                        var tassignnode6 = nodearraylist6
-                                       assert tassignnode6 isa TAssign
+                                       assert tassignnode6 isa nullable TAssign
                                        var pexprnode7 = nodearraylist7
-                                       assert pexprnode7 isa PExpr
-                                       var pexprnode1 = new ACallAssignExpr.init_acallassignexpr(
+                                       assert pexprnode7 isa nullable PExpr
+                                       var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -20559,30 +20558,30 @@ private class ReduceAction576
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
-                                       var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist2 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
+#                                      end
                                        var tassignnode6 = nodearraylist3
-                                       assert tassignnode6 isa TAssign
+                                       assert tassignnode6 isa nullable TAssign
                                        var pexprnode7 = nodearraylist4
-                                       assert pexprnode7 isa PExpr
-                                       var pexprnode1 = new ACallAssignExpr.init_acallassignexpr(
+                                       assert pexprnode7 isa nullable PExpr
+                                       var pexprnode1: nullable ACallAssignExpr = new ACallAssignExpr.init_acallassignexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -20598,28 +20597,28 @@ private class ReduceAction577
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
-                                       var listnode3 = nodearraylist2 
+                                       assert pexprnode2 isa nullable PExpr
+                                       var listnode3 = nodearraylist2
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
+#                                      end
                                        var tassignnode5 = nodearraylist3
-                                       assert tassignnode5 isa TAssign
+                                       assert tassignnode5 isa nullable TAssign
                                        var pexprnode6 = nodearraylist4
-                                       assert pexprnode6 isa PExpr
-                                       var pexprnode1 = new ABraAssignExpr.init_abraassignexpr(
+                                       assert pexprnode6 isa nullable PExpr
+                                       var pexprnode1: nullable ABraAssignExpr = new ABraAssignExpr.init_abraassignexpr(
                                                pexprnode2,
                                                listnode4,
                                                tassignnode5,
@@ -20634,7 +20633,7 @@ private class ReduceAction578
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -20642,14 +20641,14 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tattridnode3 = nodearraylist4
-                                       assert tattridnode3 isa TAttrid
+                                       assert tattridnode3 isa nullable TAttrid
                                        var passignopnode4 = nodearraylist5
-                                       assert passignopnode4 isa PAssignOp
+                                       assert passignopnode4 isa nullable PAssignOp
                                        var pexprnode5 = nodearraylist6
-                                       assert pexprnode5 isa PExpr
-                                       var pexprnode1 = new AAttrReassignExpr.init_aattrreassignexpr(
+                                       assert pexprnode5 isa nullable PExpr
+                                       var pexprnode1: nullable AAttrReassignExpr = new AAttrReassignExpr.init_aattrreassignexpr(
                                                pexprnode2,
                                                tattridnode3,
                                                passignopnode4,
@@ -20664,19 +20663,19 @@ private class ReduceAction579
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tattridnode3 = nodearraylist1
-                                       assert tattridnode3 isa TAttrid
+                                       assert tattridnode3 isa nullable TAttrid
                                        var passignopnode4 = nodearraylist2
-                                       assert passignopnode4 isa PAssignOp
+                                       assert passignopnode4 isa nullable PAssignOp
                                        var pexprnode5 = nodearraylist3
-                                       assert pexprnode5 isa PExpr
-                                       var pexprnode1 = new AAttrReassignExpr.init_aattrreassignexpr(
+                                       assert pexprnode5 isa nullable PExpr
+                                       var pexprnode1: nullable AAttrReassignExpr = new AAttrReassignExpr.init_aattrreassignexpr(
                                                pexprnode2,
                                                tattridnode3,
                                                passignopnode4,
@@ -20691,7 +20690,7 @@ private class ReduceAction580
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -20701,23 +20700,23 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist5 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
+#                                      end
                                        var passignopnode6 = nodearraylist6
-                                       assert passignopnode6 isa PAssignOp
+                                       assert passignopnode6 isa nullable PAssignOp
                                        var pexprnode7 = nodearraylist7
-                                       assert pexprnode7 isa PExpr
-                                       var pexprnode1 = new ACallReassignExpr.init_acallreassignexpr(
+                                       assert pexprnode7 isa nullable PExpr
+                                       var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -20733,30 +20732,30 @@ private class ReduceAction581
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
-                                       var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist2 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
+#                                      end
                                        var passignopnode6 = nodearraylist3
-                                       assert passignopnode6 isa PAssignOp
+                                       assert passignopnode6 isa nullable PAssignOp
                                        var pexprnode7 = nodearraylist4
-                                       assert pexprnode7 isa PExpr
-                                       var pexprnode1 = new ACallReassignExpr.init_acallreassignexpr(
+                                       assert pexprnode7 isa nullable PExpr
+                                       var pexprnode1: nullable ACallReassignExpr = new ACallReassignExpr.init_acallreassignexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -20772,28 +20771,28 @@ private class ReduceAction582
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
-                                       var listnode3 = nodearraylist2 
+                                       assert pexprnode2 isa nullable PExpr
+                                       var listnode3 = nodearraylist2
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
+#                                      end
                                        var passignopnode5 = nodearraylist3
-                                       assert passignopnode5 isa PAssignOp
+                                       assert passignopnode5 isa nullable PAssignOp
                                        var pexprnode6 = nodearraylist4
-                                       assert pexprnode6 isa PExpr
-                                       var pexprnode1 = new ABraReassignExpr.init_abrareassignexpr(
+                                       assert pexprnode6 isa nullable PExpr
+                                       var pexprnode1: nullable ABraReassignExpr = new ABraReassignExpr.init_abrareassignexpr(
                                                pexprnode2,
                                                listnode4,
                                                passignopnode5,
@@ -20808,14 +20807,14 @@ private class ReduceAction583
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwdonode2 = nodearraylist1
-                                       assert tkwdonode2 isa TKwdo
+                                       assert tkwdonode2 isa nullable TKwdo
                                        var pexprnode3 = nodearraylist2
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new ADoExpr.init_adoexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable ADoExpr = new ADoExpr.init_adoexpr(
                                                tkwdonode2,
                                                pexprnode3
                                        )
@@ -20828,7 +20827,7 @@ private class ReduceAction584
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist8 = p.pop
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
@@ -20838,14 +20837,14 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwifnode2 = nodearraylist1
-                                       assert tkwifnode2 isa TKwif
+                                       assert tkwifnode2 isa nullable TKwif
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
+                                       assert pexprnode3 isa nullable PExpr
                                        var pexprnode4 = nodearraylist6
-                                       assert pexprnode4 isa PExpr
+                                       assert pexprnode4 isa nullable PExpr
                                        var pexprnode5 = nodearraylist8
-                                       assert pexprnode5 isa PExpr
-                                       var pexprnode1 = new AIfExpr.init_aifexpr(
+                                       assert pexprnode5 isa nullable PExpr
+                                       var pexprnode1: nullable AIfExpr = new AIfExpr.init_aifexpr(
                                                tkwifnode2,
                                                pexprnode3,
                                                pexprnode4,
@@ -20860,7 +20859,7 @@ private class ReduceAction585
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -20868,14 +20867,14 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwwhilenode2 = nodearraylist1
-                                       assert tkwwhilenode2 isa TKwwhile
+                                       assert tkwwhilenode2 isa nullable TKwwhile
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
+                                       assert pexprnode3 isa nullable PExpr
                                        var tkwdonode4 = nodearraylist5
-                                       assert tkwdonode4 isa TKwdo
+                                       assert tkwdonode4 isa nullable TKwdo
                                        var pexprnode5 = nodearraylist6
-                                       assert pexprnode5 isa PExpr
-                                       var pexprnode1 = new AWhileExpr.init_awhileexpr(
+                                       assert pexprnode5 isa nullable PExpr
+                                       var pexprnode1: nullable AWhileExpr = new AWhileExpr.init_awhileexpr(
                                                tkwwhilenode2,
                                                pexprnode3,
                                                tkwdonode4,
@@ -20890,7 +20889,7 @@ private class ReduceAction586
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
@@ -20902,16 +20901,16 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwfornode2 = nodearraylist1
-                                       assert tkwfornode2 isa TKwfor
+                                       assert tkwfornode2 isa nullable TKwfor
                                        var tidnode3 = nodearraylist3
-                                       assert tidnode3 isa TId
+                                       assert tidnode3 isa nullable TId
                                        var pexprnode4 = nodearraylist7
-                                       assert pexprnode4 isa PExpr
+                                       assert pexprnode4 isa nullable PExpr
                                        var tkwdonode5 = nodearraylist9
-                                       assert tkwdonode5 isa TKwdo
+                                       assert tkwdonode5 isa nullable TKwdo
                                        var pexprnode6 = nodearraylist10
-                                       assert pexprnode6 isa PExpr
-                                       var pexprnode1 = new AForExpr.init_aforexpr(
+                                       assert pexprnode6 isa nullable PExpr
+                                       var pexprnode1: nullable AForExpr = new AForExpr.init_aforexpr(
                                                tkwfornode2,
                                                tidnode3,
                                                pexprnode4,
@@ -20927,14 +20926,14 @@ private class ReduceAction587
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwassertnode2 = nodearraylist1
-                                       assert tkwassertnode2 isa TKwassert
+                                       assert tkwassertnode2 isa nullable TKwassert
                                        var pexprnode4 = nodearraylist2
-                                       assert pexprnode4 isa PExpr
-                                       var pexprnode1 = new AAssertExpr.init_aassertexpr(
+                                       assert pexprnode4 isa nullable PExpr
+                                       var pexprnode1: nullable AAssertExpr = new AAssertExpr.init_aassertexpr(
                                                tkwassertnode2,
                                                null,
                                                pexprnode4
@@ -20948,17 +20947,17 @@ private class ReduceAction588
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwassertnode2 = nodearraylist1
-                                       assert tkwassertnode2 isa TKwassert
+                                       assert tkwassertnode2 isa nullable TKwassert
                                        var tidnode3 = nodearraylist2
-                                       assert tidnode3 isa TId
+                                       assert tidnode3 isa nullable TId
                                        var pexprnode4 = nodearraylist3
-                                       assert pexprnode4 isa PExpr
-                                       var pexprnode1 = new AAssertExpr.init_aassertexpr(
+                                       assert pexprnode4 isa nullable PExpr
+                                       var pexprnode1: nullable AAssertExpr = new AAssertExpr.init_aassertexpr(
                                                tkwassertnode2,
                                                tidnode3,
                                                pexprnode4
@@ -20972,10 +20971,10 @@ private class ReduceAction589
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(94), node_list)
        end
@@ -20985,7 +20984,7 @@ private class ReduceAction590
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -20995,28 +20994,28 @@ special ReduceAction
                                        var listnode5 = new Array[Object]
                                        var listnode7 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist5 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var listnode6 = nodearraylist6 
+#                                      end
+                                       var listnode6 = nodearraylist6
                                        assert listnode6 isa Array[Object]
-                                       if listnode6 != null then
+#                                      if listnode6 != null then
                                                if listnode7.is_empty then
                                                        listnode7 = listnode6
                                                else
                                                        listnode7.append(listnode6)
                                                end
-                                       end
-                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -21031,35 +21030,35 @@ private class ReduceAction591
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var listnode7 = new Array[Object]
-                                       var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist2 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var listnode6 = nodearraylist3 
+#                                      end
+                                       var listnode6 = nodearraylist3
                                        assert listnode6 isa Array[Object]
-                                       if listnode6 != null then
+#                                      if listnode6 != null then
                                                if listnode7.is_empty then
                                                        listnode7 = listnode6
                                                else
                                                        listnode7.append(listnode6)
                                                end
-                                       end
-                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -21074,33 +21073,33 @@ private class ReduceAction592
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
                                        var listnode6 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
-                                       var listnode3 = nodearraylist2 
+                                       assert pexprnode2 isa nullable PExpr
+                                       var listnode3 = nodearraylist2
                                        assert listnode3 isa Array[Object]
-                                       if listnode3 != null then
+#                                      if listnode3 != null then
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
-                                       var listnode5 = nodearraylist3 
+#                                      end
+                                       var listnode5 = nodearraylist3
                                        assert listnode5 isa Array[Object]
-                                       if listnode5 != null then
+#                                      if listnode5 != null then
                                                if listnode6.is_empty then
                                                        listnode6 = listnode5
                                                else
                                                        listnode6.append(listnode5)
                                                end
-                                       end
-                                       var pexprnode1 = new ABraExpr.init_abraexpr(
+#                                      end
+                                       var pexprnode1: nullable ABraExpr = new ABraExpr.init_abraexpr(
                                                pexprnode2,
                                                listnode4,
                                                listnode6
@@ -21114,10 +21113,10 @@ private class ReduceAction593
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(95), node_list)
        end
@@ -21127,7 +21126,7 @@ private class ReduceAction594
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -21137,28 +21136,28 @@ special ReduceAction
                                        var listnode5 = new Array[Object]
                                        var listnode7 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist5 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var listnode6 = nodearraylist6 
+#                                      end
+                                       var listnode6 = nodearraylist6
                                        assert listnode6 isa Array[Object]
-                                       if listnode6 != null then
+#                                      if listnode6 != null then
                                                if listnode7.is_empty then
                                                        listnode7 = listnode6
                                                else
                                                        listnode7.append(listnode6)
                                                end
-                                       end
-                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -21173,35 +21172,35 @@ private class ReduceAction595
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var listnode7 = new Array[Object]
-                                       var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist2 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var listnode6 = nodearraylist3 
+#                                      end
+                                       var listnode6 = nodearraylist3
                                        assert listnode6 isa Array[Object]
-                                       if listnode6 != null then
+#                                      if listnode6 != null then
                                                if listnode7.is_empty then
                                                        listnode7 = listnode6
                                                else
                                                        listnode7.append(listnode6)
                                                end
-                                       end
-                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -21216,10 +21215,10 @@ private class ReduceAction596
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(96), node_list)
        end
@@ -21229,7 +21228,7 @@ private class ReduceAction597
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -21239,28 +21238,28 @@ special ReduceAction
                                        var listnode5 = new Array[Object]
                                        var listnode7 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist5 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var listnode6 = nodearraylist6 
+#                                      end
+                                       var listnode6 = nodearraylist6
                                        assert listnode6 isa Array[Object]
-                                       if listnode6 != null then
+#                                      if listnode6 != null then
                                                if listnode7.is_empty then
                                                        listnode7 = listnode6
                                                else
                                                        listnode7.append(listnode6)
                                                end
-                                       end
-                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -21275,35 +21274,35 @@ private class ReduceAction598
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var listnode7 = new Array[Object]
-                                       var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist2 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var listnode6 = nodearraylist3 
+#                                      end
+                                       var listnode6 = nodearraylist3
                                        assert listnode6 isa Array[Object]
-                                       if listnode6 != null then
+#                                      if listnode6 != null then
                                                if listnode7.is_empty then
                                                        listnode7 = listnode6
                                                else
                                                        listnode7.append(listnode6)
                                                end
-                                       end
-                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -21318,10 +21317,10 @@ private class ReduceAction599
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(97), node_list)
        end
@@ -21331,7 +21330,7 @@ private class ReduceAction600
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
@@ -21344,18 +21343,18 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwifnode2 = nodearraylist1
-                                       assert tkwifnode2 isa TKwif
+                                       assert tkwifnode2 isa nullable TKwif
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
+                                       assert pexprnode3 isa nullable PExpr
                                        var tkwthennode4 = nodearraylist5
-                                       assert tkwthennode4 isa TKwthen
+                                       assert tkwthennode4 isa nullable TKwthen
                                        var pexprnode5 = nodearraylist7
-                                       assert pexprnode5 isa PExpr
+                                       assert pexprnode5 isa nullable PExpr
                                        var tkwelsenode6 = nodearraylist9
-                                       assert tkwelsenode6 isa TKwelse
+                                       assert tkwelsenode6 isa nullable TKwelse
                                        var pexprnode7 = nodearraylist11
-                                       assert pexprnode7 isa PExpr
-                                       var pexprnode1 = new AIfexprExpr.init_aifexprexpr(
+                                       assert pexprnode7 isa nullable PExpr
+                                       var pexprnode1: nullable AIfexprExpr = new AIfexprExpr.init_aifexprexpr(
                                                tkwifnode2,
                                                pexprnode3,
                                                tkwthennode4,
@@ -21372,10 +21371,10 @@ private class ReduceAction601
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(98), node_list)
        end
@@ -21385,16 +21384,16 @@ private class ReduceAction602
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AOrExpr.init_aorexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AOrExpr = new AOrExpr.init_aorexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -21407,16 +21406,16 @@ private class ReduceAction603
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AAndExpr.init_aandexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AAndExpr = new AAndExpr.init_aandexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -21429,10 +21428,10 @@ private class ReduceAction604
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(99), node_list)
        end
@@ -21442,15 +21441,15 @@ private class ReduceAction605
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwnotnode2 = nodearraylist1
-                                       assert tkwnotnode2 isa TKwnot
+                                       assert tkwnotnode2 isa nullable TKwnot
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new ANotExpr.init_anotexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable ANotExpr = new ANotExpr.init_anotexpr(
                                                tkwnotnode2,
                                                pexprnode3
                                        )
@@ -21463,10 +21462,10 @@ private class ReduceAction606
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(100), node_list)
        end
@@ -21476,16 +21475,16 @@ private class ReduceAction607
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AEqExpr.init_aeqexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AEqExpr = new AEqExpr.init_aeqexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -21498,16 +21497,16 @@ private class ReduceAction608
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AEeExpr.init_aeeexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AEeExpr = new AEeExpr.init_aeeexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -21520,16 +21519,16 @@ private class ReduceAction609
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new ANeExpr.init_aneexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable ANeExpr = new ANeExpr.init_aneexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -21542,16 +21541,16 @@ private class ReduceAction610
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new ALtExpr.init_altexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable ALtExpr = new ALtExpr.init_altexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -21564,16 +21563,16 @@ private class ReduceAction611
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new ALeExpr.init_aleexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable ALeExpr = new ALeExpr.init_aleexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -21586,16 +21585,16 @@ private class ReduceAction612
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AGtExpr.init_agtexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AGtExpr = new AGtExpr.init_agtexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -21608,16 +21607,16 @@ private class ReduceAction613
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AGeExpr.init_ageexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AGeExpr = new AGeExpr.init_ageexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -21630,16 +21629,16 @@ private class ReduceAction614
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AStarshipExpr.init_astarshipexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AStarshipExpr = new AStarshipExpr.init_astarshipexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -21652,16 +21651,16 @@ private class ReduceAction615
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var ptypenode3 = nodearraylist4
-                                       assert ptypenode3 isa PType
-                                       var pexprnode1 = new AIsaExpr.init_aisaexpr(
+                                       assert ptypenode3 isa nullable PType
+                                       var pexprnode1: nullable AIsaExpr = new AIsaExpr.init_aisaexpr(
                                                pexprnode2,
                                                ptypenode3
                                        )
@@ -21674,10 +21673,10 @@ private class ReduceAction616
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(101), node_list)
        end
@@ -21687,16 +21686,16 @@ private class ReduceAction617
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new APlusExpr.init_aplusexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable APlusExpr = new APlusExpr.init_aplusexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -21709,16 +21708,16 @@ private class ReduceAction618
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AMinusExpr.init_aminusexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AMinusExpr = new AMinusExpr.init_aminusexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -21731,10 +21730,10 @@ private class ReduceAction619
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(102), node_list)
        end
@@ -21744,16 +21743,16 @@ private class ReduceAction620
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AStarExpr.init_astarexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AStarExpr = new AStarExpr.init_astarexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -21766,16 +21765,16 @@ private class ReduceAction621
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new ASlashExpr.init_aslashexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable ASlashExpr = new ASlashExpr.init_aslashexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -21788,16 +21787,16 @@ private class ReduceAction622
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new APercentExpr.init_apercentexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable APercentExpr = new APercentExpr.init_apercentexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -21810,10 +21809,10 @@ private class ReduceAction623
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(103), node_list)
        end
@@ -21823,15 +21822,15 @@ private class ReduceAction624
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tminusnode2 = nodearraylist1
-                                       assert tminusnode2 isa TMinus
+                                       assert tminusnode2 isa nullable TMinus
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AUminusExpr.init_auminusexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AUminusExpr = new AUminusExpr.init_auminusexpr(
                                                tminusnode2,
                                                pexprnode3
                                        )
@@ -21844,15 +21843,15 @@ private class ReduceAction625
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwoncenode2 = nodearraylist1
-                                       assert tkwoncenode2 isa TKwonce
+                                       assert tkwoncenode2 isa nullable TKwonce
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AOnceExpr.init_aonceexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AOnceExpr = new AOnceExpr.init_aonceexpr(
                                                tkwoncenode2,
                                                pexprnode3
                                        )
@@ -21865,10 +21864,10 @@ private class ReduceAction626
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(104), node_list)
        end
@@ -21878,26 +21877,26 @@ private class ReduceAction627
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode6 = new Array[Object]
                                        var tkwnewnode2 = nodearraylist1
-                                       assert tkwnewnode2 isa TKwnew
+                                       assert tkwnewnode2 isa nullable TKwnew
                                        var ptypenode3 = nodearraylist3
-                                       assert ptypenode3 isa PType
-                                       var listnode5 = nodearraylist4 
+                                       assert ptypenode3 isa nullable PType
+                                       var listnode5 = nodearraylist4
                                        assert listnode5 isa Array[Object]
-                                       if listnode5 != null then
+#                                      if listnode5 != null then
                                                if listnode6.is_empty then
                                                        listnode6 = listnode5
                                                else
                                                        listnode6.append(listnode5)
                                                end
-                                       end
-                                       var pexprnode1 = new ANewExpr.init_anewexpr(
+#                                      end
+                                       var pexprnode1: nullable ANewExpr = new ANewExpr.init_anewexpr(
                                                tkwnewnode2,
                                                ptypenode3,
                                                null,
@@ -21912,19 +21911,19 @@ private class ReduceAction628
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       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 tkwissetnode2 = nodearraylist1
-                                       assert tkwissetnode2 isa TKwisset
+                                       assert tkwissetnode2 isa nullable TKwisset
                                        var pexprnode3 = nodearraylist2
-                                       assert pexprnode3 isa PExpr
+                                       assert pexprnode3 isa nullable PExpr
                                        var tattridnode4 = nodearraylist5
-                                       assert tattridnode4 isa TAttrid
-                                       var pexprnode1 = new AIssetAttrExpr.init_aissetattrexpr(
+                                       assert tattridnode4 isa nullable TAttrid
+                                       var pexprnode1: nullable AIssetAttrExpr = new AIssetAttrExpr.init_aissetattrexpr(
                                                tkwissetnode2,
                                                pexprnode3,
                                                tattridnode4
@@ -21938,16 +21937,16 @@ private class ReduceAction629
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwissetnode2 = nodearraylist1
-                                       assert tkwissetnode2 isa TKwisset
-                                       var pexprnode3 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       assert tkwissetnode2 isa nullable TKwisset
+                                       var pexprnode3: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tattridnode4 = nodearraylist2
-                                       assert tattridnode4 isa TAttrid
-                                       var pexprnode1 = new AIssetAttrExpr.init_aissetattrexpr(
+                                       assert tattridnode4 isa nullable TAttrid
+                                       var pexprnode1: nullable AIssetAttrExpr = new AIssetAttrExpr.init_aissetattrexpr(
                                                tkwissetnode2,
                                                pexprnode3,
                                                tattridnode4
@@ -21961,16 +21960,16 @@ private class ReduceAction630
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tattridnode3 = nodearraylist4
-                                       assert tattridnode3 isa TAttrid
-                                       var pexprnode1 = new AAttrExpr.init_aattrexpr(
+                                       assert tattridnode3 isa nullable TAttrid
+                                       var pexprnode1: nullable AAttrExpr = new AAttrExpr.init_aattrexpr(
                                                pexprnode2,
                                                tattridnode3
                                        )
@@ -21983,13 +21982,13 @@ private class ReduceAction631
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tattridnode3 = nodearraylist1
-                                       assert tattridnode3 isa TAttrid
-                                       var pexprnode1 = new AAttrExpr.init_aattrexpr(
+                                       assert tattridnode3 isa nullable TAttrid
+                                       var pexprnode1: nullable AAttrExpr = new AAttrExpr.init_aattrexpr(
                                                pexprnode2,
                                                tattridnode3
                                        )
@@ -22002,7 +22001,7 @@ private class ReduceAction632
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -22011,19 +22010,19 @@ special ReduceAction
                                        var listnode5 = new Array[Object]
                                        var listnode6 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist5 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -22038,25 +22037,25 @@ private class ReduceAction633
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var listnode6 = new Array[Object]
-                                       var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist2 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -22071,22 +22070,22 @@ private class ReduceAction634
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var tkwsupernode3 = nodearraylist1
-                                       assert tkwsupernode3 isa TKwsuper
-                                       var listnode4 = nodearraylist2 
+                                       assert tkwsupernode3 isa nullable TKwsuper
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pexprnode1 = new ASuperExpr.init_asuperexpr(
+#                                      end
+                                       var pexprnode1: nullable ASuperExpr = new ASuperExpr.init_asuperexpr(
                                                null,
                                                tkwsupernode3,
                                                listnode5
@@ -22100,25 +22099,25 @@ private class ReduceAction635
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var pqualifiednode2 = nodearraylist1
-                                       assert pqualifiednode2 isa PQualified
+                                       assert pqualifiednode2 isa nullable PQualified
                                        var tkwsupernode3 = nodearraylist2
-                                       assert tkwsupernode3 isa TKwsuper
-                                       var listnode4 = nodearraylist3 
+                                       assert tkwsupernode3 isa nullable TKwsuper
+                                       var listnode4 = nodearraylist3
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pexprnode1 = new ASuperExpr.init_asuperexpr(
+#                                      end
+                                       var pexprnode1: nullable ASuperExpr = new ASuperExpr.init_asuperexpr(
                                                pqualifiednode2,
                                                tkwsupernode3,
                                                listnode5
@@ -22132,7 +22131,7 @@ private class ReduceAction636
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
@@ -22140,19 +22139,19 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tkwinitnode3 = nodearraylist4
-                                       assert tkwinitnode3 isa TKwinit
-                                       var listnode4 = nodearraylist5 
+                                       assert tkwinitnode3 isa nullable TKwinit
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pexprnode1 = new AInitExpr.init_ainitexpr(
+#                                      end
+                                       var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
                                                pexprnode2,
                                                tkwinitnode3,
                                                listnode5
@@ -22166,24 +22165,24 @@ private class ReduceAction637
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
-                                       var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tkwinitnode3 = nodearraylist1
-                                       assert tkwinitnode3 isa TKwinit
-                                       var listnode4 = nodearraylist2 
+                                       assert tkwinitnode3 isa nullable TKwinit
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pexprnode1 = new AInitExpr.init_ainitexpr(
+#                                      end
+                                       var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
                                                pexprnode2,
                                                tkwinitnode3,
                                                listnode5
@@ -22197,7 +22196,7 @@ private class ReduceAction638
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -22207,21 +22206,21 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode6 = new Array[Object]
                                        var tkwnewnode2 = nodearraylist1
-                                       assert tkwnewnode2 isa TKwnew
+                                       assert tkwnewnode2 isa nullable TKwnew
                                        var ptypenode3 = nodearraylist3
-                                       assert ptypenode3 isa PType
+                                       assert ptypenode3 isa nullable PType
                                        var tidnode4 = nodearraylist6
-                                       assert tidnode4 isa TId
-                                       var listnode5 = nodearraylist7 
+                                       assert tidnode4 isa nullable TId
+                                       var listnode5 = nodearraylist7
                                        assert listnode5 isa Array[Object]
-                                       if listnode5 != null then
+#                                      if listnode5 != null then
                                                if listnode6.is_empty then
                                                        listnode6 = listnode5
                                                else
                                                        listnode6.append(listnode5)
                                                end
-                                       end
-                                       var pexprnode1 = new ANewExpr.init_anewexpr(
+#                                      end
+                                       var pexprnode1: nullable ANewExpr = new ANewExpr.init_anewexpr(
                                                tkwnewnode2,
                                                ptypenode3,
                                                tidnode4,
@@ -22236,11 +22235,11 @@ private class ReduceAction639
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tkwselfnode2 = nodearraylist1
-                                       assert tkwselfnode2 isa TKwself
-                                       var pexprnode1 = new ASelfExpr.init_aselfexpr(
+                                       assert tkwselfnode2 isa nullable TKwself
+                                       var pexprnode1: nullable ASelfExpr = new ASelfExpr.init_aselfexpr(
                                                tkwselfnode2
                                        )
                                        node_list = pexprnode1
@@ -22252,11 +22251,11 @@ private class ReduceAction640
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tkwtruenode2 = nodearraylist1
-                                       assert tkwtruenode2 isa TKwtrue
-                                       var pexprnode1 = new ATrueExpr.init_atrueexpr(
+                                       assert tkwtruenode2 isa nullable TKwtrue
+                                       var pexprnode1: nullable ATrueExpr = new ATrueExpr.init_atrueexpr(
                                                tkwtruenode2
                                        )
                                        node_list = pexprnode1
@@ -22268,11 +22267,11 @@ private class ReduceAction641
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tkwfalsenode2 = nodearraylist1
-                                       assert tkwfalsenode2 isa TKwfalse
-                                       var pexprnode1 = new AFalseExpr.init_afalseexpr(
+                                       assert tkwfalsenode2 isa nullable TKwfalse
+                                       var pexprnode1: nullable AFalseExpr = new AFalseExpr.init_afalseexpr(
                                                tkwfalsenode2
                                        )
                                        node_list = pexprnode1
@@ -22284,11 +22283,11 @@ private class ReduceAction642
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tkwnullnode2 = nodearraylist1
-                                       assert tkwnullnode2 isa TKwnull
-                                       var pexprnode1 = new ANullExpr.init_anullexpr(
+                                       assert tkwnullnode2 isa nullable TKwnull
+                                       var pexprnode1: nullable ANullExpr = new ANullExpr.init_anullexpr(
                                                tkwnullnode2
                                        )
                                        node_list = pexprnode1
@@ -22300,11 +22299,11 @@ private class ReduceAction643
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tnumbernode2 = nodearraylist1
-                                       assert tnumbernode2 isa TNumber
-                                       var pexprnode1 = new AIntExpr.init_aintexpr(
+                                       assert tnumbernode2 isa nullable TNumber
+                                       var pexprnode1: nullable AIntExpr = new AIntExpr.init_aintexpr(
                                                tnumbernode2
                                        )
                                        node_list = pexprnode1
@@ -22316,11 +22315,11 @@ private class ReduceAction644
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tfloatnode2 = nodearraylist1
-                                       assert tfloatnode2 isa TFloat
-                                       var pexprnode1 = new AFloatExpr.init_afloatexpr(
+                                       assert tfloatnode2 isa nullable TFloat
+                                       var pexprnode1: nullable AFloatExpr = new AFloatExpr.init_afloatexpr(
                                                tfloatnode2
                                        )
                                        node_list = pexprnode1
@@ -22332,11 +22331,11 @@ private class ReduceAction645
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tcharnode2 = nodearraylist1
-                                       assert tcharnode2 isa TChar
-                                       var pexprnode1 = new ACharExpr.init_acharexpr(
+                                       assert tcharnode2 isa nullable TChar
+                                       var pexprnode1: nullable ACharExpr = new ACharExpr.init_acharexpr(
                                                tcharnode2
                                        )
                                        node_list = pexprnode1
@@ -22348,11 +22347,11 @@ private class ReduceAction646
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tstringnode2 = nodearraylist1
-                                       assert tstringnode2 isa TString
-                                       var pexprnode1 = new AStringExpr.init_astringexpr(
+                                       assert tstringnode2 isa nullable TString
+                                       var pexprnode1: nullable AStringExpr = new AStringExpr.init_astringexpr(
                                                tstringnode2
                                        )
                                        node_list = pexprnode1
@@ -22364,10 +22363,10 @@ private class ReduceAction647
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(105), node_list)
        end
@@ -22377,7 +22376,7 @@ private class ReduceAction648
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
@@ -22389,12 +22388,12 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tkwasnode3 = nodearraylist4
-                                       assert tkwasnode3 isa TKwas
+                                       assert tkwasnode3 isa nullable TKwas
                                        var ptypenode4 = nodearraylist8
-                                       assert ptypenode4 isa PType
-                                       var pexprnode1 = new AAsCastExpr.init_aascastexpr(
+                                       assert ptypenode4 isa nullable PType
+                                       var pexprnode1: nullable AAsCastExpr = new AAsCastExpr.init_aascastexpr(
                                                pexprnode2,
                                                tkwasnode3,
                                                ptypenode4
@@ -22408,7 +22407,7 @@ private class ReduceAction649
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist12 = p.pop
                                        var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
@@ -22422,14 +22421,14 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tkwasnode3 = nodearraylist4
-                                       assert tkwasnode3 isa TKwas
+                                       assert tkwasnode3 isa nullable TKwas
                                        var tkwnotnode4 = nodearraylist8
-                                       assert tkwnotnode4 isa TKwnot
+                                       assert tkwnotnode4 isa nullable TKwnot
                                        var tkwnullnode5 = nodearraylist10
-                                       assert tkwnullnode5 isa TKwnull
-                                       var pexprnode1 = new AAsNotnullExpr.init_aasnotnullexpr(
+                                       assert tkwnullnode5 isa nullable TKwnull
+                                       var pexprnode1: nullable AAsNotnullExpr = new AAsNotnullExpr.init_aasnotnullexpr(
                                                pexprnode2,
                                                tkwasnode3,
                                                tkwnotnode4,
@@ -22444,10 +22443,10 @@ private class ReduceAction650
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(106), node_list)
        end
@@ -22457,7 +22456,7 @@ private class ReduceAction651
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -22467,28 +22466,28 @@ special ReduceAction
                                        var listnode5 = new Array[Object]
                                        var listnode7 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist5 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var listnode6 = nodearraylist6 
+#                                      end
+                                       var listnode6 = nodearraylist6
                                        assert listnode6 isa Array[Object]
-                                       if listnode6 != null then
+#                                      if listnode6 != null then
                                                if listnode7.is_empty then
                                                        listnode7 = listnode6
                                                else
                                                        listnode7.append(listnode6)
                                                end
-                                       end
-                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -22503,35 +22502,35 @@ private class ReduceAction652
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var listnode7 = new Array[Object]
-                                       var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist2 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var listnode6 = nodearraylist3 
+#                                      end
+                                       var listnode6 = nodearraylist3
                                        assert listnode6 isa Array[Object]
-                                       if listnode6 != null then
+#                                      if listnode6 != null then
                                                if listnode7.is_empty then
                                                        listnode7 = listnode6
                                                else
                                                        listnode7.append(listnode6)
                                                end
-                                       end
-                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -22546,10 +22545,10 @@ private class ReduceAction653
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(107), node_list)
        end
@@ -22559,7 +22558,7 @@ private class ReduceAction654
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
@@ -22572,18 +22571,18 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwifnode2 = nodearraylist1
-                                       assert tkwifnode2 isa TKwif
+                                       assert tkwifnode2 isa nullable TKwif
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
+                                       assert pexprnode3 isa nullable PExpr
                                        var tkwthennode4 = nodearraylist5
-                                       assert tkwthennode4 isa TKwthen
+                                       assert tkwthennode4 isa nullable TKwthen
                                        var pexprnode5 = nodearraylist7
-                                       assert pexprnode5 isa PExpr
+                                       assert pexprnode5 isa nullable PExpr
                                        var tkwelsenode6 = nodearraylist9
-                                       assert tkwelsenode6 isa TKwelse
+                                       assert tkwelsenode6 isa nullable TKwelse
                                        var pexprnode7 = nodearraylist11
-                                       assert pexprnode7 isa PExpr
-                                       var pexprnode1 = new AIfexprExpr.init_aifexprexpr(
+                                       assert pexprnode7 isa nullable PExpr
+                                       var pexprnode1: nullable AIfexprExpr = new AIfexprExpr.init_aifexprexpr(
                                                tkwifnode2,
                                                pexprnode3,
                                                tkwthennode4,
@@ -22600,10 +22599,10 @@ private class ReduceAction655
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(108), node_list)
        end
@@ -22613,16 +22612,16 @@ private class ReduceAction656
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AOrExpr.init_aorexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AOrExpr = new AOrExpr.init_aorexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -22635,16 +22634,16 @@ private class ReduceAction657
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AAndExpr.init_aandexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AAndExpr = new AAndExpr.init_aandexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -22657,10 +22656,10 @@ private class ReduceAction658
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(109), node_list)
        end
@@ -22670,15 +22669,15 @@ private class ReduceAction659
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwnotnode2 = nodearraylist1
-                                       assert tkwnotnode2 isa TKwnot
+                                       assert tkwnotnode2 isa nullable TKwnot
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new ANotExpr.init_anotexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable ANotExpr = new ANotExpr.init_anotexpr(
                                                tkwnotnode2,
                                                pexprnode3
                                        )
@@ -22691,10 +22690,10 @@ private class ReduceAction660
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(110), node_list)
        end
@@ -22704,16 +22703,16 @@ private class ReduceAction661
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AEqExpr.init_aeqexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AEqExpr = new AEqExpr.init_aeqexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -22726,16 +22725,16 @@ private class ReduceAction662
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AEeExpr.init_aeeexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AEeExpr = new AEeExpr.init_aeeexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -22748,16 +22747,16 @@ private class ReduceAction663
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new ANeExpr.init_aneexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable ANeExpr = new ANeExpr.init_aneexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -22770,16 +22769,16 @@ private class ReduceAction664
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new ALtExpr.init_altexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable ALtExpr = new ALtExpr.init_altexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -22792,16 +22791,16 @@ private class ReduceAction665
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new ALeExpr.init_aleexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable ALeExpr = new ALeExpr.init_aleexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -22814,16 +22813,16 @@ private class ReduceAction666
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AGtExpr.init_agtexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AGtExpr = new AGtExpr.init_agtexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -22836,16 +22835,16 @@ private class ReduceAction667
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AGeExpr.init_ageexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AGeExpr = new AGeExpr.init_ageexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -22858,16 +22857,16 @@ private class ReduceAction668
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AStarshipExpr.init_astarshipexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AStarshipExpr = new AStarshipExpr.init_astarshipexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -22880,16 +22879,16 @@ private class ReduceAction669
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var ptypenode3 = nodearraylist4
-                                       assert ptypenode3 isa PType
-                                       var pexprnode1 = new AIsaExpr.init_aisaexpr(
+                                       assert ptypenode3 isa nullable PType
+                                       var pexprnode1: nullable AIsaExpr = new AIsaExpr.init_aisaexpr(
                                                pexprnode2,
                                                ptypenode3
                                        )
@@ -22902,10 +22901,10 @@ private class ReduceAction670
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(111), node_list)
        end
@@ -22915,16 +22914,16 @@ private class ReduceAction671
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new APlusExpr.init_aplusexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable APlusExpr = new APlusExpr.init_aplusexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -22937,16 +22936,16 @@ private class ReduceAction672
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AMinusExpr.init_aminusexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AMinusExpr = new AMinusExpr.init_aminusexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -22959,10 +22958,10 @@ private class ReduceAction673
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(112), node_list)
        end
@@ -22972,16 +22971,16 @@ private class ReduceAction674
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AStarExpr.init_astarexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AStarExpr = new AStarExpr.init_astarexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -22994,16 +22993,16 @@ private class ReduceAction675
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new ASlashExpr.init_aslashexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable ASlashExpr = new ASlashExpr.init_aslashexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -23016,16 +23015,16 @@ private class ReduceAction676
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist4
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new APercentExpr.init_apercentexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable APercentExpr = new APercentExpr.init_apercentexpr(
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -23038,10 +23037,10 @@ private class ReduceAction677
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(113), node_list)
        end
@@ -23051,15 +23050,15 @@ private class ReduceAction678
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tminusnode2 = nodearraylist1
-                                       assert tminusnode2 isa TMinus
+                                       assert tminusnode2 isa nullable TMinus
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AUminusExpr.init_auminusexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AUminusExpr = new AUminusExpr.init_auminusexpr(
                                                tminusnode2,
                                                pexprnode3
                                        )
@@ -23072,15 +23071,15 @@ private class ReduceAction679
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwoncenode2 = nodearraylist1
-                                       assert tkwoncenode2 isa TKwonce
+                                       assert tkwoncenode2 isa nullable TKwonce
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
-                                       var pexprnode1 = new AOnceExpr.init_aonceexpr(
+                                       assert pexprnode3 isa nullable PExpr
+                                       var pexprnode1: nullable AOnceExpr = new AOnceExpr.init_aonceexpr(
                                                tkwoncenode2,
                                                pexprnode3
                                        )
@@ -23093,10 +23092,10 @@ private class ReduceAction680
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(114), node_list)
        end
@@ -23106,26 +23105,26 @@ private class ReduceAction681
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist4 = p.pop
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode6 = new Array[Object]
                                        var tkwnewnode2 = nodearraylist1
-                                       assert tkwnewnode2 isa TKwnew
+                                       assert tkwnewnode2 isa nullable TKwnew
                                        var ptypenode3 = nodearraylist3
-                                       assert ptypenode3 isa PType
-                                       var listnode5 = nodearraylist4 
+                                       assert ptypenode3 isa nullable PType
+                                       var listnode5 = nodearraylist4
                                        assert listnode5 isa Array[Object]
-                                       if listnode5 != null then
+#                                      if listnode5 != null then
                                                if listnode6.is_empty then
                                                        listnode6 = listnode5
                                                else
                                                        listnode6.append(listnode5)
                                                end
-                                       end
-                                       var pexprnode1 = new ANewExpr.init_anewexpr(
+#                                      end
+                                       var pexprnode1: nullable ANewExpr = new ANewExpr.init_anewexpr(
                                                tkwnewnode2,
                                                ptypenode3,
                                                null,
@@ -23140,17 +23139,17 @@ private class ReduceAction682
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwissetnode2 = nodearraylist1
-                                       assert tkwissetnode2 isa TKwisset
+                                       assert tkwissetnode2 isa nullable TKwisset
                                        var pexprnode3 = nodearraylist2
-                                       assert pexprnode3 isa PExpr
+                                       assert pexprnode3 isa nullable PExpr
                                        var tattridnode4 = nodearraylist3
-                                       assert tattridnode4 isa TAttrid
-                                       var pexprnode1 = new AIssetAttrExpr.init_aissetattrexpr(
+                                       assert tattridnode4 isa nullable TAttrid
+                                       var pexprnode1: nullable AIssetAttrExpr = new AIssetAttrExpr.init_aissetattrexpr(
                                                tkwissetnode2,
                                                pexprnode3,
                                                tattridnode4
@@ -23164,14 +23163,14 @@ private class ReduceAction683
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tattridnode3 = nodearraylist2
-                                       assert tattridnode3 isa TAttrid
-                                       var pexprnode1 = new AAttrExpr.init_aattrexpr(
+                                       assert tattridnode3 isa nullable TAttrid
+                                       var pexprnode1: nullable AAttrExpr = new AAttrExpr.init_aattrexpr(
                                                pexprnode2,
                                                tattridnode3
                                        )
@@ -23184,26 +23183,26 @@ private class ReduceAction684
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var listnode6 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tidnode3 = nodearraylist2
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist3 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist3
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -23218,22 +23217,22 @@ private class ReduceAction685
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var tkwsupernode3 = nodearraylist1
-                                       assert tkwsupernode3 isa TKwsuper
-                                       var listnode4 = nodearraylist2 
+                                       assert tkwsupernode3 isa nullable TKwsuper
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pexprnode1 = new ASuperExpr.init_asuperexpr(
+#                                      end
+                                       var pexprnode1: nullable ASuperExpr = new ASuperExpr.init_asuperexpr(
                                                null,
                                                tkwsupernode3,
                                                listnode5
@@ -23247,25 +23246,25 @@ private class ReduceAction686
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var pqualifiednode2 = nodearraylist1
-                                       assert pqualifiednode2 isa PQualified
+                                       assert pqualifiednode2 isa nullable PQualified
                                        var tkwsupernode3 = nodearraylist2
-                                       assert tkwsupernode3 isa TKwsuper
-                                       var listnode4 = nodearraylist3 
+                                       assert tkwsupernode3 isa nullable TKwsuper
+                                       var listnode4 = nodearraylist3
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pexprnode1 = new ASuperExpr.init_asuperexpr(
+#                                      end
+                                       var pexprnode1: nullable ASuperExpr = new ASuperExpr.init_asuperexpr(
                                                pqualifiednode2,
                                                tkwsupernode3,
                                                listnode5
@@ -23279,25 +23278,25 @@ private class ReduceAction687
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tkwinitnode3 = nodearraylist2
-                                       assert tkwinitnode3 isa TKwinit
-                                       var listnode4 = nodearraylist3 
+                                       assert tkwinitnode3 isa nullable TKwinit
+                                       var listnode4 = nodearraylist3
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var pexprnode1 = new AInitExpr.init_ainitexpr(
+#                                      end
+                                       var pexprnode1: nullable AInitExpr = new AInitExpr.init_ainitexpr(
                                                pexprnode2,
                                                tkwinitnode3,
                                                listnode5
@@ -23311,7 +23310,7 @@ private class ReduceAction688
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist7 = p.pop
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
@@ -23321,21 +23320,21 @@ special ReduceAction
                                        var nodearraylist1 = p.pop
                                        var listnode6 = new Array[Object]
                                        var tkwnewnode2 = nodearraylist1
-                                       assert tkwnewnode2 isa TKwnew
+                                       assert tkwnewnode2 isa nullable TKwnew
                                        var ptypenode3 = nodearraylist3
-                                       assert ptypenode3 isa PType
+                                       assert ptypenode3 isa nullable PType
                                        var tidnode4 = nodearraylist6
-                                       assert tidnode4 isa TId
-                                       var listnode5 = nodearraylist7 
+                                       assert tidnode4 isa nullable TId
+                                       var listnode5 = nodearraylist7
                                        assert listnode5 isa Array[Object]
-                                       if listnode5 != null then
+#                                      if listnode5 != null then
                                                if listnode6.is_empty then
                                                        listnode6 = listnode5
                                                else
                                                        listnode6.append(listnode5)
                                                end
-                                       end
-                                       var pexprnode1 = new ANewExpr.init_anewexpr(
+#                                      end
+                                       var pexprnode1: nullable ANewExpr = new ANewExpr.init_anewexpr(
                                                tkwnewnode2,
                                                ptypenode3,
                                                tidnode4,
@@ -23350,11 +23349,11 @@ private class ReduceAction689
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tkwselfnode2 = nodearraylist1
-                                       assert tkwselfnode2 isa TKwself
-                                       var pexprnode1 = new ASelfExpr.init_aselfexpr(
+                                       assert tkwselfnode2 isa nullable TKwself
+                                       var pexprnode1: nullable ASelfExpr = new ASelfExpr.init_aselfexpr(
                                                tkwselfnode2
                                        )
                                        node_list = pexprnode1
@@ -23366,11 +23365,11 @@ private class ReduceAction690
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tkwtruenode2 = nodearraylist1
-                                       assert tkwtruenode2 isa TKwtrue
-                                       var pexprnode1 = new ATrueExpr.init_atrueexpr(
+                                       assert tkwtruenode2 isa nullable TKwtrue
+                                       var pexprnode1: nullable ATrueExpr = new ATrueExpr.init_atrueexpr(
                                                tkwtruenode2
                                        )
                                        node_list = pexprnode1
@@ -23382,11 +23381,11 @@ private class ReduceAction691
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tkwfalsenode2 = nodearraylist1
-                                       assert tkwfalsenode2 isa TKwfalse
-                                       var pexprnode1 = new AFalseExpr.init_afalseexpr(
+                                       assert tkwfalsenode2 isa nullable TKwfalse
+                                       var pexprnode1: nullable AFalseExpr = new AFalseExpr.init_afalseexpr(
                                                tkwfalsenode2
                                        )
                                        node_list = pexprnode1
@@ -23398,11 +23397,11 @@ private class ReduceAction692
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tkwnullnode2 = nodearraylist1
-                                       assert tkwnullnode2 isa TKwnull
-                                       var pexprnode1 = new ANullExpr.init_anullexpr(
+                                       assert tkwnullnode2 isa nullable TKwnull
+                                       var pexprnode1: nullable ANullExpr = new ANullExpr.init_anullexpr(
                                                tkwnullnode2
                                        )
                                        node_list = pexprnode1
@@ -23414,11 +23413,11 @@ private class ReduceAction693
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tnumbernode2 = nodearraylist1
-                                       assert tnumbernode2 isa TNumber
-                                       var pexprnode1 = new AIntExpr.init_aintexpr(
+                                       assert tnumbernode2 isa nullable TNumber
+                                       var pexprnode1: nullable AIntExpr = new AIntExpr.init_aintexpr(
                                                tnumbernode2
                                        )
                                        node_list = pexprnode1
@@ -23430,11 +23429,11 @@ private class ReduceAction694
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tfloatnode2 = nodearraylist1
-                                       assert tfloatnode2 isa TFloat
-                                       var pexprnode1 = new AFloatExpr.init_afloatexpr(
+                                       assert tfloatnode2 isa nullable TFloat
+                                       var pexprnode1: nullable AFloatExpr = new AFloatExpr.init_afloatexpr(
                                                tfloatnode2
                                        )
                                        node_list = pexprnode1
@@ -23446,11 +23445,11 @@ private class ReduceAction695
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tcharnode2 = nodearraylist1
-                                       assert tcharnode2 isa TChar
-                                       var pexprnode1 = new ACharExpr.init_acharexpr(
+                                       assert tcharnode2 isa nullable TChar
+                                       var pexprnode1: nullable ACharExpr = new ACharExpr.init_acharexpr(
                                                tcharnode2
                                        )
                                        node_list = pexprnode1
@@ -23462,11 +23461,11 @@ private class ReduceAction696
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var tstringnode2 = nodearraylist1
-                                       assert tstringnode2 isa TString
-                                       var pexprnode1 = new AStringExpr.init_astringexpr(
+                                       assert tstringnode2 isa nullable TString
+                                       var pexprnode1: nullable AStringExpr = new AStringExpr.init_astringexpr(
                                                tstringnode2
                                        )
                                        node_list = pexprnode1
@@ -23478,10 +23477,10 @@ private class ReduceAction697
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(115), node_list)
        end
@@ -23491,7 +23490,7 @@ private class ReduceAction698
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist10 = p.pop
                                        var nodearraylist9 = p.pop
                                        var nodearraylist8 = p.pop
@@ -23503,12 +23502,12 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tkwasnode3 = nodearraylist4
-                                       assert tkwasnode3 isa TKwas
+                                       assert tkwasnode3 isa nullable TKwas
                                        var ptypenode4 = nodearraylist8
-                                       assert ptypenode4 isa PType
-                                       var pexprnode1 = new AAsCastExpr.init_aascastexpr(
+                                       assert ptypenode4 isa nullable PType
+                                       var pexprnode1: nullable AAsCastExpr = new AAsCastExpr.init_aascastexpr(
                                                pexprnode2,
                                                tkwasnode3,
                                                ptypenode4
@@ -23522,7 +23521,7 @@ private class ReduceAction699
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist12 = p.pop
                                        var nodearraylist11 = p.pop
                                        var nodearraylist10 = p.pop
@@ -23536,14 +23535,14 @@ special ReduceAction
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tkwasnode3 = nodearraylist4
-                                       assert tkwasnode3 isa TKwas
+                                       assert tkwasnode3 isa nullable TKwas
                                        var tkwnotnode4 = nodearraylist8
-                                       assert tkwnotnode4 isa TKwnot
+                                       assert tkwnotnode4 isa nullable TKwnot
                                        var tkwnullnode5 = nodearraylist10
-                                       assert tkwnullnode5 isa TKwnull
-                                       var pexprnode1 = new AAsNotnullExpr.init_aasnotnullexpr(
+                                       assert tkwnullnode5 isa nullable TKwnull
+                                       var pexprnode1: nullable AAsNotnullExpr = new AAsNotnullExpr.init_aasnotnullexpr(
                                                pexprnode2,
                                                tkwasnode3,
                                                tkwnotnode4,
@@ -23558,12 +23557,12 @@ private class ReduceAction700
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(116), node_list)
        end
@@ -23573,8 +23572,8 @@ private class ReduceAction701
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
-                                       var pexprnode1 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var node_list: nullable Object = null
+                                       var pexprnode1: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        node_list = pexprnode1
                                        p.push(p.go_to(116), node_list)
@@ -23585,10 +23584,10 @@ private class ReduceAction702
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(117), node_list)
        end
@@ -23598,7 +23597,7 @@ private class ReduceAction703
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -23608,28 +23607,28 @@ special ReduceAction
                                        var listnode5 = new Array[Object]
                                        var listnode7 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist5 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var listnode6 = nodearraylist6 
+#                                      end
+                                       var listnode6 = nodearraylist6
                                        assert listnode6 isa Array[Object]
-                                       if listnode6 != null then
+#                                      if listnode6 != null then
                                                if listnode7.is_empty then
                                                        listnode7 = listnode6
                                                else
                                                        listnode7.append(listnode6)
                                                end
-                                       end
-                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -23644,35 +23643,35 @@ private class ReduceAction704
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var listnode7 = new Array[Object]
-                                       var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist2 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var listnode6 = nodearraylist3 
+#                                      end
+                                       var listnode6 = nodearraylist3
                                        assert listnode6 isa Array[Object]
-                                       if listnode6 != null then
+#                                      if listnode6 != null then
                                                if listnode7.is_empty then
                                                        listnode7 = listnode6
                                                else
                                                        listnode7.append(listnode6)
                                                end
-                                       end
-                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -23687,10 +23686,10 @@ private class ReduceAction705
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        node_list = pexprnode1
                                        p.push(p.go_to(118), node_list)
        end
@@ -23700,7 +23699,7 @@ private class ReduceAction706
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist6 = p.pop
                                        var nodearraylist5 = p.pop
                                        var nodearraylist4 = p.pop
@@ -23710,28 +23709,28 @@ special ReduceAction
                                        var listnode5 = new Array[Object]
                                        var listnode7 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist5 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var listnode6 = nodearraylist6 
+#                                      end
+                                       var listnode6 = nodearraylist6
                                        assert listnode6 isa Array[Object]
-                                       if listnode6 != null then
+#                                      if listnode6 != null then
                                                if listnode7.is_empty then
                                                        listnode7 = listnode6
                                                else
                                                        listnode7.append(listnode6)
                                                end
-                                       end
-                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -23746,35 +23745,35 @@ private class ReduceAction707
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist3 = p.pop
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var listnode7 = new Array[Object]
-                                       var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist2 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
-                                       var listnode6 = nodearraylist3 
+#                                      end
+                                       var listnode6 = nodearraylist3
                                        assert listnode6 isa Array[Object]
-                                       if listnode6 != null then
+#                                      if listnode6 != null then
                                                if listnode7.is_empty then
                                                        listnode7 = listnode6
                                                else
                                                        listnode7.append(listnode6)
                                                end
-                                       end
-                                       var pexprnode1 = new ACallExpr.init_acallexpr(
+#                                      end
+                                       var pexprnode1: nullable ACallExpr = new ACallExpr.init_acallexpr(
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -23789,11 +23788,11 @@ private class ReduceAction708
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
                                        var pimportnode1 = nodearraylist1
-                                       assert pimportnode1 isa PImport
+                                       assert pimportnode1 isa nullable PImport
                                        if pimportnode1 != null then
                                                listnode2.add(pimportnode1)
                                        end
@@ -23806,21 +23805,21 @@ private class ReduceAction709
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
-                                       var listnode1 = nodearraylist1 
+                                       var listnode1 = nodearraylist1
                                        assert listnode1 isa Array[Object]
                                        var pimportnode2 = nodearraylist2
-                                       assert pimportnode2 isa PImport
-                                       if listnode1 != null then
+                                       assert pimportnode2 isa nullable PImport
+#                                      if listnode1 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode1
                                                else
                                                        listnode3.append(listnode1)
                                                end
-                                       end
+#                                      end
                                        if pimportnode2 != null then
                                                listnode3.add(pimportnode2)
                                        end
@@ -23833,11 +23832,11 @@ private class ReduceAction710
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
                                        var pclassdefnode1 = nodearraylist1
-                                       assert pclassdefnode1 isa PClassdef
+                                       assert pclassdefnode1 isa nullable PClassdef
                                        if pclassdefnode1 != null then
                                                listnode2.add(pclassdefnode1)
                                        end
@@ -23850,21 +23849,21 @@ private class ReduceAction711
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
-                                       var listnode1 = nodearraylist1 
+                                       var listnode1 = nodearraylist1
                                        assert listnode1 isa Array[Object]
                                        var pclassdefnode2 = nodearraylist2
-                                       assert pclassdefnode2 isa PClassdef
-                                       if listnode1 != null then
+                                       assert pclassdefnode2 isa nullable PClassdef
+#                                      if listnode1 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode1
                                                else
                                                        listnode3.append(listnode1)
                                                end
-                                       end
+#                                      end
                                        if pclassdefnode2 != null then
                                                listnode3.add(pclassdefnode2)
                                        end
@@ -23877,11 +23876,11 @@ private class ReduceAction712
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
                                        var psuperclassnode1 = nodearraylist1
-                                       assert psuperclassnode1 isa PSuperclass
+                                       assert psuperclassnode1 isa nullable PSuperclass
                                        if psuperclassnode1 != null then
                                                listnode2.add(psuperclassnode1)
                                        end
@@ -23894,21 +23893,21 @@ private class ReduceAction713
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
-                                       var listnode1 = nodearraylist1 
+                                       var listnode1 = nodearraylist1
                                        assert listnode1 isa Array[Object]
                                        var psuperclassnode2 = nodearraylist2
-                                       assert psuperclassnode2 isa PSuperclass
-                                       if listnode1 != null then
+                                       assert psuperclassnode2 isa nullable PSuperclass
+#                                      if listnode1 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode1
                                                else
                                                        listnode3.append(listnode1)
                                                end
-                                       end
+#                                      end
                                        if psuperclassnode2 != null then
                                                listnode3.add(psuperclassnode2)
                                        end
@@ -23921,11 +23920,11 @@ private class ReduceAction714
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
                                        var pformaldefnode1 = nodearraylist1
-                                       assert pformaldefnode1 isa PFormaldef
+                                       assert pformaldefnode1 isa nullable PFormaldef
                                        if pformaldefnode1 != null then
                                                listnode2.add(pformaldefnode1)
                                        end
@@ -23938,21 +23937,21 @@ private class ReduceAction715
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
-                                       var listnode1 = nodearraylist1 
+                                       var listnode1 = nodearraylist1
                                        assert listnode1 isa Array[Object]
                                        var pformaldefnode2 = nodearraylist2
-                                       assert pformaldefnode2 isa PFormaldef
-                                       if listnode1 != null then
+                                       assert pformaldefnode2 isa nullable PFormaldef
+#                                      if listnode1 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode1
                                                else
                                                        listnode3.append(listnode1)
                                                end
-                                       end
+#                                      end
                                        if pformaldefnode2 != null then
                                                listnode3.add(pformaldefnode2)
                                        end
@@ -23965,11 +23964,11 @@ private class ReduceAction716
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
                                        var ppropdefnode1 = nodearraylist1
-                                       assert ppropdefnode1 isa PPropdef
+                                       assert ppropdefnode1 isa nullable PPropdef
                                        if ppropdefnode1 != null then
                                                listnode2.add(ppropdefnode1)
                                        end
@@ -23982,21 +23981,21 @@ private class ReduceAction717
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
-                                       var listnode1 = nodearraylist1 
+                                       var listnode1 = nodearraylist1
                                        assert listnode1 isa Array[Object]
                                        var ppropdefnode2 = nodearraylist2
-                                       assert ppropdefnode2 isa PPropdef
-                                       if listnode1 != null then
+                                       assert ppropdefnode2 isa nullable PPropdef
+#                                      if listnode1 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode1
                                                else
                                                        listnode3.append(listnode1)
                                                end
-                                       end
+#                                      end
                                        if ppropdefnode2 != null then
                                                listnode3.add(ppropdefnode2)
                                        end
@@ -24009,11 +24008,11 @@ private class ReduceAction718
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
                                        var pparamnode1 = nodearraylist1
-                                       assert pparamnode1 isa PParam
+                                       assert pparamnode1 isa nullable PParam
                                        if pparamnode1 != null then
                                                listnode2.add(pparamnode1)
                                        end
@@ -24026,21 +24025,21 @@ private class ReduceAction719
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
-                                       var listnode1 = nodearraylist1 
+                                       var listnode1 = nodearraylist1
                                        assert listnode1 isa Array[Object]
                                        var pparamnode2 = nodearraylist2
-                                       assert pparamnode2 isa PParam
-                                       if listnode1 != null then
+                                       assert pparamnode2 isa nullable PParam
+#                                      if listnode1 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode1
                                                else
                                                        listnode3.append(listnode1)
                                                end
-                                       end
+#                                      end
                                        if pparamnode2 != null then
                                                listnode3.add(pparamnode2)
                                        end
@@ -24053,11 +24052,11 @@ private class ReduceAction720
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
                                        var pclosuredeclnode1 = nodearraylist1
-                                       assert pclosuredeclnode1 isa PClosureDecl
+                                       assert pclosuredeclnode1 isa nullable PClosureDecl
                                        if pclosuredeclnode1 != null then
                                                listnode2.add(pclosuredeclnode1)
                                        end
@@ -24070,21 +24069,21 @@ private class ReduceAction721
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
-                                       var listnode1 = nodearraylist1 
+                                       var listnode1 = nodearraylist1
                                        assert listnode1 isa Array[Object]
                                        var pclosuredeclnode2 = nodearraylist2
-                                       assert pclosuredeclnode2 isa PClosureDecl
-                                       if listnode1 != null then
+                                       assert pclosuredeclnode2 isa nullable PClosureDecl
+#                                      if listnode1 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode1
                                                else
                                                        listnode3.append(listnode1)
                                                end
-                                       end
+#                                      end
                                        if pclosuredeclnode2 != null then
                                                listnode3.add(pclosuredeclnode2)
                                        end
@@ -24097,11 +24096,11 @@ private class ReduceAction722
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
                                        var ptypenode1 = nodearraylist1
-                                       assert ptypenode1 isa PType
+                                       assert ptypenode1 isa nullable PType
                                        if ptypenode1 != null then
                                                listnode2.add(ptypenode1)
                                        end
@@ -24114,21 +24113,21 @@ private class ReduceAction723
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
-                                       var listnode1 = nodearraylist1 
+                                       var listnode1 = nodearraylist1
                                        assert listnode1 isa Array[Object]
                                        var ptypenode2 = nodearraylist2
-                                       assert ptypenode2 isa PType
-                                       if listnode1 != null then
+                                       assert ptypenode2 isa nullable PType
+#                                      if listnode1 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode1
                                                else
                                                        listnode3.append(listnode1)
                                                end
-                                       end
+#                                      end
                                        if ptypenode2 != null then
                                                listnode3.add(ptypenode2)
                                        end
@@ -24141,11 +24140,11 @@ private class ReduceAction724
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        if pexprnode1 != null then
                                                listnode2.add(pexprnode1)
                                        end
@@ -24158,21 +24157,21 @@ private class ReduceAction725
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
-                                       var listnode1 = nodearraylist1 
+                                       var listnode1 = nodearraylist1
                                        assert listnode1 isa Array[Object]
                                        var pexprnode2 = nodearraylist2
-                                       assert pexprnode2 isa PExpr
-                                       if listnode1 != null then
+                                       assert pexprnode2 isa nullable PExpr
+#                                      if listnode1 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode1
                                                else
                                                        listnode3.append(listnode1)
                                                end
-                                       end
+#                                      end
                                        if pexprnode2 != null then
                                                listnode3.add(pexprnode2)
                                        end
@@ -24185,18 +24184,18 @@ private class ReduceAction726
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
-                                       var listnode1 = nodearraylist1 
+                                       var listnode1 = nodearraylist1
                                        assert listnode1 isa Array[Object]
-                                       if listnode1 != null then
+#                                      if listnode1 != null then
                                                if listnode2.is_empty then
                                                        listnode2 = listnode1
                                                else
                                                        listnode2.append(listnode1)
                                                end
-                                       end
+#                                      end
                                        node_list = listnode2
                                        p.push(p.go_to(128), node_list)
        end
@@ -24206,28 +24205,28 @@ private class ReduceAction727
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
-                                       var listnode1 = nodearraylist1 
+                                       var listnode1 = nodearraylist1
                                        assert listnode1 isa Array[Object]
-                                       var listnode2 = nodearraylist2 
+                                       var listnode2 = nodearraylist2
                                        assert listnode2 isa Array[Object]
-                                       if listnode1 != null then
+#                                      if listnode1 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode1
                                                else
                                                        listnode3.append(listnode1)
                                                end
-                                       end
-                                       if listnode2 != null then
+#                                      end
+#                                      if listnode2 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode2
                                                else
                                                        listnode3.append(listnode2)
                                                end
-                                       end
+#                                      end
                                        node_list = listnode3
                                        p.push(p.go_to(128), node_list)
        end
@@ -24237,11 +24236,11 @@ private class ReduceAction728
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
                                        var pexprnode1 = nodearraylist1
-                                       assert pexprnode1 isa PExpr
+                                       assert pexprnode1 isa nullable PExpr
                                        if pexprnode1 != null then
                                                listnode2.add(pexprnode1)
                                        end
@@ -24254,21 +24253,21 @@ private class ReduceAction729
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
-                                       var listnode1 = nodearraylist1 
+                                       var listnode1 = nodearraylist1
                                        assert listnode1 isa Array[Object]
                                        var pexprnode2 = nodearraylist2
-                                       assert pexprnode2 isa PExpr
-                                       if listnode1 != null then
+                                       assert pexprnode2 isa nullable PExpr
+#                                      if listnode1 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode1
                                                else
                                                        listnode3.append(listnode1)
                                                end
-                                       end
+#                                      end
                                        if pexprnode2 != null then
                                                listnode3.add(pexprnode2)
                                        end
@@ -24281,11 +24280,11 @@ private class ReduceAction730
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
                                        var tidnode1 = nodearraylist1
-                                       assert tidnode1 isa TId
+                                       assert tidnode1 isa nullable TId
                                        if tidnode1 != null then
                                                listnode2.add(tidnode1)
                                        end
@@ -24298,21 +24297,21 @@ private class ReduceAction731
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
-                                       var listnode1 = nodearraylist1 
+                                       var listnode1 = nodearraylist1
                                        assert listnode1 isa Array[Object]
                                        var tidnode2 = nodearraylist2
-                                       assert tidnode2 isa TId
-                                       if listnode1 != null then
+                                       assert tidnode2 isa nullable TId
+#                                      if listnode1 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode1
                                                else
                                                        listnode3.append(listnode1)
                                                end
-                                       end
+#                                      end
                                        if tidnode2 != null then
                                                listnode3.add(tidnode2)
                                        end
@@ -24325,11 +24324,11 @@ private class ReduceAction732
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
                                        var tcommentnode1 = nodearraylist1
-                                       assert tcommentnode1 isa TComment
+                                       assert tcommentnode1 isa nullable TComment
                                        if tcommentnode1 != null then
                                                listnode2.add(tcommentnode1)
                                        end
@@ -24342,21 +24341,21 @@ private class ReduceAction733
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
-                                       var listnode1 = nodearraylist1 
+                                       var listnode1 = nodearraylist1
                                        assert listnode1 isa Array[Object]
                                        var tcommentnode2 = nodearraylist2
-                                       assert tcommentnode2 isa TComment
-                                       if listnode1 != null then
+                                       assert tcommentnode2 isa nullable TComment
+#                                      if listnode1 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode1
                                                else
                                                        listnode3.append(listnode1)
                                                end
-                                       end
+#                                      end
                                        if tcommentnode2 != null then
                                                listnode3.add(tcommentnode2)
                                        end
@@ -24369,11 +24368,11 @@ private class ReduceAction734
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
                                        var teolnode1 = nodearraylist1
-                                       assert teolnode1 isa TEol
+                                       assert teolnode1 isa nullable TEol
                                        if teolnode1 != null then
                                                listnode2.add(teolnode1)
                                        end
@@ -24386,21 +24385,21 @@ private class ReduceAction735
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
-                                       var listnode1 = nodearraylist1 
+                                       var listnode1 = nodearraylist1
                                        assert listnode1 isa Array[Object]
                                        var teolnode2 = nodearraylist2
-                                       assert teolnode2 isa TEol
-                                       if listnode1 != null then
+                                       assert teolnode2 isa nullable TEol
+#                                      if listnode1 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode1
                                                else
                                                        listnode3.append(listnode1)
                                                end
-                                       end
+#                                      end
                                        if teolnode2 != null then
                                                listnode3.add(teolnode2)
                                        end
@@ -24413,11 +24412,11 @@ private class ReduceAction736
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
                                        var ppropdefnode1 = nodearraylist1
-                                       assert ppropdefnode1 isa PPropdef
+                                       assert ppropdefnode1 isa nullable PPropdef
                                        if ppropdefnode1 != null then
                                                listnode2.add(ppropdefnode1)
                                        end
@@ -24430,21 +24429,21 @@ private class ReduceAction737
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
-                                       var listnode1 = nodearraylist1 
+                                       var listnode1 = nodearraylist1
                                        assert listnode1 isa Array[Object]
                                        var ppropdefnode2 = nodearraylist2
-                                       assert ppropdefnode2 isa PPropdef
-                                       if listnode1 != null then
+                                       assert ppropdefnode2 isa nullable PPropdef
+#                                      if listnode1 != null then
                                                if listnode3.is_empty then
                                                        listnode3 = listnode1
                                                else
                                                        listnode3.append(listnode1)
                                                end
-                                       end
+#                                      end
                                        if ppropdefnode2 != null then
                                                listnode3.add(ppropdefnode2)
                                        end
index 7862435..60b2fa9 100644 (file)
@@ -305,676 +305,676 @@ class PDoc special Prod end
 
 class AModule
 special PModule
-    readable writable attr _n_packagedecl: PPackagedecl = null
-    readable writable attr _n_imports: List[PImport] = null
-    readable writable attr _n_classdefs: List[PClassdef] = null
+    readable writable attr _n_packagedecl: nullable PPackagedecl = null
+    readable writable attr _n_imports: List[PImport] = new List[PImport]
+    readable writable attr _n_classdefs: List[PClassdef] = new List[PClassdef]
 end
 class APackagedecl
 special PPackagedecl
-    readable writable attr _n_doc: PDoc = null
-    readable writable attr _n_kwpackage: TKwpackage = null
-    readable writable attr _n_id: TId = null
+    readable writable attr _n_doc: nullable PDoc = null
+    readable writable attr _n_kwpackage: TKwpackage
+    readable writable attr _n_id: TId
 end
 class AImport
 special PImport
-    readable writable attr _n_visibility: PVisibility = null
-    readable writable attr _n_kwimport: TKwimport = null
-    readable writable attr _n_id: TId = null
+    readable writable attr _n_visibility: PVisibility
+    readable writable attr _n_kwimport: TKwimport
+    readable writable attr _n_id: TId
 end
 class ANoImport
 special PImport
-    readable writable attr _n_visibility: PVisibility = null
-    readable writable attr _n_kwimport: TKwimport = null
-    readable writable attr _n_kwend: TKwend = null
+    readable writable attr _n_visibility: PVisibility
+    readable writable attr _n_kwimport: TKwimport
+    readable writable attr _n_kwend: TKwend
 end
 class APublicVisibility
 special PVisibility
 end
 class APrivateVisibility
 special PVisibility
-    readable writable attr _n_kwprivate: TKwprivate = null
+    readable writable attr _n_kwprivate: TKwprivate
 end
 class AProtectedVisibility
 special PVisibility
-    readable writable attr _n_kwprotected: TKwprotected = null
+    readable writable attr _n_kwprotected: TKwprotected
 end
 class AIntrudeVisibility
 special PVisibility
-    readable writable attr _n_kwintrude: TKwintrude = null
+    readable writable attr _n_kwintrude: TKwintrude
 end
 class AClassdef
 special PClassdef
-    readable writable attr _n_doc: PDoc = null
-    readable writable attr _n_kwredef: TKwredef = null
-    readable writable attr _n_visibility: PVisibility = null
-    readable writable attr _n_classkind: PClasskind = null
-    readable writable attr _n_id: TClassid = null
-    readable writable attr _n_formaldefs: List[PFormaldef] = null
-    readable writable attr _n_superclasses: List[PSuperclass] = null
-    readable writable attr _n_propdefs: List[PPropdef] = null
+    readable writable attr _n_doc: nullable PDoc = null
+    readable writable attr _n_kwredef: nullable TKwredef = null
+    readable writable attr _n_visibility: PVisibility
+    readable writable attr _n_classkind: PClasskind
+    readable writable attr _n_id: nullable TClassid = null
+    readable writable attr _n_formaldefs: List[PFormaldef] = new List[PFormaldef]
+    readable writable attr _n_superclasses: List[PSuperclass] = new List[PSuperclass]
+    readable writable attr _n_propdefs: List[PPropdef] = new List[PPropdef]
 end
 class ATopClassdef
 special PClassdef
-    readable writable attr _n_propdefs: List[PPropdef] = null
+    readable writable attr _n_propdefs: List[PPropdef] = new List[PPropdef]
 end
 class AMainClassdef
 special PClassdef
-    readable writable attr _n_propdefs: List[PPropdef] = null
+    readable writable attr _n_propdefs: List[PPropdef] = new List[PPropdef]
 end
 class AConcreteClasskind
 special PClasskind
-    readable writable attr _n_kwclass: TKwclass = null
+    readable writable attr _n_kwclass: TKwclass
 end
 class AAbstractClasskind
 special PClasskind
-    readable writable attr _n_kwabstract: TKwabstract = null
-    readable writable attr _n_kwclass: TKwclass = null
+    readable writable attr _n_kwabstract: TKwabstract
+    readable writable attr _n_kwclass: TKwclass
 end
 class AInterfaceClasskind
 special PClasskind
-    readable writable attr _n_kwinterface: TKwinterface = null
+    readable writable attr _n_kwinterface: TKwinterface
 end
 class AUniversalClasskind
 special PClasskind
-    readable writable attr _n_kwuniversal: TKwuniversal = null
+    readable writable attr _n_kwuniversal: TKwuniversal
 end
 class AFormaldef
 special PFormaldef
-    readable writable attr _n_id: TClassid = null
-    readable writable attr _n_type: PType = null
+    readable writable attr _n_id: TClassid
+    readable writable attr _n_type: nullable PType = null
 end
 class ASuperclass
 special PSuperclass
-    readable writable attr _n_kwspecial: TKwspecial = null
-    readable writable attr _n_type: PType = null
+    readable writable attr _n_kwspecial: TKwspecial
+    readable writable attr _n_type: PType
 end
 class AAttrPropdef
 special PPropdef
-    readable writable attr _n_doc: PDoc = null
-    readable writable attr _n_readable: PAble = null
-    readable writable attr _n_writable: PAble = null
-    readable writable attr _n_kwredef: TKwredef = null
-    readable writable attr _n_visibility: PVisibility = null
-    readable writable attr _n_kwattr: TKwattr = null
-    readable writable attr _n_kwvar: TKwvar = null
-    readable writable attr _n_id: TAttrid = null
-    readable writable attr _n_type: PType = null
-    readable writable attr _n_expr: PExpr = null
+    readable writable attr _n_doc: nullable PDoc = null
+    readable writable attr _n_readable: nullable PAble = null
+    readable writable attr _n_writable: nullable PAble = null
+    readable writable attr _n_kwredef: nullable TKwredef = null
+    readable writable attr _n_visibility: PVisibility
+    readable writable attr _n_kwattr: nullable TKwattr = null
+    readable writable attr _n_kwvar: nullable TKwvar = null
+    readable writable attr _n_id: TAttrid
+    readable writable attr _n_type: nullable PType = null
+    readable writable attr _n_expr: nullable PExpr = null
 end
 class AMethPropdef
 special PPropdef
-    readable writable attr _n_doc: PDoc = null
-    readable writable attr _n_kwredef: TKwredef = null
-    readable writable attr _n_visibility: PVisibility = null
-    readable writable attr _n_methid: PMethid = null
-    readable writable attr _n_signature: PSignature = null
+    readable writable attr _n_doc: nullable PDoc = null
+    readable writable attr _n_kwredef: nullable TKwredef = null
+    readable writable attr _n_visibility: PVisibility
+    readable writable attr _n_methid: PMethid
+    readable writable attr _n_signature: PSignature
 end
 class ADeferredMethPropdef
 special PPropdef
-    readable writable attr _n_doc: PDoc = null
-    readable writable attr _n_kwredef: TKwredef = null
-    readable writable attr _n_visibility: PVisibility = null
-    readable writable attr _n_kwmeth: TKwmeth = null
-    readable writable attr _n_methid: PMethid = null
-    readable writable attr _n_signature: PSignature = null
+    readable writable attr _n_doc: nullable PDoc = null
+    readable writable attr _n_kwredef: nullable TKwredef = null
+    readable writable attr _n_visibility: PVisibility
+    readable writable attr _n_kwmeth: TKwmeth
+    readable writable attr _n_methid: PMethid
+    readable writable attr _n_signature: PSignature
 end
 class AInternMethPropdef
 special PPropdef
-    readable writable attr _n_doc: PDoc = null
-    readable writable attr _n_kwredef: TKwredef = null
-    readable writable attr _n_visibility: PVisibility = null
-    readable writable attr _n_kwmeth: TKwmeth = null
-    readable writable attr _n_methid: PMethid = null
-    readable writable attr _n_signature: PSignature = null
+    readable writable attr _n_doc: nullable PDoc = null
+    readable writable attr _n_kwredef: nullable TKwredef = null
+    readable writable attr _n_visibility: PVisibility
+    readable writable attr _n_kwmeth: TKwmeth
+    readable writable attr _n_methid: PMethid
+    readable writable attr _n_signature: PSignature
 end
 class AExternMethPropdef
 special PPropdef
-    readable writable attr _n_doc: PDoc = null
-    readable writable attr _n_kwredef: TKwredef = null
-    readable writable attr _n_visibility: PVisibility = null
-    readable writable attr _n_kwmeth: TKwmeth = null
-    readable writable attr _n_methid: PMethid = null
-    readable writable attr _n_signature: PSignature = null
-    readable writable attr _n_extern: TString = null
+    readable writable attr _n_doc: nullable PDoc = null
+    readable writable attr _n_kwredef: nullable TKwredef = null
+    readable writable attr _n_visibility: PVisibility
+    readable writable attr _n_kwmeth: TKwmeth
+    readable writable attr _n_methid: PMethid
+    readable writable attr _n_signature: PSignature
+    readable writable attr _n_extern: nullable TString = null
 end
 class AConcreteMethPropdef
 special PPropdef
-    readable writable attr _n_doc: PDoc = null
-    readable writable attr _n_kwredef: TKwredef = null
-    readable writable attr _n_visibility: PVisibility = null
-    readable writable attr _n_kwmeth: TKwmeth = null
-    readable writable attr _n_methid: PMethid = null
-    readable writable attr _n_signature: PSignature = null
-    readable writable attr _n_block: PExpr = null
+    readable writable attr _n_doc: nullable PDoc = null
+    readable writable attr _n_kwredef: nullable TKwredef = null
+    readable writable attr _n_visibility: PVisibility
+    readable writable attr _n_kwmeth: TKwmeth
+    readable writable attr _n_methid: PMethid
+    readable writable attr _n_signature: PSignature
+    readable writable attr _n_block: nullable PExpr = null
 end
 class AConcreteInitPropdef
 special PPropdef
-    readable writable attr _n_doc: PDoc = null
-    readable writable attr _n_kwredef: TKwredef = null
-    readable writable attr _n_visibility: PVisibility = null
-    readable writable attr _n_kwinit: TKwinit = null
-    readable writable attr _n_methid: PMethid = null
-    readable writable attr _n_signature: PSignature = null
-    readable writable attr _n_block: PExpr = null
+    readable writable attr _n_doc: nullable PDoc = null
+    readable writable attr _n_kwredef: nullable TKwredef = null
+    readable writable attr _n_visibility: PVisibility
+    readable writable attr _n_kwinit: TKwinit
+    readable writable attr _n_methid: nullable PMethid = null
+    readable writable attr _n_signature: PSignature
+    readable writable attr _n_block: nullable PExpr = null
 end
 class AMainMethPropdef
 special PPropdef
-    readable writable attr _n_kwredef: TKwredef = null
-    readable writable attr _n_block: PExpr = null
+    readable writable attr _n_kwredef: nullable TKwredef = null
+    readable writable attr _n_block: nullable PExpr = null
 end
 class ATypePropdef
 special PPropdef
-    readable writable attr _n_doc: PDoc = null
-    readable writable attr _n_kwredef: TKwredef = null
-    readable writable attr _n_visibility: PVisibility = null
-    readable writable attr _n_kwtype: TKwtype = null
-    readable writable attr _n_id: TClassid = null
-    readable writable attr _n_type: PType = null
+    readable writable attr _n_doc: nullable PDoc = null
+    readable writable attr _n_kwredef: nullable TKwredef = null
+    readable writable attr _n_visibility: PVisibility
+    readable writable attr _n_kwtype: TKwtype
+    readable writable attr _n_id: TClassid
+    readable writable attr _n_type: PType
 end
 class AReadAble
 special PAble
-    readable writable attr _n_kwredef: TKwredef = null
-    readable writable attr _n_kwreadable: TKwreadable = null
+    readable writable attr _n_kwredef: nullable TKwredef = null
+    readable writable attr _n_kwreadable: TKwreadable
 end
 class AWriteAble
 special PAble
-    readable writable attr _n_kwredef: TKwredef = null
-    readable writable attr _n_kwwritable: TKwwritable = null
+    readable writable attr _n_kwredef: nullable TKwredef = null
+    readable writable attr _n_kwwritable: TKwwritable
 end
 class AIdMethid
 special PMethid
-    readable writable attr _n_id: TId = null
+    readable writable attr _n_id: TId
 end
 class APlusMethid
 special PMethid
-    readable writable attr _n_plus: TPlus = null
+    readable writable attr _n_plus: TPlus
 end
 class AMinusMethid
 special PMethid
-    readable writable attr _n_minus: TMinus = null
+    readable writable attr _n_minus: TMinus
 end
 class AStarMethid
 special PMethid
-    readable writable attr _n_star: TStar = null
+    readable writable attr _n_star: TStar
 end
 class ASlashMethid
 special PMethid
-    readable writable attr _n_slash: TSlash = null
+    readable writable attr _n_slash: TSlash
 end
 class APercentMethid
 special PMethid
-    readable writable attr _n_percent: TPercent = null
+    readable writable attr _n_percent: TPercent
 end
 class AEqMethid
 special PMethid
-    readable writable attr _n_eq: TEq = null
+    readable writable attr _n_eq: TEq
 end
 class ANeMethid
 special PMethid
-    readable writable attr _n_ne: TNe = null
+    readable writable attr _n_ne: TNe
 end
 class ALeMethid
 special PMethid
-    readable writable attr _n_le: TLe = null
+    readable writable attr _n_le: TLe
 end
 class AGeMethid
 special PMethid
-    readable writable attr _n_ge: TGe = null
+    readable writable attr _n_ge: TGe
 end
 class ALtMethid
 special PMethid
-    readable writable attr _n_lt: TLt = null
+    readable writable attr _n_lt: TLt
 end
 class AGtMethid
 special PMethid
-    readable writable attr _n_gt: TGt = null
+    readable writable attr _n_gt: TGt
 end
 class ABraMethid
 special PMethid
-    readable writable attr _n_obra: TObra = null
-    readable writable attr _n_cbra: TCbra = null
+    readable writable attr _n_obra: TObra
+    readable writable attr _n_cbra: TCbra
 end
 class AStarshipMethid
 special PMethid
-    readable writable attr _n_starship: TStarship = null
+    readable writable attr _n_starship: TStarship
 end
 class AAssignMethid
 special PMethid
-    readable writable attr _n_id: TId = null
-    readable writable attr _n_assign: TAssign = null
+    readable writable attr _n_id: TId
+    readable writable attr _n_assign: TAssign
 end
 class ABraassignMethid
 special PMethid
-    readable writable attr _n_obra: TObra = null
-    readable writable attr _n_cbra: TCbra = null
-    readable writable attr _n_assign: TAssign = null
+    readable writable attr _n_obra: TObra
+    readable writable attr _n_cbra: TCbra
+    readable writable attr _n_assign: TAssign
 end
 class ASignature
 special PSignature
-    readable writable attr _n_params: List[PParam] = null
-    readable writable attr _n_type: PType = null
-    readable writable attr _n_closure_decls: List[PClosureDecl] = null
+    readable writable attr _n_params: List[PParam] = new List[PParam]
+    readable writable attr _n_type: nullable PType = null
+    readable writable attr _n_closure_decls: List[PClosureDecl] = new List[PClosureDecl]
 end
 class AParam
 special PParam
-    readable writable attr _n_id: TId = null
-    readable writable attr _n_type: PType = null
-    readable writable attr _n_dotdotdot: TDotdotdot = null
+    readable writable attr _n_id: TId
+    readable writable attr _n_type: nullable PType = null
+    readable writable attr _n_dotdotdot: nullable TDotdotdot = null
 end
 class AClosureDecl
 special PClosureDecl
-    readable writable attr _n_kwwith: TKwwith = null
-    readable writable attr _n_kwbreak: TKwbreak = null
-    readable writable attr _n_id: TId = null
-    readable writable attr _n_signature: PSignature = null
-    readable writable attr _n_expr: PExpr = null
+    readable writable attr _n_kwwith: TKwwith
+    readable writable attr _n_kwbreak: nullable TKwbreak = null
+    readable writable attr _n_id: TId
+    readable writable attr _n_signature: PSignature
+    readable writable attr _n_expr: nullable PExpr = null
 end
 class AType
 special PType
-    readable writable attr _n_kwnullable: TKwnullable = null
-    readable writable attr _n_id: TClassid = null
-    readable writable attr _n_types: List[PType] = null
+    readable writable attr _n_kwnullable: nullable TKwnullable = null
+    readable writable attr _n_id: TClassid
+    readable writable attr _n_types: List[PType] = new List[PType]
 end
 class ABlockExpr
 special PExpr
-    readable writable attr _n_expr: List[PExpr] = null
+    readable writable attr _n_expr: List[PExpr] = new List[PExpr]
 end
 class AVardeclExpr
 special PExpr
-    readable writable attr _n_kwvar: TKwvar = null
-    readable writable attr _n_id: TId = null
-    readable writable attr _n_type: PType = null
-    readable writable attr _n_assign: TAssign = null
-    readable writable attr _n_expr: PExpr = null
+    readable writable attr _n_kwvar: TKwvar
+    readable writable attr _n_id: TId
+    readable writable attr _n_type: nullable PType = null
+    readable writable attr _n_assign: nullable TAssign = null
+    readable writable attr _n_expr: nullable PExpr = null
 end
 class AReturnExpr
 special PExpr
-    readable writable attr _n_kwreturn: TKwreturn = null
-    readable writable attr _n_expr: PExpr = null
+    readable writable attr _n_kwreturn: TKwreturn
+    readable writable attr _n_expr: nullable PExpr = null
 end
 class ABreakExpr
 special PExpr
-    readable writable attr _n_kwbreak: TKwbreak = null
-    readable writable attr _n_expr: PExpr = null
+    readable writable attr _n_kwbreak: TKwbreak
+    readable writable attr _n_expr: nullable PExpr = null
 end
 class AAbortExpr
 special PExpr
-    readable writable attr _n_kwabort: TKwabort = null
+    readable writable attr _n_kwabort: TKwabort
 end
 class AContinueExpr
 special PExpr
-    readable writable attr _n_kwcontinue: TKwcontinue = null
-    readable writable attr _n_expr: PExpr = null
+    readable writable attr _n_kwcontinue: TKwcontinue
+    readable writable attr _n_expr: nullable PExpr = null
 end
 class ADoExpr
 special PExpr
-    readable writable attr _n_kwdo: TKwdo = null
-    readable writable attr _n_block: PExpr = null
+    readable writable attr _n_kwdo: TKwdo
+    readable writable attr _n_block: nullable PExpr = null
 end
 class AIfExpr
 special PExpr
-    readable writable attr _n_kwif: TKwif = null
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_then: PExpr = null
-    readable writable attr _n_else: PExpr = null
+    readable writable attr _n_kwif: TKwif
+    readable writable attr _n_expr: PExpr
+    readable writable attr _n_then: nullable PExpr = null
+    readable writable attr _n_else: nullable PExpr = null
 end
 class AIfexprExpr
 special PExpr
-    readable writable attr _n_kwif: TKwif = null
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_kwthen: TKwthen = null
-    readable writable attr _n_then: PExpr = null
-    readable writable attr _n_kwelse: TKwelse = null
-    readable writable attr _n_else: PExpr = null
+    readable writable attr _n_kwif: TKwif
+    readable writable attr _n_expr: PExpr
+    readable writable attr _n_kwthen: TKwthen
+    readable writable attr _n_then: PExpr
+    readable writable attr _n_kwelse: TKwelse
+    readable writable attr _n_else: PExpr
 end
 class AWhileExpr
 special PExpr
-    readable writable attr _n_kwwhile: TKwwhile = null
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_kwdo: TKwdo = null
-    readable writable attr _n_block: PExpr = null
+    readable writable attr _n_kwwhile: TKwwhile
+    readable writable attr _n_expr: PExpr
+    readable writable attr _n_kwdo: TKwdo
+    readable writable attr _n_block: nullable PExpr = null
 end
 class AForExpr
 special PExpr
-    readable writable attr _n_kwfor: TKwfor = null
-    readable writable attr _n_id: TId = null
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_kwdo: TKwdo = null
-    readable writable attr _n_block: PExpr = null
+    readable writable attr _n_kwfor: TKwfor
+    readable writable attr _n_id: TId
+    readable writable attr _n_expr: PExpr
+    readable writable attr _n_kwdo: TKwdo
+    readable writable attr _n_block: nullable PExpr = null
 end
 class AAssertExpr
 special PExpr
-    readable writable attr _n_kwassert: TKwassert = null
-    readable writable attr _n_id: TId = null
-    readable writable attr _n_expr: PExpr = null
+    readable writable attr _n_kwassert: TKwassert
+    readable writable attr _n_id: nullable TId = null
+    readable writable attr _n_expr: PExpr
 end
 class AOnceExpr
 special PExpr
-    readable writable attr _n_kwonce: TKwonce = null
-    readable writable attr _n_expr: PExpr = null
+    readable writable attr _n_kwonce: TKwonce
+    readable writable attr _n_expr: PExpr
 end
 class ASendExpr
 special PExpr
-    readable writable attr _n_expr: PExpr = null
+    readable writable attr _n_expr: PExpr
 end
 class ABinopExpr
 special PExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_expr2: PExpr = null
+    readable writable attr _n_expr: PExpr
+    readable writable attr _n_expr2: PExpr
 end
 class AOrExpr
 special PExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_expr2: PExpr = null
+    readable writable attr _n_expr: PExpr
+    readable writable attr _n_expr2: PExpr
 end
 class AAndExpr
 special PExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_expr2: PExpr = null
+    readable writable attr _n_expr: PExpr
+    readable writable attr _n_expr2: PExpr
 end
 class ANotExpr
 special PExpr
-    readable writable attr _n_kwnot: TKwnot = null
-    readable writable attr _n_expr: PExpr = null
+    readable writable attr _n_kwnot: TKwnot
+    readable writable attr _n_expr: PExpr
 end
 class AEqExpr
 special PExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_expr2: PExpr = null
+    readable writable attr _n_expr: PExpr
+    readable writable attr _n_expr2: PExpr
 end
 class AEeExpr
 special PExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_expr2: PExpr = null
+    readable writable attr _n_expr: PExpr
+    readable writable attr _n_expr2: PExpr
 end
 class ANeExpr
 special PExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_expr2: PExpr = null
+    readable writable attr _n_expr: PExpr
+    readable writable attr _n_expr2: PExpr
 end
 class ALtExpr
 special PExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_expr2: PExpr = null
+    readable writable attr _n_expr: PExpr
+    readable writable attr _n_expr2: PExpr
 end
 class ALeExpr
 special PExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_expr2: PExpr = null
+    readable writable attr _n_expr: PExpr
+    readable writable attr _n_expr2: PExpr
 end
 class AGtExpr
 special PExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_expr2: PExpr = null
+    readable writable attr _n_expr: PExpr
+    readable writable attr _n_expr2: PExpr
 end
 class AGeExpr
 special PExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_expr2: PExpr = null
+    readable writable attr _n_expr: PExpr
+    readable writable attr _n_expr2: PExpr
 end
 class AIsaExpr
 special PExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_type: PType = null
+    readable writable attr _n_expr: PExpr
+    readable writable attr _n_type: PType
 end
 class APlusExpr
 special PExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_expr2: PExpr = null
+    readable writable attr _n_expr: PExpr
+    readable writable attr _n_expr2: PExpr
 end
 class AMinusExpr
 special PExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_expr2: PExpr = null
+    readable writable attr _n_expr: PExpr
+    readable writable attr _n_expr2: PExpr
 end
 class AStarshipExpr
 special PExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_expr2: PExpr = null
+    readable writable attr _n_expr: PExpr
+    readable writable attr _n_expr2: PExpr
 end
 class AStarExpr
 special PExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_expr2: PExpr = null
+    readable writable attr _n_expr: PExpr
+    readable writable attr _n_expr2: PExpr
 end
 class ASlashExpr
 special PExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_expr2: PExpr = null
+    readable writable attr _n_expr: PExpr
+    readable writable attr _n_expr2: PExpr
 end
 class APercentExpr
 special PExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_expr2: PExpr = null
+    readable writable attr _n_expr: PExpr
+    readable writable attr _n_expr2: PExpr
 end
 class AUminusExpr
 special PExpr
-    readable writable attr _n_minus: TMinus = null
-    readable writable attr _n_expr: PExpr = null
+    readable writable attr _n_minus: TMinus
+    readable writable attr _n_expr: PExpr
 end
 class ANewExpr
 special PExpr
-    readable writable attr _n_kwnew: TKwnew = null
-    readable writable attr _n_type: PType = null
-    readable writable attr _n_id: TId = null
-    readable writable attr _n_args: List[PExpr] = null
+    readable writable attr _n_kwnew: TKwnew
+    readable writable attr _n_type: PType
+    readable writable attr _n_id: nullable TId = null
+    readable writable attr _n_args: List[PExpr] = new List[PExpr]
 end
 class AAttrExpr
 special PExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_id: TAttrid = null
+    readable writable attr _n_expr: PExpr
+    readable writable attr _n_id: TAttrid
 end
 class AAttrAssignExpr
 special PExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_id: TAttrid = null
-    readable writable attr _n_assign: TAssign = null
-    readable writable attr _n_value: PExpr = null
+    readable writable attr _n_expr: PExpr
+    readable writable attr _n_id: TAttrid
+    readable writable attr _n_assign: TAssign
+    readable writable attr _n_value: PExpr
 end
 class AAttrReassignExpr
 special PExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_id: TAttrid = null
-    readable writable attr _n_assign_op: PAssignOp = null
-    readable writable attr _n_value: PExpr = null
+    readable writable attr _n_expr: PExpr
+    readable writable attr _n_id: TAttrid
+    readable writable attr _n_assign_op: PAssignOp
+    readable writable attr _n_value: PExpr
 end
 class ACallExpr
 special PExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_id: TId = null
-    readable writable attr _n_args: List[PExpr] = null
-    readable writable attr _n_closure_defs: List[PClosureDef] = null
+    readable writable attr _n_expr: PExpr
+    readable writable attr _n_id: TId
+    readable writable attr _n_args: List[PExpr] = new List[PExpr]
+    readable writable attr _n_closure_defs: List[PClosureDef] = new List[PClosureDef]
 end
 class ACallAssignExpr
 special PExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_id: TId = null
-    readable writable attr _n_args: List[PExpr] = null
-    readable writable attr _n_assign: TAssign = null
-    readable writable attr _n_value: PExpr = null
+    readable writable attr _n_expr: PExpr
+    readable writable attr _n_id: TId
+    readable writable attr _n_args: List[PExpr] = new List[PExpr]
+    readable writable attr _n_assign: TAssign
+    readable writable attr _n_value: PExpr
 end
 class ACallReassignExpr
 special PExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_id: TId = null
-    readable writable attr _n_args: List[PExpr] = null
-    readable writable attr _n_assign_op: PAssignOp = null
-    readable writable attr _n_value: PExpr = null
+    readable writable attr _n_expr: PExpr
+    readable writable attr _n_id: TId
+    readable writable attr _n_args: List[PExpr] = new List[PExpr]
+    readable writable attr _n_assign_op: PAssignOp
+    readable writable attr _n_value: PExpr
 end
 class ASuperExpr
 special PExpr
-    readable writable attr _n_qualified: PQualified = null
-    readable writable attr _n_kwsuper: TKwsuper = null
-    readable writable attr _n_args: List[PExpr] = null
+    readable writable attr _n_qualified: nullable PQualified = null
+    readable writable attr _n_kwsuper: TKwsuper
+    readable writable attr _n_args: List[PExpr] = new List[PExpr]
 end
 class AInitExpr
 special PExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_kwinit: TKwinit = null
-    readable writable attr _n_args: List[PExpr] = null
+    readable writable attr _n_expr: PExpr
+    readable writable attr _n_kwinit: TKwinit
+    readable writable attr _n_args: List[PExpr] = new List[PExpr]
 end
 class ABraExpr
 special PExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_args: List[PExpr] = null
-    readable writable attr _n_closure_defs: List[PClosureDef] = null
+    readable writable attr _n_expr: PExpr
+    readable writable attr _n_args: List[PExpr] = new List[PExpr]
+    readable writable attr _n_closure_defs: List[PClosureDef] = new List[PClosureDef]
 end
 class ABraAssignExpr
 special PExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_args: List[PExpr] = null
-    readable writable attr _n_assign: TAssign = null
-    readable writable attr _n_value: PExpr = null
+    readable writable attr _n_expr: PExpr
+    readable writable attr _n_args: List[PExpr] = new List[PExpr]
+    readable writable attr _n_assign: TAssign
+    readable writable attr _n_value: PExpr
 end
 class ABraReassignExpr
 special PExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_args: List[PExpr] = null
-    readable writable attr _n_assign_op: PAssignOp = null
-    readable writable attr _n_value: PExpr = null
+    readable writable attr _n_expr: PExpr
+    readable writable attr _n_args: List[PExpr] = new List[PExpr]
+    readable writable attr _n_assign_op: PAssignOp
+    readable writable attr _n_value: PExpr
 end
 class AClosureCallExpr
 special PExpr
-    readable writable attr _n_id: TId = null
-    readable writable attr _n_args: List[PExpr] = null
-    readable writable attr _n_closure_defs: List[PClosureDef] = null
+    readable writable attr _n_id: TId
+    readable writable attr _n_args: List[PExpr] = new List[PExpr]
+    readable writable attr _n_closure_defs: List[PClosureDef] = new List[PClosureDef]
 end
 class AVarExpr
 special PExpr
-    readable writable attr _n_id: TId = null
+    readable writable attr _n_id: TId
 end
 class AVarAssignExpr
 special PExpr
-    readable writable attr _n_id: TId = null
-    readable writable attr _n_assign: TAssign = null
-    readable writable attr _n_value: PExpr = null
+    readable writable attr _n_id: TId
+    readable writable attr _n_assign: TAssign
+    readable writable attr _n_value: PExpr
 end
 class AVarReassignExpr
 special PExpr
-    readable writable attr _n_id: TId = null
-    readable writable attr _n_assign_op: PAssignOp = null
-    readable writable attr _n_value: PExpr = null
+    readable writable attr _n_id: TId
+    readable writable attr _n_assign_op: PAssignOp
+    readable writable attr _n_value: PExpr
 end
 class ARangeExpr
 special PExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_expr2: PExpr = null
+    readable writable attr _n_expr: PExpr
+    readable writable attr _n_expr2: PExpr
 end
 class ACrangeExpr
 special PExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_expr2: PExpr = null
+    readable writable attr _n_expr: PExpr
+    readable writable attr _n_expr2: PExpr
 end
 class AOrangeExpr
 special PExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_expr2: PExpr = null
+    readable writable attr _n_expr: PExpr
+    readable writable attr _n_expr2: PExpr
 end
 class AArrayExpr
 special PExpr
-    readable writable attr _n_exprs: List[PExpr] = null
+    readable writable attr _n_exprs: List[PExpr] = new List[PExpr]
 end
 class ASelfExpr
 special PExpr
-    readable writable attr _n_kwself: TKwself = null
+    readable writable attr _n_kwself: TKwself
 end
 class AImplicitSelfExpr
 special PExpr
 end
 class ATrueExpr
 special PExpr
-    readable writable attr _n_kwtrue: TKwtrue = null
+    readable writable attr _n_kwtrue: TKwtrue
 end
 class AFalseExpr
 special PExpr
-    readable writable attr _n_kwfalse: TKwfalse = null
+    readable writable attr _n_kwfalse: TKwfalse
 end
 class ANullExpr
 special PExpr
-    readable writable attr _n_kwnull: TKwnull = null
+    readable writable attr _n_kwnull: TKwnull
 end
 class AIntExpr
 special PExpr
-    readable writable attr _n_number: TNumber = null
+    readable writable attr _n_number: TNumber
 end
 class AFloatExpr
 special PExpr
-    readable writable attr _n_float: TFloat = null
+    readable writable attr _n_float: TFloat
 end
 class ACharExpr
 special PExpr
-    readable writable attr _n_char: TChar = null
+    readable writable attr _n_char: TChar
 end
 class AStringExpr
 special PExpr
-    readable writable attr _n_string: TString = null
+    readable writable attr _n_string: TString
 end
 class AStartStringExpr
 special PExpr
-    readable writable attr _n_string: TStartString = null
+    readable writable attr _n_string: TStartString
 end
 class AMidStringExpr
 special PExpr
-    readable writable attr _n_string: TMidString = null
+    readable writable attr _n_string: TMidString
 end
 class AEndStringExpr
 special PExpr
-    readable writable attr _n_string: TEndString = null
+    readable writable attr _n_string: TEndString
 end
 class ASuperstringExpr
 special PExpr
-    readable writable attr _n_exprs: List[PExpr] = null
+    readable writable attr _n_exprs: List[PExpr] = new List[PExpr]
 end
 class AParExpr
 special PExpr
-    readable writable attr _n_expr: PExpr = null
+    readable writable attr _n_expr: PExpr
 end
 class AAsCastExpr
 special PExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_kwas: TKwas = null
-    readable writable attr _n_type: PType = null
+    readable writable attr _n_expr: PExpr
+    readable writable attr _n_kwas: TKwas
+    readable writable attr _n_type: PType
 end
 class AAsNotnullExpr
 special PExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_kwas: TKwas = null
-    readable writable attr _n_kwnot: TKwnot = null
-    readable writable attr _n_kwnull: TKwnull = null
+    readable writable attr _n_expr: PExpr
+    readable writable attr _n_kwas: TKwas
+    readable writable attr _n_kwnot: TKwnot
+    readable writable attr _n_kwnull: TKwnull
 end
 class AIssetAttrExpr
 special PExpr
-    readable writable attr _n_kwisset: TKwisset = null
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_id: TAttrid = null
+    readable writable attr _n_kwisset: TKwisset
+    readable writable attr _n_expr: PExpr
+    readable writable attr _n_id: TAttrid
 end
 class APlusAssignOp
 special PAssignOp
-    readable writable attr _n_pluseq: TPluseq = null
+    readable writable attr _n_pluseq: TPluseq
 end
 class AMinusAssignOp
 special PAssignOp
-    readable writable attr _n_minuseq: TMinuseq = null
+    readable writable attr _n_minuseq: TMinuseq
 end
 class AClosureDef
 special PClosureDef
-    readable writable attr _n_kwwith: TKwwith = null
-    readable writable attr _n_id: List[TId] = null
-    readable writable attr _n_kwdo: TKwdo = null
-    readable writable attr _n_expr: PExpr = null
+    readable writable attr _n_kwwith: TKwwith
+    readable writable attr _n_id: List[TId] = new List[TId]
+    readable writable attr _n_kwdo: TKwdo
+    readable writable attr _n_expr: nullable PExpr = null
 end
 class AQualified
 special PQualified
-    readable writable attr _n_id: List[TId] = null
-    readable writable attr _n_classid: TClassid = null
+    readable writable attr _n_id: List[TId] = new List[TId]
+    readable writable attr _n_classid: nullable TClassid = null
 end
 class ADoc
 special PDoc
-    readable writable attr _n_comment: List[TComment] = null
+    readable writable attr _n_comment: List[TComment] = new List[TComment]
 end
 
 class Start
 special Prod
-    readable writable attr _n_base: PModule 
+    readable writable attr _n_base: nullable PModule 
     readable writable attr _n_eof: EOF 
 end
index 6e2f6ac..376838c 100644 (file)
@@ -291,17 +291,17 @@ class PClasskind special Prod end
 class PFormaldef special Prod end
 class PSuperclass special Prod end
 class PPropdef special Prod 
-    readable writable attr _n_doc: PDoc = null
+    readable writable attr _n_doc: nullable PDoc = null
 end
 class PAble special Prod
-    readable writable attr _n_kwredef: TKwredef = null
+    readable writable attr _n_kwredef: nullable TKwredef = null
 end
 class PMethid special Prod end
 class PSignature special Prod end
 class PParam
 special Prod
-    readable writable attr _n_id: TId = null
-    readable writable attr _n_type: PType = null
+    readable writable attr _n_id: TId
+    readable writable attr _n_type: nullable PType = null
 end
 class PClosureDecl special Prod end
 class PType special Prod end
@@ -313,365 +313,365 @@ class PDoc special Prod end
 
 class AModule
 special PModule
-    readable writable attr _n_packagedecl: PPackagedecl = null
-    readable writable attr _n_imports: List[PImport] = null
-    readable writable attr _n_classdefs: List[PClassdef] = null
+    readable writable attr _n_packagedecl: nullable PPackagedecl = null
+    readable writable attr _n_imports: List[PImport] = new List[PImport]
+    readable writable attr _n_classdefs: List[PClassdef] = new List[PClassdef]
 end
 class APackagedecl
 special PPackagedecl
-    readable writable attr _n_doc: PDoc = null
-    readable writable attr _n_kwpackage: TKwpackage = null
-    readable writable attr _n_id: TId = null
+    readable writable attr _n_doc: nullable PDoc = null
+    readable writable attr _n_kwpackage: TKwpackage
+    readable writable attr _n_id: TId
 end
 class AImport
 special PImport
-    readable writable attr _n_visibility: PVisibility = null
-    readable writable attr _n_kwimport: TKwimport = null
-    readable writable attr _n_id: TId = null
+    readable writable attr _n_visibility: PVisibility
+    readable writable attr _n_kwimport: TKwimport
+    readable writable attr _n_id: TId
 end
 class ANoImport
 special PImport
-    readable writable attr _n_visibility: PVisibility = null
-    readable writable attr _n_kwimport: TKwimport = null
-    readable writable attr _n_kwend: TKwend = null
+    readable writable attr _n_visibility: PVisibility
+    readable writable attr _n_kwimport: TKwimport
+    readable writable attr _n_kwend: TKwend
 end
 class APublicVisibility
 special PVisibility
 end
 class APrivateVisibility
 special PVisibility
-    readable writable attr _n_kwprivate: TKwprivate = null
+    readable writable attr _n_kwprivate: TKwprivate
 end
 class AProtectedVisibility
 special PVisibility
-    readable writable attr _n_kwprotected: TKwprotected = null
+    readable writable attr _n_kwprotected: TKwprotected
 end
 class AIntrudeVisibility
 special PVisibility
-    readable writable attr _n_kwintrude: TKwintrude = null
+    readable writable attr _n_kwintrude: TKwintrude
 end
 class AClassdef
 special PClassdef
-    readable writable attr _n_doc: PDoc = null
-    readable writable attr _n_kwredef: TKwredef = null
-    readable writable attr _n_visibility: PVisibility = null
-    readable writable attr _n_classkind: PClasskind = null
-    readable writable attr _n_id: TClassid = null
-    readable writable attr _n_formaldefs: List[PFormaldef] = null
-    readable writable attr _n_superclasses: List[PSuperclass] = null
-    readable writable attr _n_propdefs: List[PPropdef] = null
+    readable writable attr _n_doc: nullable PDoc = null
+    readable writable attr _n_kwredef: nullable TKwredef = null
+    readable writable attr _n_visibility: PVisibility
+    readable writable attr _n_classkind: PClasskind
+    readable writable attr _n_id: nullable TClassid = null
+    readable writable attr _n_formaldefs: List[PFormaldef] = new List[PFormaldef]
+    readable writable attr _n_superclasses: List[PSuperclass] = new List[PSuperclass]
+    readable writable attr _n_propdefs: List[PPropdef] = new List[PPropdef]
 end
 class ATopClassdef
 special PClassdef
-    readable writable attr _n_propdefs: List[PPropdef] = null
+    readable writable attr _n_propdefs: List[PPropdef] = new List[PPropdef]
 end
 class AMainClassdef
 special PClassdef
-    readable writable attr _n_propdefs: List[PPropdef] = null
+    readable writable attr _n_propdefs: List[PPropdef] = new List[PPropdef]
 end
 class AConcreteClasskind
 special PClasskind
-    readable writable attr _n_kwclass: TKwclass = null
+    readable writable attr _n_kwclass: TKwclass
 end
 class AAbstractClasskind
 special PClasskind
-    readable writable attr _n_kwabstract: TKwabstract = null
-    readable writable attr _n_kwclass: TKwclass = null
+    readable writable attr _n_kwabstract: TKwabstract
+    readable writable attr _n_kwclass: TKwclass
 end
 class AInterfaceClasskind
 special PClasskind
-    readable writable attr _n_kwinterface: TKwinterface = null
+    readable writable attr _n_kwinterface: TKwinterface
 end
 class AUniversalClasskind
 special PClasskind
-    readable writable attr _n_kwuniversal: TKwuniversal = null
+    readable writable attr _n_kwuniversal: TKwuniversal
 end
 class AFormaldef
 special PFormaldef
-    readable writable attr _n_id: TClassid = null
-    readable writable attr _n_type: PType = null
+    readable writable attr _n_id: TClassid
+    readable writable attr _n_type: nullable PType = null
 end
 class ASuperclass
 special PSuperclass
-    readable writable attr _n_kwspecial: TKwspecial = null
-    readable writable attr _n_type: PType = null
+    readable writable attr _n_kwspecial: TKwspecial
+    readable writable attr _n_type: PType
 end
 class AAttrPropdef
 special PPropdef
-    readable writable attr _n_kwredef: TKwredef = null
-    readable writable attr _n_visibility: PVisibility = null
-    readable writable attr _n_kwattr: TKwattr = null
-    readable writable attr _n_kwvar: TKwvar = null
-    readable writable attr _n_id: TAttrid = null
-    readable writable attr _n_type: PType = null
-    readable writable attr _n_readable: PAble = null
-    readable writable attr _n_writable: PAble = null
-    readable writable attr _n_expr: PExpr = null
+    readable writable attr _n_kwredef: nullable TKwredef = null
+    readable writable attr _n_visibility: PVisibility
+    readable writable attr _n_kwattr: nullable TKwattr = null
+    readable writable attr _n_kwvar: nullable TKwvar = null
+    readable writable attr _n_id: TAttrid
+    readable writable attr _n_type: nullable PType = null
+    readable writable attr _n_readable: nullable PAble = null
+    readable writable attr _n_writable: nullable PAble = null
+    readable writable attr _n_expr: nullable PExpr = null
 end
 class AMethPropdef
 special PPropdef
-    readable writable attr _n_kwredef: TKwredef = null
-    readable writable attr _n_visibility: PVisibility = null
-    readable writable attr _n_methid: PMethid = null
-    readable writable attr _n_signature: PSignature = null
+    readable writable attr _n_kwredef: nullable TKwredef = null
+    readable writable attr _n_visibility: nullable PVisibility
+    readable writable attr _n_methid: nullable PMethid = null
+    readable writable attr _n_signature: nullable PSignature
 end
 class ADeferredMethPropdef
 special AMethPropdef
-    readable writable attr _n_kwmeth: TKwmeth = null
+    readable writable attr _n_kwmeth: TKwmeth
 end
 class AInternMethPropdef
 special AMethPropdef
-    readable writable attr _n_kwmeth: TKwmeth = null
+    readable writable attr _n_kwmeth: TKwmeth
 end
 class AExternMethPropdef
 special AMethPropdef
-    readable writable attr _n_kwmeth: TKwmeth = null
-    readable writable attr _n_extern: TString = null
+    readable writable attr _n_kwmeth: TKwmeth
+    readable writable attr _n_extern: nullable TString = null
 end
 class AConcreteMethPropdef
 special AMethPropdef
-    readable writable attr _n_kwmeth: TKwmeth = null
-    readable writable attr _n_block: PExpr = null
+    readable writable attr _n_kwmeth: nullable TKwmeth
+    readable writable attr _n_block: nullable PExpr = null
 end
 class AConcreteInitPropdef
 special AConcreteMethPropdef
-    readable writable attr _n_kwinit: TKwinit = null
+    readable writable attr _n_kwinit: TKwinit
 end
 class AMainMethPropdef
 special AConcreteMethPropdef
 end
 class ATypePropdef
 special PPropdef
-    readable writable attr _n_kwredef: TKwredef = null
-    readable writable attr _n_visibility: PVisibility = null
-    readable writable attr _n_kwtype: TKwtype = null
-    readable writable attr _n_id: TClassid = null
-    readable writable attr _n_type: PType = null
+    readable writable attr _n_kwredef: nullable TKwredef = null
+    readable writable attr _n_visibility: PVisibility
+    readable writable attr _n_kwtype: TKwtype
+    readable writable attr _n_id: TClassid
+    readable writable attr _n_type: PType
 end
 class AReadAble
 special PAble
-    readable writable attr _n_kwreadable: TKwreadable = null
+    readable writable attr _n_kwreadable: TKwreadable
 end
 class AWriteAble
 special PAble
-    readable writable attr _n_kwwritable: TKwwritable = null
+    readable writable attr _n_kwwritable: TKwwritable
 end
 class AIdMethid
 special PMethid
-    readable writable attr _n_id: TId = null
+    readable writable attr _n_id: TId
 end
 class APlusMethid
 special PMethid
-    readable writable attr _n_plus: TPlus = null
+    readable writable attr _n_plus: TPlus
 end
 class AMinusMethid
 special PMethid
-    readable writable attr _n_minus: TMinus = null
+    readable writable attr _n_minus: TMinus
 end
 class AStarMethid
 special PMethid
-    readable writable attr _n_star: TStar = null
+    readable writable attr _n_star: TStar
 end
 class ASlashMethid
 special PMethid
-    readable writable attr _n_slash: TSlash = null
+    readable writable attr _n_slash: TSlash
 end
 class APercentMethid
 special PMethid
-    readable writable attr _n_percent: TPercent = null
+    readable writable attr _n_percent: TPercent
 end
 class AEqMethid
 special PMethid
-    readable writable attr _n_eq: TEq = null
+    readable writable attr _n_eq: TEq
 end
 class ANeMethid
 special PMethid
-    readable writable attr _n_ne: TNe = null
+    readable writable attr _n_ne: TNe
 end
 class ALeMethid
 special PMethid
-    readable writable attr _n_le: TLe = null
+    readable writable attr _n_le: TLe
 end
 class AGeMethid
 special PMethid
-    readable writable attr _n_ge: TGe = null
+    readable writable attr _n_ge: TGe
 end
 class ALtMethid
 special PMethid
-    readable writable attr _n_lt: TLt = null
+    readable writable attr _n_lt: TLt
 end
 class AGtMethid
 special PMethid
-    readable writable attr _n_gt: TGt = null
+    readable writable attr _n_gt: TGt
 end
 class ABraMethid
 special PMethid
-    readable writable attr _n_obra: TObra = null
-    readable writable attr _n_cbra: TCbra = null
+    readable writable attr _n_obra: TObra
+    readable writable attr _n_cbra: TCbra
 end
 class AStarshipMethid
 special PMethid
-    readable writable attr _n_starship: TStarship = null
+    readable writable attr _n_starship: TStarship
 end
 class AAssignMethid
 special PMethid
-    readable writable attr _n_id: TId = null
-    readable writable attr _n_assign: TAssign = null
+    readable writable attr _n_id: TId
+    readable writable attr _n_assign: TAssign
 end
 class ABraassignMethid
 special PMethid
-    readable writable attr _n_obra: TObra = null
-    readable writable attr _n_cbra: TCbra = null
-    readable writable attr _n_assign: TAssign = null
+    readable writable attr _n_obra: TObra
+    readable writable attr _n_cbra: TCbra
+    readable writable attr _n_assign: TAssign
 end
 class ASignature
 special PSignature
-    readable writable attr _n_params: List[PParam] = null
-    readable writable attr _n_type: PType = null
-    readable writable attr _n_closure_decls: List[PClosureDecl] = null
+    readable writable attr _n_params: List[PParam] = new List[PParam]
+    readable writable attr _n_type: nullable PType = null
+    readable writable attr _n_closure_decls: List[PClosureDecl] = new List[PClosureDecl]
 end
 class AParam
 special PParam
-    readable writable attr _n_dotdotdot: TDotdotdot = null
+    readable writable attr _n_dotdotdot: nullable TDotdotdot = null
 end
 class AClosureDecl
 special PClosureDecl
-    readable writable attr _n_kwwith: TKwwith = null
-    readable writable attr _n_kwbreak: TKwbreak = null
-    readable writable attr _n_id: TId = null
-    readable writable attr _n_signature: PSignature = null
-    readable writable attr _n_expr: PExpr = null
+    readable writable attr _n_kwwith: TKwwith
+    readable writable attr _n_kwbreak: nullable TKwbreak = null
+    readable writable attr _n_id: TId
+    readable writable attr _n_signature: PSignature
+    readable writable attr _n_expr: nullable PExpr = null
 end
 class AType
 special PType
-    readable writable attr _n_kwnullable: TKwnullable = null
-    readable writable attr _n_id: TClassid = null
-    readable writable attr _n_types: List[PType] = null
+    readable writable attr _n_kwnullable: nullable TKwnullable = null
+    readable writable attr _n_id: TClassid
+    readable writable attr _n_types: List[PType] = new List[PType]
 end
 
 
 
 class ABlockExpr
 special PExpr
-    readable writable attr _n_expr: List[PExpr] = null
+    readable writable attr _n_expr: List[PExpr] = new List[PExpr]
 end
 class AVardeclExpr
 special PExpr
-    readable writable attr _n_kwvar: TKwvar = null
-    readable writable attr _n_id: TId = null
-    readable writable attr _n_type: PType = null
-    readable writable attr _n_assign: TAssign = null
-    readable writable attr _n_expr: PExpr = null
+    readable writable attr _n_kwvar: TKwvar
+    readable writable attr _n_id: TId
+    readable writable attr _n_type: nullable PType = null
+    readable writable attr _n_assign: nullable TAssign = null
+    readable writable attr _n_expr: nullable PExpr = null
 end
 class AReturnExpr
 special PExpr
-    readable writable attr _n_kwreturn: TKwreturn = null
-    readable writable attr _n_expr: PExpr = null
+    readable writable attr _n_kwreturn: TKwreturn
+    readable writable attr _n_expr: nullable PExpr = null
 end
 class ABreakExpr
 special PExpr
-    readable writable attr _n_kwbreak: TKwbreak = null
-    readable writable attr _n_expr: PExpr = null
+    readable writable attr _n_kwbreak: TKwbreak
+    readable writable attr _n_expr: nullable PExpr = null
 end
 class AAbortExpr
 special PExpr
-    readable writable attr _n_kwabort: TKwabort = null
+    readable writable attr _n_kwabort: TKwabort
 end
 class AContinueExpr
 special PExpr
-    readable writable attr _n_kwcontinue: TKwcontinue = null
-    readable writable attr _n_expr: PExpr = null
+    readable writable attr _n_kwcontinue: TKwcontinue
+    readable writable attr _n_expr: nullable PExpr = null
 end
 class ADoExpr
 special PExpr
-    readable writable attr _n_kwdo: TKwdo = null
-    readable writable attr _n_block: PExpr = null
+    readable writable attr _n_kwdo: TKwdo
+    readable writable attr _n_block: nullable PExpr = null
 end
 class AIfExpr
 special PExpr
-    readable writable attr _n_kwif: TKwif = null
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_then: PExpr = null
-    readable writable attr _n_else: PExpr = null
+    readable writable attr _n_kwif: TKwif
+    readable writable attr _n_expr: PExpr
+    readable writable attr _n_then: nullable PExpr = null
+    readable writable attr _n_else: nullable PExpr = null
 end
 class AIfexprExpr
 special PExpr
-    readable writable attr _n_kwif: TKwif = null
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_kwthen: TKwthen = null
-    readable writable attr _n_then: PExpr = null
-    readable writable attr _n_kwelse: TKwelse = null
-    readable writable attr _n_else: PExpr = null
+    readable writable attr _n_kwif: TKwif
+    readable writable attr _n_expr: PExpr
+    readable writable attr _n_kwthen: TKwthen
+    readable writable attr _n_then: PExpr
+    readable writable attr _n_kwelse: TKwelse
+    readable writable attr _n_else: PExpr
 end
 class AWhileExpr
 special PExpr
-    readable writable attr _n_kwwhile: TKwwhile = null
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_kwdo: TKwdo = null
-    readable writable attr _n_block: PExpr = null
+    readable writable attr _n_kwwhile:  TKwwhile
+    readable writable attr _n_expr: PExpr
+    readable writable attr _n_kwdo: TKwdo
+    readable writable attr _n_block: nullable PExpr = null
 end
 class AForExpr
 special PExpr
-    readable writable attr _n_kwfor: TKwfor = null
-    readable writable attr _n_id: TId = null
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_kwdo: TKwdo = null
-    readable writable attr _n_block: PExpr = null
+    readable writable attr _n_kwfor: TKwfor
+    readable writable attr _n_id: TId
+    readable writable attr _n_expr: PExpr
+    readable writable attr _n_kwdo: TKwdo
+    readable writable attr _n_block: nullable PExpr = null
 end
 class AAssertExpr
 special PExpr
-    readable writable attr _n_kwassert: TKwassert = null
-    readable writable attr _n_id: TId = null
-    readable writable attr _n_expr: PExpr = null
+    readable writable attr _n_kwassert: TKwassert
+    readable writable attr _n_id: nullable TId = null
+    readable writable attr _n_expr: PExpr
 end
 class AAssignFormExpr
 special PExpr
-    readable writable attr _n_assign: TAssign = null
-    readable writable attr _n_value: PExpr = null
+    readable writable attr _n_assign: TAssign
+    readable writable attr _n_value: PExpr
 end
 class AReassignFormExpr
 special PExpr
-    readable writable attr _n_assign_op: PAssignOp = null
-    readable writable attr _n_value: PExpr = null
+    readable writable attr _n_assign_op: PAssignOp
+    readable writable attr _n_value: PExpr
 end
 class AOnceExpr
 special AProxyExpr
-    readable writable attr _n_kwonce: TKwonce = null
+    readable writable attr _n_kwonce: TKwonce
 end
 class ASendExpr
 special PExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_closure_defs: List[PClosureDef] = null
+    readable writable attr _n_expr: PExpr
+    readable writable attr _n_closure_defs: List[PClosureDef] = new List[PClosureDef]
 end
 class ABinopExpr
 special ASendExpr
-    readable writable attr _n_expr2: PExpr = null
+    readable writable attr _n_expr2: PExpr
 end
 class ABoolExpr
 special PExpr
 end
 class AOrExpr
 special ABoolExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_expr2: PExpr = null
+    readable writable attr _n_expr: PExpr
+    readable writable attr _n_expr2: PExpr
 end
 class AAndExpr
 special ABoolExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_expr2: PExpr = null
+    readable writable attr _n_expr: PExpr
+    readable writable attr _n_expr2: PExpr
 end
 class ANotExpr
 special ABoolExpr
-    readable writable attr _n_kwnot: TKwnot = null
-    readable writable attr _n_expr: PExpr = null
+    readable writable attr _n_kwnot: TKwnot
+    readable writable attr _n_expr: PExpr
 end
 class AEqExpr
 special ABinopExpr
 end
 class AEeExpr
 special ABoolExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_expr2: PExpr = null
+    readable writable attr _n_expr: PExpr
+    readable writable attr _n_expr2: PExpr
 end
 class ANeExpr
 special ABinopExpr
@@ -690,8 +690,8 @@ special ABinopExpr
 end
 class AIsaExpr
 special ABoolExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_type: PType = null
+    readable writable attr _n_expr: PExpr
+    readable writable attr _n_type: PType
 end
 class APlusExpr
 special ABinopExpr
@@ -713,31 +713,31 @@ special ABinopExpr
 end
 class AUminusExpr
 special ASendExpr
-    readable writable attr _n_minus: TMinus = null
+    readable writable attr _n_minus: TMinus
 end
 class ANewExpr
 special PExpr
-    readable writable attr _n_kwnew: TKwnew = null
-    readable writable attr _n_type: PType = null
-    readable writable attr _n_id: TId = null
-    readable writable attr _n_args: List[PExpr] = null
+    readable writable attr _n_kwnew: TKwnew
+    readable writable attr _n_type: PType
+    readable writable attr _n_id: nullable TId = null
+    readable writable attr _n_args: List[PExpr] = new List[PExpr]
 end
 class AAttrFormExpr
 special PExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_id: TAttrid = null
+    readable writable attr _n_expr: PExpr
+    readable writable attr _n_id: TAttrid
 end
 class AAttrExpr
 special AAttrFormExpr
 end
 class AAttrAssignExpr
-special AAttrFormExpr 
-special AAssignFormExpr 
+special AAttrFormExpr
+special AAssignFormExpr
 end
 class ACallFormExpr
 special ASendExpr
-    readable writable attr _n_id: TId = null
-    readable writable attr _n_args: List[PExpr] = null
+    readable writable attr _n_id: TId
+    readable writable attr _n_args: List[PExpr] = new List[PExpr]
 end
 class AAttrReassignExpr
 special PExpr
@@ -758,18 +758,18 @@ special AReassignFormExpr
 end
 class ASuperExpr
 special PExpr
-    readable writable attr _n_qualified: PQualified = null
-    readable writable attr _n_kwsuper: TKwsuper = null
-    readable writable attr _n_args: List[PExpr] = null
+    readable writable attr _n_qualified: nullable PQualified = null
+    readable writable attr _n_kwsuper: TKwsuper
+    readable writable attr _n_args: List[PExpr] = new List[PExpr]
 end
 class AInitExpr
 special ASendExpr
-    readable writable attr _n_kwinit: TKwinit = null
-    readable writable attr _n_args: List[PExpr] = null
+    readable writable attr _n_kwinit: TKwinit
+    readable writable attr _n_args: List[PExpr] = new List[PExpr]
 end
 class ABraFormExpr
 special ASendExpr
-    readable writable attr _n_args: List[PExpr] = null 
+    readable writable attr _n_args: List[PExpr] = new List[PExpr]
 end
 class ABraExpr
 special ABraFormExpr
@@ -780,7 +780,7 @@ special AAssignFormExpr
 end
 class AVarFormExpr
 special PExpr
-    readable writable attr _n_id: TId = null 
+    readable writable attr _n_id: TId
 end
 class ABraReassignExpr
 special ABraFormExpr
@@ -788,9 +788,9 @@ special AReassignFormExpr
 end
 class AClosureCallExpr
 special PExpr
-    readable writable attr _n_id: TId = null
-    readable writable attr _n_args: List[PExpr] = null
-    readable writable attr _n_closure_defs: List[PClosureDef] = null
+    readable writable attr _n_id: TId
+    readable writable attr _n_args: List[PExpr] = new List[PExpr]
+    readable writable attr _n_closure_defs: List[PClosureDef] = new List[PClosureDef]
 end
 class AVarExpr
 special AVarFormExpr
@@ -805,8 +805,8 @@ special AReassignFormExpr
 end
 class ARangeExpr
 special PExpr
-    readable writable attr _n_expr: PExpr = null 
-    readable writable attr _n_expr2: PExpr = null
+    readable writable attr _n_expr: PExpr
+    readable writable attr _n_expr2: PExpr
 end
 class ACrangeExpr
 special ARangeExpr
@@ -816,113 +816,113 @@ special ARangeExpr
 end
 class AArrayExpr
 special PExpr
-    readable writable attr _n_exprs: List[PExpr] = null
+    readable writable attr _n_exprs: List[PExpr] = new List[PExpr]
 end
 class ASelfExpr
 special PExpr
-    readable writable attr _n_kwself: TKwself = null
+    readable writable attr _n_kwself: nullable TKwself
 end
 class AImplicitSelfExpr
 special ASelfExpr
 end
 class ATrueExpr
 special ABoolExpr
-    readable writable attr _n_kwtrue: TKwtrue = null
+    readable writable attr _n_kwtrue: TKwtrue
 end
 class AFalseExpr
 special ABoolExpr
-    readable writable attr _n_kwfalse: TKwfalse = null
+    readable writable attr _n_kwfalse: TKwfalse
 end
 class ANullExpr
 special PExpr
-    readable writable attr _n_kwnull: TKwnull = null
+    readable writable attr _n_kwnull: TKwnull
 end
 class AIntExpr
 special PExpr
-    readable writable attr _n_number: TNumber = null
+    readable writable attr _n_number: TNumber
 end
 class AFloatExpr
 special PExpr
-    readable writable attr _n_float: TFloat = null
+    readable writable attr _n_float: TFloat
 end
 class ACharExpr
 special PExpr
-    readable writable attr _n_char: TChar = null
+    readable writable attr _n_char: TChar
 end
 class AStringFormExpr
 special PExpr
 end
 class AStringExpr
 special AStringFormExpr
-    readable writable attr _n_string: TString = null
+    readable writable attr _n_string: TString
 end
 class AStartStringExpr
 special AStringFormExpr
-    readable writable attr _n_string: TStartString = null
+    readable writable attr _n_string: TStartString
 end
 class AMidStringExpr
 special AStringFormExpr
-    readable writable attr _n_string: TMidString = null
+    readable writable attr _n_string: TMidString
 end
 class AEndStringExpr
 special AStringFormExpr
-    readable writable attr _n_string: TEndString = null
+    readable writable attr _n_string: TEndString
 end
 class ASuperstringExpr
 special PExpr
-    readable writable attr _n_exprs: List[PExpr] = null
+    readable writable attr _n_exprs: List[PExpr] = new List[PExpr]
 end
 class AParExpr
 special AProxyExpr
 end
 class AProxyExpr
 special PExpr
-    readable writable attr _n_expr: PExpr = null
+    readable writable attr _n_expr: PExpr
 end
 class AAsCastExpr
 special PExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_kwas: TKwas = null
-    readable writable attr _n_type: PType = null
+    readable writable attr _n_expr: PExpr
+    readable writable attr _n_kwas: TKwas
+    readable writable attr _n_type: PType
 end
 class AAsNotnullExpr
 special PExpr
-    readable writable attr _n_expr: PExpr = null
-    readable writable attr _n_kwas: TKwas = null
-    readable writable attr _n_kwnot: TKwnot = null
-    readable writable attr _n_kwnull: TKwnull = null
+    readable writable attr _n_expr: PExpr
+    readable writable attr _n_kwas: TKwas
+    readable writable attr _n_kwnot: TKwnot
+    readable writable attr _n_kwnull: TKwnull
 end
 class AIssetAttrExpr
 special AAttrFormExpr
-    readable writable attr _n_kwisset: TKwisset = null
+    readable writable attr _n_kwisset: TKwisset
 end
 class APlusAssignOp
 special PAssignOp
-    readable writable attr _n_pluseq: TPluseq = null
+    readable writable attr _n_pluseq: TPluseq
 end
 class AMinusAssignOp
 special PAssignOp
-    readable writable attr _n_minuseq: TMinuseq = null
+    readable writable attr _n_minuseq: TMinuseq
 end
 class AClosureDef
 special PClosureDef
-    readable writable attr _n_kwwith: TKwwith = null
-    readable writable attr _n_id: List[TId] = null
-    readable writable attr _n_kwdo: TKwdo = null
-    readable writable attr _n_expr: PExpr = null
+    readable writable attr _n_kwwith: TKwwith
+    readable writable attr _n_id: List[TId] = new List[TId]
+    readable writable attr _n_kwdo: TKwdo
+    readable writable attr _n_expr: nullable PExpr = null
 end
 class AQualified
 special PQualified
-    readable writable attr _n_id: List[TId] = null
-    readable writable attr _n_classid: TClassid = null
+    readable writable attr _n_id: List[TId] = new List[TId]
+    readable writable attr _n_classid: nullable TClassid = null
 end
 class ADoc
 special PDoc
-    readable writable attr _n_comment: List[TComment] = null
+    readable writable attr _n_comment: List[TComment] = new List[TComment]
 end
 
 class Start
 special Prod
-    readable writable attr _n_base: PModule
+    readable writable attr _n_base: nullable PModule
     readable writable attr _n_eof: EOF
 end
index 9ca77ac..13dd582 100644 (file)
@@ -7,7 +7,7 @@ intrude import parser_nodes
 
 redef class PNode
        # Parent of the node in the AST
-       readable writable attr _parent: PNode 
+       readable writable attr _parent: nullable PNode
 
        # Remove a child from the AST
        meth remove_child(child: PNode)
@@ -16,7 +16,7 @@ redef class PNode
        end
 
        # Replace a child with an other node in the AST
-       meth replace_child(old_child: PNode, new_child: PNode) is abstract
+       meth replace_child(old_child: PNode, new_child: nullable PNode) is abstract
 
        # Replace itself with an other node in the AST
        meth replace_with(node: PNode)
@@ -50,7 +50,7 @@ end
 redef class Token
        redef meth visit_all(v: Visitor) do end
        redef meth visit_all_reverse(v: Visitor) do end
-       redef meth replace_child(old_child: PNode, new_child: PNode) do end
+       redef meth replace_child(old_child: PNode, new_child: nullable PNode) do end
 
        redef meth locate: String
        do
@@ -62,10 +62,10 @@ end
 
 redef class Prod
        # The first token of the production node
-       readable writable attr _first_token: Token 
+       readable writable attr _first_token: nullable Token
 
        # The last token of the production node
-       readable writable attr _last_token: Token 
+       readable writable attr _last_token: nullable Token
 
        redef meth locate: String
        do
@@ -106,11 +106,11 @@ class Visitor
         # Ask the visitor to visit a given node.
         # Usually automatically called by visit_all* methods.
         # Concrete visitors should redefine this method.
-        meth visit(e: PNode) is abstract
+        meth visit(e: nullable PNode) is abstract
 end
 
 redef class AModule
-    redef meth n_packagedecl=(n: PPackagedecl)
+    redef meth n_packagedecl=(n)
     do
         _n_packagedecl = n
         if n != null then
@@ -121,7 +121,7 @@ redef class AModule
     private init empty_init do end
 
     init init_amodule (
-            n_packagedecl: PPackagedecl ,
+            n_packagedecl: nullable PPackagedecl ,
             n_imports: Collection[Object] , # Should be Collection[PImport]
             n_classdefs: Collection[Object]  # Should be Collection[PClassdef]
     )
@@ -131,13 +131,11 @@ redef class AModule
        if n_packagedecl != null then
                n_packagedecl.parent = self
        end
-        _n_imports = new List[PImport]
        for n in n_imports do
                assert n isa PImport
                _n_imports.add(n)
                n.parent = self
        end
-        _n_classdefs = new List[PClassdef]
        for n in n_classdefs do
                assert n isa PClassdef
                _n_classdefs.add(n)
@@ -145,9 +143,8 @@ redef class AModule
        end
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_packagedecl == old_child then
             if new_child != null then
                 new_child.parent = self
@@ -187,7 +184,7 @@ redef class AModule
     redef meth visit_all(v: Visitor)
     do
         if _n_packagedecl != null then
-            v.visit(_n_packagedecl)
+            v.visit(_n_packagedecl.as(not null))
         end
             for n in _n_imports do
                 v.visit(n)
@@ -200,7 +197,7 @@ redef class AModule
     redef meth visit_all_reverse(v: Visitor)
     do
         if _n_packagedecl != null then
-            v.visit(_n_packagedecl)
+            v.visit(_n_packagedecl.as(not null))
         end
        do
            var i = _n_imports.length
@@ -219,34 +216,30 @@ redef class AModule
     end
 end
 redef class APackagedecl
-    redef meth n_doc=(n: PDoc)
+    redef meth n_doc=(n)
     do
         _n_doc = n
         if n != null then
            n.parent = self
         end
     end
-    redef meth n_kwpackage=(n: TKwpackage)
+    redef meth n_kwpackage=(n)
     do
         _n_kwpackage = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_id=(n: TId)
+    redef meth n_id=(n)
     do
         _n_id = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_apackagedecl (
-            n_doc: PDoc ,
-            n_kwpackage: TKwpackage ,
-            n_id: TId 
+            n_doc: nullable PDoc ,
+            n_kwpackage: nullable TKwpackage ,
+            n_id: nullable TId 
     )
     do
         empty_init
@@ -254,19 +247,14 @@ redef class APackagedecl
        if n_doc != null then
                n_doc.parent = self
        end
-        _n_kwpackage = n_kwpackage
-       if n_kwpackage != null then
-               n_kwpackage.parent = self
-       end
-        _n_id = n_id
-       if n_id != null then
-               n_id.parent = self
-       end
+        _n_kwpackage = n_kwpackage.as(not null)
+       n_kwpackage.parent = self
+        _n_id = n_id.as(not null)
+       n_id.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_doc == old_child then
             if new_child != null then
                 new_child.parent = self
@@ -283,7 +271,7 @@ redef class APackagedecl
                assert new_child isa TKwpackage
                 _n_kwpackage = new_child
            else
-               _n_kwpackage = null
+               abort
             end
             return
        end
@@ -293,7 +281,7 @@ redef class APackagedecl
                assert new_child isa TId
                 _n_id = new_child
            else
-               _n_id = null
+               abort
             end
             return
        end
@@ -302,85 +290,64 @@ redef class APackagedecl
     redef meth visit_all(v: Visitor)
     do
         if _n_doc != null then
-            v.visit(_n_doc)
-        end
-        if _n_kwpackage != null then
-            v.visit(_n_kwpackage)
-        end
-        if _n_id != null then
-            v.visit(_n_id)
+            v.visit(_n_doc.as(not null))
         end
+        v.visit(_n_kwpackage)
+        v.visit(_n_id)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
         if _n_doc != null then
-            v.visit(_n_doc)
-        end
-        if _n_kwpackage != null then
-            v.visit(_n_kwpackage)
-        end
-        if _n_id != null then
-            v.visit(_n_id)
+            v.visit(_n_doc.as(not null))
         end
+        v.visit(_n_kwpackage)
+        v.visit(_n_id)
     end
 end
 redef class AImport
-    redef meth n_visibility=(n: PVisibility)
+    redef meth n_visibility=(n)
     do
         _n_visibility = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_kwimport=(n: TKwimport)
+    redef meth n_kwimport=(n)
     do
         _n_kwimport = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_id=(n: TId)
+    redef meth n_id=(n)
     do
         _n_id = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_aimport (
-            n_visibility: PVisibility ,
-            n_kwimport: TKwimport ,
-            n_id: TId 
+            n_visibility: nullable PVisibility ,
+            n_kwimport: nullable TKwimport ,
+            n_id: nullable TId 
     )
     do
         empty_init
-        _n_visibility = n_visibility
-       if n_visibility != null then
-               n_visibility.parent = self
-       end
-        _n_kwimport = n_kwimport
-       if n_kwimport != null then
-               n_kwimport.parent = self
-       end
-        _n_id = n_id
-       if n_id != null then
-               n_id.parent = self
-       end
+        _n_visibility = n_visibility.as(not null)
+       n_visibility.parent = self
+        _n_kwimport = n_kwimport.as(not null)
+       n_kwimport.parent = self
+        _n_id = n_id.as(not null)
+       n_id.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_visibility == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa PVisibility
                 _n_visibility = new_child
            else
-               _n_visibility = null
+               abort
             end
             return
        end
@@ -390,7 +357,7 @@ redef class AImport
                assert new_child isa TKwimport
                 _n_kwimport = new_child
            else
-               _n_kwimport = null
+               abort
             end
             return
        end
@@ -400,7 +367,7 @@ redef class AImport
                assert new_child isa TId
                 _n_id = new_child
            else
-               _n_id = null
+               abort
             end
             return
        end
@@ -408,86 +375,61 @@ redef class AImport
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_visibility != null then
-            v.visit(_n_visibility)
-        end
-        if _n_kwimport != null then
-            v.visit(_n_kwimport)
-        end
-        if _n_id != null then
-            v.visit(_n_id)
-        end
+        v.visit(_n_visibility)
+        v.visit(_n_kwimport)
+        v.visit(_n_id)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_visibility != null then
-            v.visit(_n_visibility)
-        end
-        if _n_kwimport != null then
-            v.visit(_n_kwimport)
-        end
-        if _n_id != null then
-            v.visit(_n_id)
-        end
+        v.visit(_n_visibility)
+        v.visit(_n_kwimport)
+        v.visit(_n_id)
     end
 end
 redef class ANoImport
-    redef meth n_visibility=(n: PVisibility)
+    redef meth n_visibility=(n)
     do
         _n_visibility = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_kwimport=(n: TKwimport)
+    redef meth n_kwimport=(n)
     do
         _n_kwimport = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_kwend=(n: TKwend)
+    redef meth n_kwend=(n)
     do
         _n_kwend = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_anoimport (
-            n_visibility: PVisibility ,
-            n_kwimport: TKwimport ,
-            n_kwend: TKwend 
+            n_visibility: nullable PVisibility ,
+            n_kwimport: nullable TKwimport ,
+            n_kwend: nullable TKwend 
     )
     do
         empty_init
-        _n_visibility = n_visibility
-       if n_visibility != null then
-               n_visibility.parent = self
-       end
-        _n_kwimport = n_kwimport
-       if n_kwimport != null then
-               n_kwimport.parent = self
-       end
-        _n_kwend = n_kwend
-       if n_kwend != null then
-               n_kwend.parent = self
-       end
+        _n_visibility = n_visibility.as(not null)
+       n_visibility.parent = self
+        _n_kwimport = n_kwimport.as(not null)
+       n_kwimport.parent = self
+        _n_kwend = n_kwend.as(not null)
+       n_kwend.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_visibility == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa PVisibility
                 _n_visibility = new_child
            else
-               _n_visibility = null
+               abort
             end
             return
        end
@@ -497,7 +439,7 @@ redef class ANoImport
                assert new_child isa TKwimport
                 _n_kwimport = new_child
            else
-               _n_kwimport = null
+               abort
             end
             return
        end
@@ -507,7 +449,7 @@ redef class ANoImport
                assert new_child isa TKwend
                 _n_kwend = new_child
            else
-               _n_kwend = null
+               abort
             end
             return
        end
@@ -515,28 +457,16 @@ redef class ANoImport
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_visibility != null then
-            v.visit(_n_visibility)
-        end
-        if _n_kwimport != null then
-            v.visit(_n_kwimport)
-        end
-        if _n_kwend != null then
-            v.visit(_n_kwend)
-        end
+        v.visit(_n_visibility)
+        v.visit(_n_kwimport)
+        v.visit(_n_kwend)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_visibility != null then
-            v.visit(_n_visibility)
-        end
-        if _n_kwimport != null then
-            v.visit(_n_kwimport)
-        end
-        if _n_kwend != null then
-            v.visit(_n_kwend)
-        end
+        v.visit(_n_visibility)
+        v.visit(_n_kwimport)
+        v.visit(_n_kwend)
     end
 end
 redef class APublicVisibility
@@ -548,9 +478,8 @@ redef class APublicVisibility
         empty_init
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
     end
 
     redef meth visit_all(v: Visitor)
@@ -562,37 +491,32 @@ redef class APublicVisibility
     end
 end
 redef class APrivateVisibility
-    redef meth n_kwprivate=(n: TKwprivate)
+    redef meth n_kwprivate=(n)
     do
         _n_kwprivate = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_aprivatevisibility (
-            n_kwprivate: TKwprivate 
+            n_kwprivate: nullable TKwprivate 
     )
     do
         empty_init
-        _n_kwprivate = n_kwprivate
-       if n_kwprivate != null then
-               n_kwprivate.parent = self
-       end
+        _n_kwprivate = n_kwprivate.as(not null)
+       n_kwprivate.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_kwprivate == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa TKwprivate
                 _n_kwprivate = new_child
            else
-               _n_kwprivate = null
+               abort
             end
             return
        end
@@ -600,50 +524,41 @@ redef class APrivateVisibility
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_kwprivate != null then
-            v.visit(_n_kwprivate)
-        end
+        v.visit(_n_kwprivate)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_kwprivate != null then
-            v.visit(_n_kwprivate)
-        end
+        v.visit(_n_kwprivate)
     end
 end
 redef class AProtectedVisibility
-    redef meth n_kwprotected=(n: TKwprotected)
+    redef meth n_kwprotected=(n)
     do
         _n_kwprotected = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_aprotectedvisibility (
-            n_kwprotected: TKwprotected 
+            n_kwprotected: nullable TKwprotected 
     )
     do
         empty_init
-        _n_kwprotected = n_kwprotected
-       if n_kwprotected != null then
-               n_kwprotected.parent = self
-       end
+        _n_kwprotected = n_kwprotected.as(not null)
+       n_kwprotected.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_kwprotected == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa TKwprotected
                 _n_kwprotected = new_child
            else
-               _n_kwprotected = null
+               abort
             end
             return
        end
@@ -651,50 +566,41 @@ redef class AProtectedVisibility
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_kwprotected != null then
-            v.visit(_n_kwprotected)
-        end
+        v.visit(_n_kwprotected)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_kwprotected != null then
-            v.visit(_n_kwprotected)
-        end
+        v.visit(_n_kwprotected)
     end
 end
 redef class AIntrudeVisibility
-    redef meth n_kwintrude=(n: TKwintrude)
+    redef meth n_kwintrude=(n)
     do
         _n_kwintrude = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_aintrudevisibility (
-            n_kwintrude: TKwintrude 
+            n_kwintrude: nullable TKwintrude 
     )
     do
         empty_init
-        _n_kwintrude = n_kwintrude
-       if n_kwintrude != null then
-               n_kwintrude.parent = self
-       end
+        _n_kwintrude = n_kwintrude.as(not null)
+       n_kwintrude.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_kwintrude == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa TKwintrude
                 _n_kwintrude = new_child
            else
-               _n_kwintrude = null
+               abort
             end
             return
        end
@@ -702,48 +608,40 @@ redef class AIntrudeVisibility
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_kwintrude != null then
-            v.visit(_n_kwintrude)
-        end
+        v.visit(_n_kwintrude)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_kwintrude != null then
-            v.visit(_n_kwintrude)
-        end
+        v.visit(_n_kwintrude)
     end
 end
 redef class AClassdef
-    redef meth n_doc=(n: PDoc)
+    redef meth n_doc=(n)
     do
         _n_doc = n
         if n != null then
            n.parent = self
         end
     end
-    redef meth n_kwredef=(n: TKwredef)
+    redef meth n_kwredef=(n)
     do
         _n_kwredef = n
         if n != null then
            n.parent = self
         end
     end
-    redef meth n_visibility=(n: PVisibility)
+    redef meth n_visibility=(n)
     do
         _n_visibility = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_classkind=(n: PClasskind)
+    redef meth n_classkind=(n)
     do
         _n_classkind = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_id=(n: TClassid)
+    redef meth n_id=(n)
     do
         _n_id = n
         if n != null then
@@ -754,11 +652,11 @@ redef class AClassdef
     private init empty_init do end
 
     init init_aclassdef (
-            n_doc: PDoc ,
-            n_kwredef: TKwredef ,
-            n_visibility: PVisibility ,
-            n_classkind: PClasskind ,
-            n_id: TClassid ,
+            n_doc: nullable PDoc ,
+            n_kwredef: nullable TKwredef ,
+            n_visibility: nullable PVisibility ,
+            n_classkind: nullable PClasskind ,
+            n_id: nullable TClassid ,
             n_formaldefs: Collection[Object] , # Should be Collection[PFormaldef]
             n_superclasses: Collection[Object] , # Should be Collection[PSuperclass]
             n_propdefs: Collection[Object]  # Should be Collection[PPropdef]
@@ -773,31 +671,24 @@ redef class AClassdef
        if n_kwredef != null then
                n_kwredef.parent = self
        end
-        _n_visibility = n_visibility
-       if n_visibility != null then
-               n_visibility.parent = self
-       end
-        _n_classkind = n_classkind
-       if n_classkind != null then
-               n_classkind.parent = self
-       end
+        _n_visibility = n_visibility.as(not null)
+       n_visibility.parent = self
+        _n_classkind = n_classkind.as(not null)
+       n_classkind.parent = self
         _n_id = n_id
        if n_id != null then
                n_id.parent = self
        end
-        _n_formaldefs = new List[PFormaldef]
        for n in n_formaldefs do
                assert n isa PFormaldef
                _n_formaldefs.add(n)
                n.parent = self
        end
-        _n_superclasses = new List[PSuperclass]
        for n in n_superclasses do
                assert n isa PSuperclass
                _n_superclasses.add(n)
                n.parent = self
        end
-        _n_propdefs = new List[PPropdef]
        for n in n_propdefs do
                assert n isa PPropdef
                _n_propdefs.add(n)
@@ -805,9 +696,8 @@ redef class AClassdef
        end
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_doc == old_child then
             if new_child != null then
                 new_child.parent = self
@@ -834,7 +724,7 @@ redef class AClassdef
                assert new_child isa PVisibility
                 _n_visibility = new_child
            else
-               _n_visibility = null
+               abort
             end
             return
        end
@@ -844,7 +734,7 @@ redef class AClassdef
                assert new_child isa PClasskind
                 _n_classkind = new_child
            else
-               _n_classkind = null
+               abort
             end
             return
        end
@@ -899,19 +789,15 @@ redef class AClassdef
     redef meth visit_all(v: Visitor)
     do
         if _n_doc != null then
-            v.visit(_n_doc)
+            v.visit(_n_doc.as(not null))
         end
         if _n_kwredef != null then
-            v.visit(_n_kwredef)
-        end
-        if _n_visibility != null then
-            v.visit(_n_visibility)
-        end
-        if _n_classkind != null then
-            v.visit(_n_classkind)
+            v.visit(_n_kwredef.as(not null))
         end
+        v.visit(_n_visibility)
+        v.visit(_n_classkind)
         if _n_id != null then
-            v.visit(_n_id)
+            v.visit(_n_id.as(not null))
         end
             for n in _n_formaldefs do
                 v.visit(n)
@@ -927,19 +813,15 @@ redef class AClassdef
     redef meth visit_all_reverse(v: Visitor)
     do
         if _n_doc != null then
-            v.visit(_n_doc)
+            v.visit(_n_doc.as(not null))
         end
         if _n_kwredef != null then
-            v.visit(_n_kwredef)
-        end
-        if _n_visibility != null then
-            v.visit(_n_visibility)
-        end
-        if _n_classkind != null then
-            v.visit(_n_classkind)
+            v.visit(_n_kwredef.as(not null))
         end
+        v.visit(_n_visibility)
+        v.visit(_n_classkind)
         if _n_id != null then
-            v.visit(_n_id)
+            v.visit(_n_id.as(not null))
         end
        do
            var i = _n_formaldefs.length
@@ -973,7 +855,6 @@ redef class ATopClassdef
     )
     do
         empty_init
-        _n_propdefs = new List[PPropdef]
        for n in n_propdefs do
                assert n isa PPropdef
                _n_propdefs.add(n)
@@ -981,9 +862,8 @@ redef class ATopClassdef
        end
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         for i in [0.._n_propdefs.length[ do
             if _n_propdefs[i] == old_child then
                 if new_child != null then
@@ -1025,7 +905,6 @@ redef class AMainClassdef
     )
     do
         empty_init
-        _n_propdefs = new List[PPropdef]
        for n in n_propdefs do
                assert n isa PPropdef
                _n_propdefs.add(n)
@@ -1033,9 +912,8 @@ redef class AMainClassdef
        end
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         for i in [0.._n_propdefs.length[ do
             if _n_propdefs[i] == old_child then
                 if new_child != null then
@@ -1069,37 +947,32 @@ redef class AMainClassdef
     end
 end
 redef class AConcreteClasskind
-    redef meth n_kwclass=(n: TKwclass)
+    redef meth n_kwclass=(n)
     do
         _n_kwclass = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_aconcreteclasskind (
-            n_kwclass: TKwclass 
+            n_kwclass: nullable TKwclass 
     )
     do
         empty_init
-        _n_kwclass = n_kwclass
-       if n_kwclass != null then
-               n_kwclass.parent = self
-       end
+        _n_kwclass = n_kwclass.as(not null)
+       n_kwclass.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_kwclass == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa TKwclass
                 _n_kwclass = new_child
            else
-               _n_kwclass = null
+               abort
             end
             return
        end
@@ -1107,62 +980,49 @@ redef class AConcreteClasskind
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_kwclass != null then
-            v.visit(_n_kwclass)
-        end
+        v.visit(_n_kwclass)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_kwclass != null then
-            v.visit(_n_kwclass)
-        end
+        v.visit(_n_kwclass)
     end
 end
 redef class AAbstractClasskind
-    redef meth n_kwabstract=(n: TKwabstract)
+    redef meth n_kwabstract=(n)
     do
         _n_kwabstract = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_kwclass=(n: TKwclass)
+    redef meth n_kwclass=(n)
     do
         _n_kwclass = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_aabstractclasskind (
-            n_kwabstract: TKwabstract ,
-            n_kwclass: TKwclass 
+            n_kwabstract: nullable TKwabstract ,
+            n_kwclass: nullable TKwclass 
     )
     do
         empty_init
-        _n_kwabstract = n_kwabstract
-       if n_kwabstract != null then
-               n_kwabstract.parent = self
-       end
-        _n_kwclass = n_kwclass
-       if n_kwclass != null then
-               n_kwclass.parent = self
-       end
+        _n_kwabstract = n_kwabstract.as(not null)
+       n_kwabstract.parent = self
+        _n_kwclass = n_kwclass.as(not null)
+       n_kwclass.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_kwabstract == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa TKwabstract
                 _n_kwabstract = new_child
            else
-               _n_kwabstract = null
+               abort
             end
             return
        end
@@ -1172,7 +1032,7 @@ redef class AAbstractClasskind
                assert new_child isa TKwclass
                 _n_kwclass = new_child
            else
-               _n_kwclass = null
+               abort
             end
             return
        end
@@ -1180,56 +1040,43 @@ redef class AAbstractClasskind
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_kwabstract != null then
-            v.visit(_n_kwabstract)
-        end
-        if _n_kwclass != null then
-            v.visit(_n_kwclass)
-        end
+        v.visit(_n_kwabstract)
+        v.visit(_n_kwclass)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_kwabstract != null then
-            v.visit(_n_kwabstract)
-        end
-        if _n_kwclass != null then
-            v.visit(_n_kwclass)
-        end
+        v.visit(_n_kwabstract)
+        v.visit(_n_kwclass)
     end
 end
 redef class AInterfaceClasskind
-    redef meth n_kwinterface=(n: TKwinterface)
+    redef meth n_kwinterface=(n)
     do
         _n_kwinterface = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_ainterfaceclasskind (
-            n_kwinterface: TKwinterface 
+            n_kwinterface: nullable TKwinterface 
     )
     do
         empty_init
-        _n_kwinterface = n_kwinterface
-       if n_kwinterface != null then
-               n_kwinterface.parent = self
-       end
+        _n_kwinterface = n_kwinterface.as(not null)
+       n_kwinterface.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_kwinterface == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa TKwinterface
                 _n_kwinterface = new_child
            else
-               _n_kwinterface = null
+               abort
             end
             return
        end
@@ -1237,50 +1084,41 @@ redef class AInterfaceClasskind
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_kwinterface != null then
-            v.visit(_n_kwinterface)
-        end
+        v.visit(_n_kwinterface)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_kwinterface != null then
-            v.visit(_n_kwinterface)
-        end
+        v.visit(_n_kwinterface)
     end
 end
 redef class AUniversalClasskind
-    redef meth n_kwuniversal=(n: TKwuniversal)
+    redef meth n_kwuniversal=(n)
     do
         _n_kwuniversal = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_auniversalclasskind (
-            n_kwuniversal: TKwuniversal 
+            n_kwuniversal: nullable TKwuniversal 
     )
     do
         empty_init
-        _n_kwuniversal = n_kwuniversal
-       if n_kwuniversal != null then
-               n_kwuniversal.parent = self
-       end
+        _n_kwuniversal = n_kwuniversal.as(not null)
+       n_kwuniversal.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_kwuniversal == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa TKwuniversal
                 _n_kwuniversal = new_child
            else
-               _n_kwuniversal = null
+               abort
             end
             return
        end
@@ -1288,27 +1126,21 @@ redef class AUniversalClasskind
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_kwuniversal != null then
-            v.visit(_n_kwuniversal)
-        end
+        v.visit(_n_kwuniversal)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_kwuniversal != null then
-            v.visit(_n_kwuniversal)
-        end
+        v.visit(_n_kwuniversal)
     end
 end
 redef class AFormaldef
-    redef meth n_id=(n: TClassid)
+    redef meth n_id=(n)
     do
         _n_id = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_type=(n: PType)
+    redef meth n_type=(n)
     do
         _n_type = n
         if n != null then
@@ -1319,31 +1151,28 @@ redef class AFormaldef
     private init empty_init do end
 
     init init_aformaldef (
-            n_id: TClassid ,
-            n_type: PType 
+            n_id: nullable TClassid ,
+            n_type: nullable PType 
     )
     do
         empty_init
-        _n_id = n_id
-       if n_id != null then
-               n_id.parent = self
-       end
+        _n_id = n_id.as(not null)
+       n_id.parent = self
         _n_type = n_type
        if n_type != null then
                n_type.parent = self
        end
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_id == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa TClassid
                 _n_id = new_child
            else
-               _n_id = null
+               abort
             end
             return
        end
@@ -1361,68 +1190,55 @@ redef class AFormaldef
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_id != null then
-            v.visit(_n_id)
-        end
+        v.visit(_n_id)
         if _n_type != null then
-            v.visit(_n_type)
+            v.visit(_n_type.as(not null))
         end
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_id != null then
-            v.visit(_n_id)
-        end
+        v.visit(_n_id)
         if _n_type != null then
-            v.visit(_n_type)
+            v.visit(_n_type.as(not null))
         end
     end
 end
 redef class ASuperclass
-    redef meth n_kwspecial=(n: TKwspecial)
+    redef meth n_kwspecial=(n)
     do
         _n_kwspecial = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_type=(n: PType)
+    redef meth n_type=(n)
     do
         _n_type = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_asuperclass (
-            n_kwspecial: TKwspecial ,
-            n_type: PType 
+            n_kwspecial: nullable TKwspecial ,
+            n_type: nullable PType 
     )
     do
         empty_init
-        _n_kwspecial = n_kwspecial
-       if n_kwspecial != null then
-               n_kwspecial.parent = self
-       end
-        _n_type = n_type
-       if n_type != null then
-               n_type.parent = self
-       end
+        _n_kwspecial = n_kwspecial.as(not null)
+       n_kwspecial.parent = self
+        _n_type = n_type.as(not null)
+       n_type.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_kwspecial == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa TKwspecial
                 _n_kwspecial = new_child
            else
-               _n_kwspecial = null
+               abort
             end
             return
        end
@@ -1432,7 +1248,7 @@ redef class ASuperclass
                assert new_child isa PType
                 _n_type = new_child
            else
-               _n_type = null
+               abort
             end
             return
        end
@@ -1440,89 +1256,77 @@ redef class ASuperclass
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_kwspecial != null then
-            v.visit(_n_kwspecial)
-        end
-        if _n_type != null then
-            v.visit(_n_type)
-        end
+        v.visit(_n_kwspecial)
+        v.visit(_n_type)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_kwspecial != null then
-            v.visit(_n_kwspecial)
-        end
-        if _n_type != null then
-            v.visit(_n_type)
-        end
+        v.visit(_n_kwspecial)
+        v.visit(_n_type)
     end
 end
 redef class AAttrPropdef
-    redef meth n_doc=(n: PDoc)
+    redef meth n_doc=(n)
     do
         _n_doc = n
         if n != null then
            n.parent = self
         end
     end
-    redef meth n_readable=(n: PAble)
+    redef meth n_readable=(n)
     do
         _n_readable = n
         if n != null then
            n.parent = self
         end
     end
-    redef meth n_writable=(n: PAble)
+    redef meth n_writable=(n)
     do
         _n_writable = n
         if n != null then
            n.parent = self
         end
     end
-    redef meth n_kwredef=(n: TKwredef)
+    redef meth n_kwredef=(n)
     do
         _n_kwredef = n
         if n != null then
            n.parent = self
         end
     end
-    redef meth n_visibility=(n: PVisibility)
+    redef meth n_visibility=(n)
     do
         _n_visibility = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_kwattr=(n: TKwattr)
+    redef meth n_kwattr=(n)
     do
         _n_kwattr = n
         if n != null then
            n.parent = self
         end
     end
-    redef meth n_kwvar=(n: TKwvar)
+    redef meth n_kwvar=(n)
     do
         _n_kwvar = n
         if n != null then
            n.parent = self
         end
     end
-    redef meth n_id=(n: TAttrid)
+    redef meth n_id=(n)
     do
         _n_id = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_type=(n: PType)
+    redef meth n_type=(n)
     do
         _n_type = n
         if n != null then
            n.parent = self
         end
     end
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
         if n != null then
@@ -1533,16 +1337,16 @@ redef class AAttrPropdef
     private init empty_init do end
 
     init init_aattrpropdef (
-            n_doc: PDoc ,
-            n_readable: PAble ,
-            n_writable: PAble ,
-            n_kwredef: TKwredef ,
-            n_visibility: PVisibility ,
-            n_kwattr: TKwattr ,
-            n_kwvar: TKwvar ,
-            n_id: TAttrid ,
-            n_type: PType ,
-            n_expr: PExpr 
+            n_doc: nullable PDoc ,
+            n_readable: nullable PAble ,
+            n_writable: nullable PAble ,
+            n_kwredef: nullable TKwredef ,
+            n_visibility: nullable PVisibility ,
+            n_kwattr: nullable TKwattr ,
+            n_kwvar: nullable TKwvar ,
+            n_id: nullable TAttrid ,
+            n_type: nullable PType ,
+            n_expr: nullable PExpr 
     )
     do
         empty_init
@@ -1562,10 +1366,8 @@ redef class AAttrPropdef
        if n_kwredef != null then
                n_kwredef.parent = self
        end
-        _n_visibility = n_visibility
-       if n_visibility != null then
-               n_visibility.parent = self
-       end
+        _n_visibility = n_visibility.as(not null)
+       n_visibility.parent = self
         _n_kwattr = n_kwattr
        if n_kwattr != null then
                n_kwattr.parent = self
@@ -1574,10 +1376,8 @@ redef class AAttrPropdef
        if n_kwvar != null then
                n_kwvar.parent = self
        end
-        _n_id = n_id
-       if n_id != null then
-               n_id.parent = self
-       end
+        _n_id = n_id.as(not null)
+       n_id.parent = self
         _n_type = n_type
        if n_type != null then
                n_type.parent = self
@@ -1588,9 +1388,8 @@ redef class AAttrPropdef
        end
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_doc == old_child then
             if new_child != null then
                 new_child.parent = self
@@ -1637,7 +1436,7 @@ redef class AAttrPropdef
                assert new_child isa PVisibility
                 _n_visibility = new_child
            else
-               _n_visibility = null
+               abort
             end
             return
        end
@@ -1667,7 +1466,7 @@ redef class AAttrPropdef
                assert new_child isa TAttrid
                 _n_id = new_child
            else
-               _n_id = null
+               abort
             end
             return
        end
@@ -1696,116 +1495,102 @@ redef class AAttrPropdef
     redef meth visit_all(v: Visitor)
     do
         if _n_doc != null then
-            v.visit(_n_doc)
+            v.visit(_n_doc.as(not null))
         end
         if _n_readable != null then
-            v.visit(_n_readable)
+            v.visit(_n_readable.as(not null))
         end
         if _n_writable != null then
-            v.visit(_n_writable)
+            v.visit(_n_writable.as(not null))
         end
         if _n_kwredef != null then
-            v.visit(_n_kwredef)
-        end
-        if _n_visibility != null then
-            v.visit(_n_visibility)
+            v.visit(_n_kwredef.as(not null))
         end
+        v.visit(_n_visibility)
         if _n_kwattr != null then
-            v.visit(_n_kwattr)
+            v.visit(_n_kwattr.as(not null))
         end
         if _n_kwvar != null then
-            v.visit(_n_kwvar)
-        end
-        if _n_id != null then
-            v.visit(_n_id)
+            v.visit(_n_kwvar.as(not null))
         end
+        v.visit(_n_id)
         if _n_type != null then
-            v.visit(_n_type)
+            v.visit(_n_type.as(not null))
         end
         if _n_expr != null then
-            v.visit(_n_expr)
+            v.visit(_n_expr.as(not null))
         end
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
         if _n_doc != null then
-            v.visit(_n_doc)
+            v.visit(_n_doc.as(not null))
         end
         if _n_readable != null then
-            v.visit(_n_readable)
+            v.visit(_n_readable.as(not null))
         end
         if _n_writable != null then
-            v.visit(_n_writable)
+            v.visit(_n_writable.as(not null))
         end
         if _n_kwredef != null then
-            v.visit(_n_kwredef)
-        end
-        if _n_visibility != null then
-            v.visit(_n_visibility)
+            v.visit(_n_kwredef.as(not null))
         end
+        v.visit(_n_visibility)
         if _n_kwattr != null then
-            v.visit(_n_kwattr)
+            v.visit(_n_kwattr.as(not null))
         end
         if _n_kwvar != null then
-            v.visit(_n_kwvar)
-        end
-        if _n_id != null then
-            v.visit(_n_id)
+            v.visit(_n_kwvar.as(not null))
         end
+        v.visit(_n_id)
         if _n_type != null then
-            v.visit(_n_type)
+            v.visit(_n_type.as(not null))
         end
         if _n_expr != null then
-            v.visit(_n_expr)
+            v.visit(_n_expr.as(not null))
         end
     end
 end
 redef class AMethPropdef
-    redef meth n_doc=(n: PDoc)
+    redef meth n_doc=(n)
     do
         _n_doc = n
         if n != null then
            n.parent = self
         end
     end
-    redef meth n_kwredef=(n: TKwredef)
+    redef meth n_kwredef=(n)
     do
         _n_kwredef = n
         if n != null then
            n.parent = self
         end
     end
-    redef meth n_visibility=(n: PVisibility)
+    redef meth n_visibility=(n)
     do
         _n_visibility = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_methid=(n: PMethid)
+    redef meth n_methid=(n)
     do
         _n_methid = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_signature=(n: PSignature)
+    redef meth n_signature=(n)
     do
         _n_signature = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_amethpropdef (
-            n_doc: PDoc ,
-            n_kwredef: TKwredef ,
-            n_visibility: PVisibility ,
-            n_methid: PMethid ,
-            n_signature: PSignature 
+            n_doc: nullable PDoc ,
+            n_kwredef: nullable TKwredef ,
+            n_visibility: nullable PVisibility ,
+            n_methid: nullable PMethid ,
+            n_signature: nullable PSignature 
     )
     do
         empty_init
@@ -1817,23 +1602,16 @@ redef class AMethPropdef
        if n_kwredef != null then
                n_kwredef.parent = self
        end
-        _n_visibility = n_visibility
-       if n_visibility != null then
-               n_visibility.parent = self
-       end
-        _n_methid = n_methid
-       if n_methid != null then
-               n_methid.parent = self
-       end
-        _n_signature = n_signature
-       if n_signature != null then
-               n_signature.parent = self
-       end
+        _n_visibility = n_visibility.as(not null)
+       n_visibility.parent = self
+        _n_methid = n_methid.as(not null)
+       n_methid.parent = self
+        _n_signature = n_signature.as(not null)
+       n_signature.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_doc == old_child then
             if new_child != null then
                 new_child.parent = self
@@ -1860,7 +1638,7 @@ redef class AMethPropdef
                assert new_child isa PVisibility
                 _n_visibility = new_child
            else
-               _n_visibility = null
+               abort
             end
             return
        end
@@ -1870,7 +1648,7 @@ redef class AMethPropdef
                assert new_child isa PMethid
                 _n_methid = new_child
            else
-               _n_methid = null
+               abort
             end
             return
        end
@@ -1880,7 +1658,7 @@ redef class AMethPropdef
                assert new_child isa PSignature
                 _n_signature = new_child
            else
-               _n_signature = null
+               abort
             end
             return
        end
@@ -1889,94 +1667,74 @@ redef class AMethPropdef
     redef meth visit_all(v: Visitor)
     do
         if _n_doc != null then
-            v.visit(_n_doc)
+            v.visit(_n_doc.as(not null))
         end
         if _n_kwredef != null then
-            v.visit(_n_kwredef)
-        end
-        if _n_visibility != null then
-            v.visit(_n_visibility)
-        end
-        if _n_methid != null then
-            v.visit(_n_methid)
-        end
-        if _n_signature != null then
-            v.visit(_n_signature)
+            v.visit(_n_kwredef.as(not null))
         end
+        v.visit(_n_visibility)
+        v.visit(_n_methid)
+        v.visit(_n_signature)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
         if _n_doc != null then
-            v.visit(_n_doc)
+            v.visit(_n_doc.as(not null))
         end
         if _n_kwredef != null then
-            v.visit(_n_kwredef)
-        end
-        if _n_visibility != null then
-            v.visit(_n_visibility)
-        end
-        if _n_methid != null then
-            v.visit(_n_methid)
-        end
-        if _n_signature != null then
-            v.visit(_n_signature)
+            v.visit(_n_kwredef.as(not null))
         end
+        v.visit(_n_visibility)
+        v.visit(_n_methid)
+        v.visit(_n_signature)
     end
 end
 redef class ADeferredMethPropdef
-    redef meth n_doc=(n: PDoc)
+    redef meth n_doc=(n)
     do
         _n_doc = n
         if n != null then
            n.parent = self
         end
     end
-    redef meth n_kwredef=(n: TKwredef)
+    redef meth n_kwredef=(n)
     do
         _n_kwredef = n
         if n != null then
            n.parent = self
         end
     end
-    redef meth n_visibility=(n: PVisibility)
+    redef meth n_visibility=(n)
     do
         _n_visibility = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_kwmeth=(n: TKwmeth)
+    redef meth n_kwmeth=(n)
     do
         _n_kwmeth = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_methid=(n: PMethid)
+    redef meth n_methid=(n)
     do
         _n_methid = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_signature=(n: PSignature)
+    redef meth n_signature=(n)
     do
         _n_signature = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_adeferredmethpropdef (
-            n_doc: PDoc ,
-            n_kwredef: TKwredef ,
-            n_visibility: PVisibility ,
-            n_kwmeth: TKwmeth ,
-            n_methid: PMethid ,
-            n_signature: PSignature 
+            n_doc: nullable PDoc ,
+            n_kwredef: nullable TKwredef ,
+            n_visibility: nullable PVisibility ,
+            n_kwmeth: nullable TKwmeth ,
+            n_methid: nullable PMethid ,
+            n_signature: nullable PSignature 
     )
     do
         empty_init
@@ -1988,27 +1746,18 @@ redef class ADeferredMethPropdef
        if n_kwredef != null then
                n_kwredef.parent = self
        end
-        _n_visibility = n_visibility
-       if n_visibility != null then
-               n_visibility.parent = self
-       end
-        _n_kwmeth = n_kwmeth
-       if n_kwmeth != null then
-               n_kwmeth.parent = self
-       end
-        _n_methid = n_methid
-       if n_methid != null then
-               n_methid.parent = self
-       end
-        _n_signature = n_signature
-       if n_signature != null then
-               n_signature.parent = self
-       end
+        _n_visibility = n_visibility.as(not null)
+       n_visibility.parent = self
+        _n_kwmeth = n_kwmeth.as(not null)
+       n_kwmeth.parent = self
+        _n_methid = n_methid.as(not null)
+       n_methid.parent = self
+        _n_signature = n_signature.as(not null)
+       n_signature.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_doc == old_child then
             if new_child != null then
                 new_child.parent = self
@@ -2035,7 +1784,7 @@ redef class ADeferredMethPropdef
                assert new_child isa PVisibility
                 _n_visibility = new_child
            else
-               _n_visibility = null
+               abort
             end
             return
        end
@@ -2045,7 +1794,7 @@ redef class ADeferredMethPropdef
                assert new_child isa TKwmeth
                 _n_kwmeth = new_child
            else
-               _n_kwmeth = null
+               abort
             end
             return
        end
@@ -2055,7 +1804,7 @@ redef class ADeferredMethPropdef
                assert new_child isa PMethid
                 _n_methid = new_child
            else
-               _n_methid = null
+               abort
             end
             return
        end
@@ -2065,7 +1814,7 @@ redef class ADeferredMethPropdef
                assert new_child isa PSignature
                 _n_signature = new_child
            else
-               _n_signature = null
+               abort
             end
             return
        end
@@ -2074,100 +1823,76 @@ redef class ADeferredMethPropdef
     redef meth visit_all(v: Visitor)
     do
         if _n_doc != null then
-            v.visit(_n_doc)
+            v.visit(_n_doc.as(not null))
         end
         if _n_kwredef != null then
-            v.visit(_n_kwredef)
-        end
-        if _n_visibility != null then
-            v.visit(_n_visibility)
-        end
-        if _n_kwmeth != null then
-            v.visit(_n_kwmeth)
-        end
-        if _n_methid != null then
-            v.visit(_n_methid)
-        end
-        if _n_signature != null then
-            v.visit(_n_signature)
+            v.visit(_n_kwredef.as(not null))
         end
+        v.visit(_n_visibility)
+        v.visit(_n_kwmeth)
+        v.visit(_n_methid)
+        v.visit(_n_signature)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
         if _n_doc != null then
-            v.visit(_n_doc)
+            v.visit(_n_doc.as(not null))
         end
         if _n_kwredef != null then
-            v.visit(_n_kwredef)
-        end
-        if _n_visibility != null then
-            v.visit(_n_visibility)
-        end
-        if _n_kwmeth != null then
-            v.visit(_n_kwmeth)
-        end
-        if _n_methid != null then
-            v.visit(_n_methid)
-        end
-        if _n_signature != null then
-            v.visit(_n_signature)
+            v.visit(_n_kwredef.as(not null))
         end
+        v.visit(_n_visibility)
+        v.visit(_n_kwmeth)
+        v.visit(_n_methid)
+        v.visit(_n_signature)
     end
 end
 redef class AInternMethPropdef
-    redef meth n_doc=(n: PDoc)
+    redef meth n_doc=(n)
     do
         _n_doc = n
         if n != null then
            n.parent = self
         end
     end
-    redef meth n_kwredef=(n: TKwredef)
+    redef meth n_kwredef=(n)
     do
         _n_kwredef = n
         if n != null then
            n.parent = self
         end
     end
-    redef meth n_visibility=(n: PVisibility)
+    redef meth n_visibility=(n)
     do
         _n_visibility = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_kwmeth=(n: TKwmeth)
+    redef meth n_kwmeth=(n)
     do
         _n_kwmeth = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_methid=(n: PMethid)
+    redef meth n_methid=(n)
     do
         _n_methid = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_signature=(n: PSignature)
+    redef meth n_signature=(n)
     do
         _n_signature = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_ainternmethpropdef (
-            n_doc: PDoc ,
-            n_kwredef: TKwredef ,
-            n_visibility: PVisibility ,
-            n_kwmeth: TKwmeth ,
-            n_methid: PMethid ,
-            n_signature: PSignature 
+            n_doc: nullable PDoc ,
+            n_kwredef: nullable TKwredef ,
+            n_visibility: nullable PVisibility ,
+            n_kwmeth: nullable TKwmeth ,
+            n_methid: nullable PMethid ,
+            n_signature: nullable PSignature 
     )
     do
         empty_init
@@ -2179,27 +1904,18 @@ redef class AInternMethPropdef
        if n_kwredef != null then
                n_kwredef.parent = self
        end
-        _n_visibility = n_visibility
-       if n_visibility != null then
-               n_visibility.parent = self
-       end
-        _n_kwmeth = n_kwmeth
-       if n_kwmeth != null then
-               n_kwmeth.parent = self
-       end
-        _n_methid = n_methid
-       if n_methid != null then
-               n_methid.parent = self
-       end
-        _n_signature = n_signature
-       if n_signature != null then
-               n_signature.parent = self
-       end
+        _n_visibility = n_visibility.as(not null)
+       n_visibility.parent = self
+        _n_kwmeth = n_kwmeth.as(not null)
+       n_kwmeth.parent = self
+        _n_methid = n_methid.as(not null)
+       n_methid.parent = self
+        _n_signature = n_signature.as(not null)
+       n_signature.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_doc == old_child then
             if new_child != null then
                 new_child.parent = self
@@ -2226,7 +1942,7 @@ redef class AInternMethPropdef
                assert new_child isa PVisibility
                 _n_visibility = new_child
            else
-               _n_visibility = null
+               abort
             end
             return
        end
@@ -2236,7 +1952,7 @@ redef class AInternMethPropdef
                assert new_child isa TKwmeth
                 _n_kwmeth = new_child
            else
-               _n_kwmeth = null
+               abort
             end
             return
        end
@@ -2246,7 +1962,7 @@ redef class AInternMethPropdef
                assert new_child isa PMethid
                 _n_methid = new_child
            else
-               _n_methid = null
+               abort
             end
             return
        end
@@ -2256,7 +1972,7 @@ redef class AInternMethPropdef
                assert new_child isa PSignature
                 _n_signature = new_child
            else
-               _n_signature = null
+               abort
             end
             return
        end
@@ -2265,91 +1981,67 @@ redef class AInternMethPropdef
     redef meth visit_all(v: Visitor)
     do
         if _n_doc != null then
-            v.visit(_n_doc)
+            v.visit(_n_doc.as(not null))
         end
         if _n_kwredef != null then
-            v.visit(_n_kwredef)
-        end
-        if _n_visibility != null then
-            v.visit(_n_visibility)
-        end
-        if _n_kwmeth != null then
-            v.visit(_n_kwmeth)
-        end
-        if _n_methid != null then
-            v.visit(_n_methid)
-        end
-        if _n_signature != null then
-            v.visit(_n_signature)
+            v.visit(_n_kwredef.as(not null))
         end
+        v.visit(_n_visibility)
+        v.visit(_n_kwmeth)
+        v.visit(_n_methid)
+        v.visit(_n_signature)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
         if _n_doc != null then
-            v.visit(_n_doc)
+            v.visit(_n_doc.as(not null))
         end
         if _n_kwredef != null then
-            v.visit(_n_kwredef)
-        end
-        if _n_visibility != null then
-            v.visit(_n_visibility)
-        end
-        if _n_kwmeth != null then
-            v.visit(_n_kwmeth)
-        end
-        if _n_methid != null then
-            v.visit(_n_methid)
-        end
-        if _n_signature != null then
-            v.visit(_n_signature)
+            v.visit(_n_kwredef.as(not null))
         end
+        v.visit(_n_visibility)
+        v.visit(_n_kwmeth)
+        v.visit(_n_methid)
+        v.visit(_n_signature)
     end
 end
 redef class AExternMethPropdef
-    redef meth n_doc=(n: PDoc)
+    redef meth n_doc=(n)
     do
         _n_doc = n
         if n != null then
            n.parent = self
         end
     end
-    redef meth n_kwredef=(n: TKwredef)
+    redef meth n_kwredef=(n)
     do
         _n_kwredef = n
         if n != null then
            n.parent = self
         end
     end
-    redef meth n_visibility=(n: PVisibility)
+    redef meth n_visibility=(n)
     do
         _n_visibility = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_kwmeth=(n: TKwmeth)
+    redef meth n_kwmeth=(n)
     do
         _n_kwmeth = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_methid=(n: PMethid)
+    redef meth n_methid=(n)
     do
         _n_methid = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_signature=(n: PSignature)
+    redef meth n_signature=(n)
     do
         _n_signature = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_extern=(n: TString)
+    redef meth n_extern=(n)
     do
         _n_extern = n
         if n != null then
@@ -2360,13 +2052,13 @@ redef class AExternMethPropdef
     private init empty_init do end
 
     init init_aexternmethpropdef (
-            n_doc: PDoc ,
-            n_kwredef: TKwredef ,
-            n_visibility: PVisibility ,
-            n_kwmeth: TKwmeth ,
-            n_methid: PMethid ,
-            n_signature: PSignature ,
-            n_extern: TString 
+            n_doc: nullable PDoc ,
+            n_kwredef: nullable TKwredef ,
+            n_visibility: nullable PVisibility ,
+            n_kwmeth: nullable TKwmeth ,
+            n_methid: nullable PMethid ,
+            n_signature: nullable PSignature ,
+            n_extern: nullable TString 
     )
     do
         empty_init
@@ -2378,31 +2070,22 @@ redef class AExternMethPropdef
        if n_kwredef != null then
                n_kwredef.parent = self
        end
-        _n_visibility = n_visibility
-       if n_visibility != null then
-               n_visibility.parent = self
-       end
-        _n_kwmeth = n_kwmeth
-       if n_kwmeth != null then
-               n_kwmeth.parent = self
-       end
-        _n_methid = n_methid
-       if n_methid != null then
-               n_methid.parent = self
-       end
-        _n_signature = n_signature
-       if n_signature != null then
-               n_signature.parent = self
-       end
+        _n_visibility = n_visibility.as(not null)
+       n_visibility.parent = self
+        _n_kwmeth = n_kwmeth.as(not null)
+       n_kwmeth.parent = self
+        _n_methid = n_methid.as(not null)
+       n_methid.parent = self
+        _n_signature = n_signature.as(not null)
+       n_signature.parent = self
         _n_extern = n_extern
        if n_extern != null then
                n_extern.parent = self
        end
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_doc == old_child then
             if new_child != null then
                 new_child.parent = self
@@ -2429,7 +2112,7 @@ redef class AExternMethPropdef
                assert new_child isa PVisibility
                 _n_visibility = new_child
            else
-               _n_visibility = null
+               abort
             end
             return
        end
@@ -2439,7 +2122,7 @@ redef class AExternMethPropdef
                assert new_child isa TKwmeth
                 _n_kwmeth = new_child
            else
-               _n_kwmeth = null
+               abort
             end
             return
        end
@@ -2449,7 +2132,7 @@ redef class AExternMethPropdef
                assert new_child isa PMethid
                 _n_methid = new_child
            else
-               _n_methid = null
+               abort
             end
             return
        end
@@ -2459,7 +2142,7 @@ redef class AExternMethPropdef
                assert new_child isa PSignature
                 _n_signature = new_child
            else
-               _n_signature = null
+               abort
             end
             return
        end
@@ -2478,97 +2161,73 @@ redef class AExternMethPropdef
     redef meth visit_all(v: Visitor)
     do
         if _n_doc != null then
-            v.visit(_n_doc)
+            v.visit(_n_doc.as(not null))
         end
         if _n_kwredef != null then
-            v.visit(_n_kwredef)
-        end
-        if _n_visibility != null then
-            v.visit(_n_visibility)
-        end
-        if _n_kwmeth != null then
-            v.visit(_n_kwmeth)
-        end
-        if _n_methid != null then
-            v.visit(_n_methid)
-        end
-        if _n_signature != null then
-            v.visit(_n_signature)
+            v.visit(_n_kwredef.as(not null))
         end
+        v.visit(_n_visibility)
+        v.visit(_n_kwmeth)
+        v.visit(_n_methid)
+        v.visit(_n_signature)
         if _n_extern != null then
-            v.visit(_n_extern)
+            v.visit(_n_extern.as(not null))
         end
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
         if _n_doc != null then
-            v.visit(_n_doc)
+            v.visit(_n_doc.as(not null))
         end
         if _n_kwredef != null then
-            v.visit(_n_kwredef)
-        end
-        if _n_visibility != null then
-            v.visit(_n_visibility)
-        end
-        if _n_kwmeth != null then
-            v.visit(_n_kwmeth)
-        end
-        if _n_methid != null then
-            v.visit(_n_methid)
-        end
-        if _n_signature != null then
-            v.visit(_n_signature)
+            v.visit(_n_kwredef.as(not null))
         end
+        v.visit(_n_visibility)
+        v.visit(_n_kwmeth)
+        v.visit(_n_methid)
+        v.visit(_n_signature)
         if _n_extern != null then
-            v.visit(_n_extern)
+            v.visit(_n_extern.as(not null))
         end
     end
 end
 redef class AConcreteMethPropdef
-    redef meth n_doc=(n: PDoc)
+    redef meth n_doc=(n)
     do
         _n_doc = n
         if n != null then
            n.parent = self
         end
     end
-    redef meth n_kwredef=(n: TKwredef)
+    redef meth n_kwredef=(n)
     do
         _n_kwredef = n
         if n != null then
            n.parent = self
         end
     end
-    redef meth n_visibility=(n: PVisibility)
+    redef meth n_visibility=(n)
     do
         _n_visibility = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_kwmeth=(n: TKwmeth)
+    redef meth n_kwmeth=(n)
     do
         _n_kwmeth = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_methid=(n: PMethid)
+    redef meth n_methid=(n)
     do
         _n_methid = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_signature=(n: PSignature)
+    redef meth n_signature=(n)
     do
         _n_signature = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_block=(n: PExpr)
+    redef meth n_block=(n)
     do
         _n_block = n
         if n != null then
@@ -2579,13 +2238,13 @@ redef class AConcreteMethPropdef
     private init empty_init do end
 
     init init_aconcretemethpropdef (
-            n_doc: PDoc ,
-            n_kwredef: TKwredef ,
-            n_visibility: PVisibility ,
-            n_kwmeth: TKwmeth ,
-            n_methid: PMethid ,
-            n_signature: PSignature ,
-            n_block: PExpr 
+            n_doc: nullable PDoc ,
+            n_kwredef: nullable TKwredef ,
+            n_visibility: nullable PVisibility ,
+            n_kwmeth: nullable TKwmeth ,
+            n_methid: nullable PMethid ,
+            n_signature: nullable PSignature ,
+            n_block: nullable PExpr 
     )
     do
         empty_init
@@ -2597,31 +2256,22 @@ redef class AConcreteMethPropdef
        if n_kwredef != null then
                n_kwredef.parent = self
        end
-        _n_visibility = n_visibility
-       if n_visibility != null then
-               n_visibility.parent = self
-       end
-        _n_kwmeth = n_kwmeth
-       if n_kwmeth != null then
-               n_kwmeth.parent = self
-       end
-        _n_methid = n_methid
-       if n_methid != null then
-               n_methid.parent = self
-       end
-        _n_signature = n_signature
-       if n_signature != null then
-               n_signature.parent = self
-       end
+        _n_visibility = n_visibility.as(not null)
+       n_visibility.parent = self
+        _n_kwmeth = n_kwmeth.as(not null)
+       n_kwmeth.parent = self
+        _n_methid = n_methid.as(not null)
+       n_methid.parent = self
+        _n_signature = n_signature.as(not null)
+       n_signature.parent = self
         _n_block = n_block
        if n_block != null then
                n_block.parent = self
        end
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_doc == old_child then
             if new_child != null then
                 new_child.parent = self
@@ -2648,7 +2298,7 @@ redef class AConcreteMethPropdef
                assert new_child isa PVisibility
                 _n_visibility = new_child
            else
-               _n_visibility = null
+               abort
             end
             return
        end
@@ -2658,7 +2308,7 @@ redef class AConcreteMethPropdef
                assert new_child isa TKwmeth
                 _n_kwmeth = new_child
            else
-               _n_kwmeth = null
+               abort
             end
             return
        end
@@ -2668,7 +2318,7 @@ redef class AConcreteMethPropdef
                assert new_child isa PMethid
                 _n_methid = new_child
            else
-               _n_methid = null
+               abort
             end
             return
        end
@@ -2678,7 +2328,7 @@ redef class AConcreteMethPropdef
                assert new_child isa PSignature
                 _n_signature = new_child
            else
-               _n_signature = null
+               abort
             end
             return
        end
@@ -2697,97 +2347,75 @@ redef class AConcreteMethPropdef
     redef meth visit_all(v: Visitor)
     do
         if _n_doc != null then
-            v.visit(_n_doc)
+            v.visit(_n_doc.as(not null))
         end
         if _n_kwredef != null then
-            v.visit(_n_kwredef)
-        end
-        if _n_visibility != null then
-            v.visit(_n_visibility)
-        end
-        if _n_kwmeth != null then
-            v.visit(_n_kwmeth)
-        end
-        if _n_methid != null then
-            v.visit(_n_methid)
-        end
-        if _n_signature != null then
-            v.visit(_n_signature)
+            v.visit(_n_kwredef.as(not null))
         end
+        v.visit(_n_visibility)
+        v.visit(_n_kwmeth)
+        v.visit(_n_methid)
+        v.visit(_n_signature)
         if _n_block != null then
-            v.visit(_n_block)
+            v.visit(_n_block.as(not null))
         end
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
         if _n_doc != null then
-            v.visit(_n_doc)
+            v.visit(_n_doc.as(not null))
         end
         if _n_kwredef != null then
-            v.visit(_n_kwredef)
-        end
-        if _n_visibility != null then
-            v.visit(_n_visibility)
-        end
-        if _n_kwmeth != null then
-            v.visit(_n_kwmeth)
-        end
-        if _n_methid != null then
-            v.visit(_n_methid)
-        end
-        if _n_signature != null then
-            v.visit(_n_signature)
+            v.visit(_n_kwredef.as(not null))
         end
+        v.visit(_n_visibility)
+        v.visit(_n_kwmeth)
+        v.visit(_n_methid)
+        v.visit(_n_signature)
         if _n_block != null then
-            v.visit(_n_block)
+            v.visit(_n_block.as(not null))
         end
     end
 end
 redef class AConcreteInitPropdef
-    redef meth n_doc=(n: PDoc)
+    redef meth n_doc=(n)
     do
         _n_doc = n
         if n != null then
            n.parent = self
         end
     end
-    redef meth n_kwredef=(n: TKwredef)
+    redef meth n_kwredef=(n)
     do
         _n_kwredef = n
         if n != null then
            n.parent = self
         end
     end
-    redef meth n_visibility=(n: PVisibility)
+    redef meth n_visibility=(n)
     do
         _n_visibility = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_kwinit=(n: TKwinit)
+    redef meth n_kwinit=(n)
     do
         _n_kwinit = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_methid=(n: PMethid)
+    redef meth n_methid=(n)
     do
         _n_methid = n
         if n != null then
            n.parent = self
         end
     end
-    redef meth n_signature=(n: PSignature)
+    redef meth n_signature=(n)
     do
         _n_signature = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_block=(n: PExpr)
+    redef meth n_block=(n)
     do
         _n_block = n
         if n != null then
@@ -2798,13 +2426,13 @@ redef class AConcreteInitPropdef
     private init empty_init do end
 
     init init_aconcreteinitpropdef (
-            n_doc: PDoc ,
-            n_kwredef: TKwredef ,
-            n_visibility: PVisibility ,
-            n_kwinit: TKwinit ,
-            n_methid: PMethid ,
-            n_signature: PSignature ,
-            n_block: PExpr 
+            n_doc: nullable PDoc ,
+            n_kwredef: nullable TKwredef ,
+            n_visibility: nullable PVisibility ,
+            n_kwinit: nullable TKwinit ,
+            n_methid: nullable PMethid ,
+            n_signature: nullable PSignature ,
+            n_block: nullable PExpr 
     )
     do
         empty_init
@@ -2816,31 +2444,24 @@ redef class AConcreteInitPropdef
        if n_kwredef != null then
                n_kwredef.parent = self
        end
-        _n_visibility = n_visibility
-       if n_visibility != null then
-               n_visibility.parent = self
-       end
-        _n_kwinit = n_kwinit
-       if n_kwinit != null then
-               n_kwinit.parent = self
-       end
+        _n_visibility = n_visibility.as(not null)
+       n_visibility.parent = self
+        _n_kwinit = n_kwinit.as(not null)
+       n_kwinit.parent = self
         _n_methid = n_methid
        if n_methid != null then
                n_methid.parent = self
        end
-        _n_signature = n_signature
-       if n_signature != null then
-               n_signature.parent = self
-       end
+        _n_signature = n_signature.as(not null)
+       n_signature.parent = self
         _n_block = n_block
        if n_block != null then
                n_block.parent = self
        end
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_doc == old_child then
             if new_child != null then
                 new_child.parent = self
@@ -2867,7 +2488,7 @@ redef class AConcreteInitPropdef
                assert new_child isa PVisibility
                 _n_visibility = new_child
            else
-               _n_visibility = null
+               abort
             end
             return
        end
@@ -2877,7 +2498,7 @@ redef class AConcreteInitPropdef
                assert new_child isa TKwinit
                 _n_kwinit = new_child
            else
-               _n_kwinit = null
+               abort
             end
             return
        end
@@ -2897,7 +2518,7 @@ redef class AConcreteInitPropdef
                assert new_child isa PSignature
                 _n_signature = new_child
            else
-               _n_signature = null
+               abort
             end
             return
        end
@@ -2916,62 +2537,50 @@ redef class AConcreteInitPropdef
     redef meth visit_all(v: Visitor)
     do
         if _n_doc != null then
-            v.visit(_n_doc)
+            v.visit(_n_doc.as(not null))
         end
         if _n_kwredef != null then
-            v.visit(_n_kwredef)
-        end
-        if _n_visibility != null then
-            v.visit(_n_visibility)
-        end
-        if _n_kwinit != null then
-            v.visit(_n_kwinit)
+            v.visit(_n_kwredef.as(not null))
         end
+        v.visit(_n_visibility)
+        v.visit(_n_kwinit)
         if _n_methid != null then
-            v.visit(_n_methid)
-        end
-        if _n_signature != null then
-            v.visit(_n_signature)
+            v.visit(_n_methid.as(not null))
         end
+        v.visit(_n_signature)
         if _n_block != null then
-            v.visit(_n_block)
+            v.visit(_n_block.as(not null))
         end
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
         if _n_doc != null then
-            v.visit(_n_doc)
+            v.visit(_n_doc.as(not null))
         end
         if _n_kwredef != null then
-            v.visit(_n_kwredef)
-        end
-        if _n_visibility != null then
-            v.visit(_n_visibility)
-        end
-        if _n_kwinit != null then
-            v.visit(_n_kwinit)
+            v.visit(_n_kwredef.as(not null))
         end
+        v.visit(_n_visibility)
+        v.visit(_n_kwinit)
         if _n_methid != null then
-            v.visit(_n_methid)
-        end
-        if _n_signature != null then
-            v.visit(_n_signature)
+            v.visit(_n_methid.as(not null))
         end
+        v.visit(_n_signature)
         if _n_block != null then
-            v.visit(_n_block)
+            v.visit(_n_block.as(not null))
         end
     end
 end
 redef class AMainMethPropdef
-    redef meth n_kwredef=(n: TKwredef)
+    redef meth n_kwredef=(n)
     do
         _n_kwredef = n
         if n != null then
            n.parent = self
         end
     end
-    redef meth n_block=(n: PExpr)
+    redef meth n_block=(n)
     do
         _n_block = n
         if n != null then
@@ -2982,8 +2591,8 @@ redef class AMainMethPropdef
     private init empty_init do end
 
     init init_amainmethpropdef (
-            n_kwredef: TKwredef ,
-            n_block: PExpr 
+            n_kwredef: nullable TKwredef ,
+            n_block: nullable PExpr 
     )
     do
         empty_init
@@ -2997,9 +2606,8 @@ redef class AMainMethPropdef
        end
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_kwredef == old_child then
             if new_child != null then
                 new_child.parent = self
@@ -3025,76 +2633,68 @@ redef class AMainMethPropdef
     redef meth visit_all(v: Visitor)
     do
         if _n_kwredef != null then
-            v.visit(_n_kwredef)
+            v.visit(_n_kwredef.as(not null))
         end
         if _n_block != null then
-            v.visit(_n_block)
+            v.visit(_n_block.as(not null))
         end
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
         if _n_kwredef != null then
-            v.visit(_n_kwredef)
+            v.visit(_n_kwredef.as(not null))
         end
         if _n_block != null then
-            v.visit(_n_block)
+            v.visit(_n_block.as(not null))
         end
     end
 end
 redef class ATypePropdef
-    redef meth n_doc=(n: PDoc)
+    redef meth n_doc=(n)
     do
         _n_doc = n
         if n != null then
            n.parent = self
         end
     end
-    redef meth n_kwredef=(n: TKwredef)
+    redef meth n_kwredef=(n)
     do
         _n_kwredef = n
         if n != null then
            n.parent = self
         end
     end
-    redef meth n_visibility=(n: PVisibility)
+    redef meth n_visibility=(n)
     do
         _n_visibility = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_kwtype=(n: TKwtype)
+    redef meth n_kwtype=(n)
     do
         _n_kwtype = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_id=(n: TClassid)
+    redef meth n_id=(n)
     do
         _n_id = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_type=(n: PType)
+    redef meth n_type=(n)
     do
         _n_type = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_atypepropdef (
-            n_doc: PDoc ,
-            n_kwredef: TKwredef ,
-            n_visibility: PVisibility ,
-            n_kwtype: TKwtype ,
-            n_id: TClassid ,
-            n_type: PType 
+            n_doc: nullable PDoc ,
+            n_kwredef: nullable TKwredef ,
+            n_visibility: nullable PVisibility ,
+            n_kwtype: nullable TKwtype ,
+            n_id: nullable TClassid ,
+            n_type: nullable PType 
     )
     do
         empty_init
@@ -3106,27 +2706,18 @@ redef class ATypePropdef
        if n_kwredef != null then
                n_kwredef.parent = self
        end
-        _n_visibility = n_visibility
-       if n_visibility != null then
-               n_visibility.parent = self
-       end
-        _n_kwtype = n_kwtype
-       if n_kwtype != null then
-               n_kwtype.parent = self
-       end
-        _n_id = n_id
-       if n_id != null then
-               n_id.parent = self
-       end
-        _n_type = n_type
-       if n_type != null then
-               n_type.parent = self
-       end
+        _n_visibility = n_visibility.as(not null)
+       n_visibility.parent = self
+        _n_kwtype = n_kwtype.as(not null)
+       n_kwtype.parent = self
+        _n_id = n_id.as(not null)
+       n_id.parent = self
+        _n_type = n_type.as(not null)
+       n_type.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_doc == old_child then
             if new_child != null then
                 new_child.parent = self
@@ -3153,7 +2744,7 @@ redef class ATypePropdef
                assert new_child isa PVisibility
                 _n_visibility = new_child
            else
-               _n_visibility = null
+               abort
             end
             return
        end
@@ -3163,7 +2754,7 @@ redef class ATypePropdef
                assert new_child isa TKwtype
                 _n_kwtype = new_child
            else
-               _n_kwtype = null
+               abort
             end
             return
        end
@@ -3173,7 +2764,7 @@ redef class ATypePropdef
                assert new_child isa TClassid
                 _n_id = new_child
            else
-               _n_id = null
+               abort
             end
             return
        end
@@ -3183,7 +2774,7 @@ redef class ATypePropdef
                assert new_child isa PType
                 _n_type = new_child
            else
-               _n_type = null
+               abort
             end
             return
        end
@@ -3192,68 +2783,50 @@ redef class ATypePropdef
     redef meth visit_all(v: Visitor)
     do
         if _n_doc != null then
-            v.visit(_n_doc)
+            v.visit(_n_doc.as(not null))
         end
         if _n_kwredef != null then
-            v.visit(_n_kwredef)
-        end
-        if _n_visibility != null then
-            v.visit(_n_visibility)
-        end
-        if _n_kwtype != null then
-            v.visit(_n_kwtype)
-        end
-        if _n_id != null then
-            v.visit(_n_id)
-        end
-        if _n_type != null then
-            v.visit(_n_type)
+            v.visit(_n_kwredef.as(not null))
         end
+        v.visit(_n_visibility)
+        v.visit(_n_kwtype)
+        v.visit(_n_id)
+        v.visit(_n_type)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
         if _n_doc != null then
-            v.visit(_n_doc)
+            v.visit(_n_doc.as(not null))
         end
         if _n_kwredef != null then
-            v.visit(_n_kwredef)
-        end
-        if _n_visibility != null then
-            v.visit(_n_visibility)
-        end
-        if _n_kwtype != null then
-            v.visit(_n_kwtype)
-        end
-        if _n_id != null then
-            v.visit(_n_id)
-        end
-        if _n_type != null then
-            v.visit(_n_type)
+            v.visit(_n_kwredef.as(not null))
         end
+        v.visit(_n_visibility)
+        v.visit(_n_kwtype)
+        v.visit(_n_id)
+        v.visit(_n_type)
     end
 end
 redef class AReadAble
-    redef meth n_kwredef=(n: TKwredef)
+    redef meth n_kwredef=(n)
     do
         _n_kwredef = n
         if n != null then
            n.parent = self
         end
     end
-    redef meth n_kwreadable=(n: TKwreadable)
+    redef meth n_kwreadable=(n)
     do
         _n_kwreadable = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_areadable (
-            n_kwredef: TKwredef ,
-            n_kwreadable: TKwreadable 
+            n_kwredef: nullable TKwredef ,
+            n_kwreadable: nullable TKwreadable 
     )
     do
         empty_init
@@ -3261,15 +2834,12 @@ redef class AReadAble
        if n_kwredef != null then
                n_kwredef.parent = self
        end
-        _n_kwreadable = n_kwreadable
-       if n_kwreadable != null then
-               n_kwreadable.parent = self
-       end
+        _n_kwreadable = n_kwreadable.as(not null)
+       n_kwreadable.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_kwredef == old_child then
             if new_child != null then
                 new_child.parent = self
@@ -3286,7 +2856,7 @@ redef class AReadAble
                assert new_child isa TKwreadable
                 _n_kwreadable = new_child
            else
-               _n_kwreadable = null
+               abort
             end
             return
        end
@@ -3295,44 +2865,38 @@ redef class AReadAble
     redef meth visit_all(v: Visitor)
     do
         if _n_kwredef != null then
-            v.visit(_n_kwredef)
-        end
-        if _n_kwreadable != null then
-            v.visit(_n_kwreadable)
+            v.visit(_n_kwredef.as(not null))
         end
+        v.visit(_n_kwreadable)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
         if _n_kwredef != null then
-            v.visit(_n_kwredef)
-        end
-        if _n_kwreadable != null then
-            v.visit(_n_kwreadable)
+            v.visit(_n_kwredef.as(not null))
         end
+        v.visit(_n_kwreadable)
     end
 end
 redef class AWriteAble
-    redef meth n_kwredef=(n: TKwredef)
+    redef meth n_kwredef=(n)
     do
         _n_kwredef = n
         if n != null then
            n.parent = self
         end
     end
-    redef meth n_kwwritable=(n: TKwwritable)
+    redef meth n_kwwritable=(n)
     do
         _n_kwwritable = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_awriteable (
-            n_kwredef: TKwredef ,
-            n_kwwritable: TKwwritable 
+            n_kwredef: nullable TKwredef ,
+            n_kwwritable: nullable TKwwritable 
     )
     do
         empty_init
@@ -3340,15 +2904,12 @@ redef class AWriteAble
        if n_kwredef != null then
                n_kwredef.parent = self
        end
-        _n_kwwritable = n_kwwritable
-       if n_kwwritable != null then
-               n_kwwritable.parent = self
-       end
+        _n_kwwritable = n_kwwritable.as(not null)
+       n_kwwritable.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_kwredef == old_child then
             if new_child != null then
                 new_child.parent = self
@@ -3365,7 +2926,7 @@ redef class AWriteAble
                assert new_child isa TKwwritable
                 _n_kwwritable = new_child
            else
-               _n_kwwritable = null
+               abort
             end
             return
        end
@@ -3374,55 +2935,46 @@ redef class AWriteAble
     redef meth visit_all(v: Visitor)
     do
         if _n_kwredef != null then
-            v.visit(_n_kwredef)
-        end
-        if _n_kwwritable != null then
-            v.visit(_n_kwwritable)
+            v.visit(_n_kwredef.as(not null))
         end
+        v.visit(_n_kwwritable)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
         if _n_kwredef != null then
-            v.visit(_n_kwredef)
-        end
-        if _n_kwwritable != null then
-            v.visit(_n_kwwritable)
+            v.visit(_n_kwredef.as(not null))
         end
+        v.visit(_n_kwwritable)
     end
 end
 redef class AIdMethid
-    redef meth n_id=(n: TId)
+    redef meth n_id=(n)
     do
         _n_id = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_aidmethid (
-            n_id: TId 
+            n_id: nullable TId 
     )
     do
         empty_init
-        _n_id = n_id
-       if n_id != null then
-               n_id.parent = self
-       end
+        _n_id = n_id.as(not null)
+       n_id.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         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
-               _n_id = null
+               abort
             end
             return
        end
@@ -3430,50 +2982,41 @@ redef class AIdMethid
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_id != null then
-            v.visit(_n_id)
-        end
+        v.visit(_n_id)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_id != null then
-            v.visit(_n_id)
-        end
+        v.visit(_n_id)
     end
 end
 redef class APlusMethid
-    redef meth n_plus=(n: TPlus)
+    redef meth n_plus=(n)
     do
         _n_plus = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_aplusmethid (
-            n_plus: TPlus 
+            n_plus: nullable TPlus 
     )
     do
         empty_init
-        _n_plus = n_plus
-       if n_plus != null then
-               n_plus.parent = self
-       end
+        _n_plus = n_plus.as(not null)
+       n_plus.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_plus == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa TPlus
                 _n_plus = new_child
            else
-               _n_plus = null
+               abort
             end
             return
        end
@@ -3481,50 +3024,41 @@ redef class APlusMethid
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_plus != null then
-            v.visit(_n_plus)
-        end
+        v.visit(_n_plus)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_plus != null then
-            v.visit(_n_plus)
-        end
+        v.visit(_n_plus)
     end
 end
 redef class AMinusMethid
-    redef meth n_minus=(n: TMinus)
+    redef meth n_minus=(n)
     do
         _n_minus = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_aminusmethid (
-            n_minus: TMinus 
+            n_minus: nullable TMinus 
     )
     do
         empty_init
-        _n_minus = n_minus
-       if n_minus != null then
-               n_minus.parent = self
-       end
+        _n_minus = n_minus.as(not null)
+       n_minus.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_minus == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa TMinus
                 _n_minus = new_child
            else
-               _n_minus = null
+               abort
             end
             return
        end
@@ -3532,50 +3066,41 @@ redef class AMinusMethid
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_minus != null then
-            v.visit(_n_minus)
-        end
+        v.visit(_n_minus)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_minus != null then
-            v.visit(_n_minus)
-        end
+        v.visit(_n_minus)
     end
 end
 redef class AStarMethid
-    redef meth n_star=(n: TStar)
+    redef meth n_star=(n)
     do
         _n_star = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_astarmethid (
-            n_star: TStar 
+            n_star: nullable TStar 
     )
     do
         empty_init
-        _n_star = n_star
-       if n_star != null then
-               n_star.parent = self
-       end
+        _n_star = n_star.as(not null)
+       n_star.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_star == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa TStar
                 _n_star = new_child
            else
-               _n_star = null
+               abort
             end
             return
        end
@@ -3583,50 +3108,41 @@ redef class AStarMethid
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_star != null then
-            v.visit(_n_star)
-        end
+        v.visit(_n_star)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_star != null then
-            v.visit(_n_star)
-        end
+        v.visit(_n_star)
     end
 end
 redef class ASlashMethid
-    redef meth n_slash=(n: TSlash)
+    redef meth n_slash=(n)
     do
         _n_slash = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_aslashmethid (
-            n_slash: TSlash 
+            n_slash: nullable TSlash 
     )
     do
         empty_init
-        _n_slash = n_slash
-       if n_slash != null then
-               n_slash.parent = self
-       end
+        _n_slash = n_slash.as(not null)
+       n_slash.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_slash == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa TSlash
                 _n_slash = new_child
            else
-               _n_slash = null
+               abort
             end
             return
        end
@@ -3634,50 +3150,41 @@ redef class ASlashMethid
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_slash != null then
-            v.visit(_n_slash)
-        end
+        v.visit(_n_slash)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_slash != null then
-            v.visit(_n_slash)
-        end
+        v.visit(_n_slash)
     end
 end
 redef class APercentMethid
-    redef meth n_percent=(n: TPercent)
+    redef meth n_percent=(n)
     do
         _n_percent = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_apercentmethid (
-            n_percent: TPercent 
+            n_percent: nullable TPercent 
     )
     do
         empty_init
-        _n_percent = n_percent
-       if n_percent != null then
-               n_percent.parent = self
-       end
+        _n_percent = n_percent.as(not null)
+       n_percent.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_percent == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa TPercent
                 _n_percent = new_child
            else
-               _n_percent = null
+               abort
             end
             return
        end
@@ -3685,50 +3192,41 @@ redef class APercentMethid
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_percent != null then
-            v.visit(_n_percent)
-        end
+        v.visit(_n_percent)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_percent != null then
-            v.visit(_n_percent)
-        end
+        v.visit(_n_percent)
     end
 end
 redef class AEqMethid
-    redef meth n_eq=(n: TEq)
+    redef meth n_eq=(n)
     do
         _n_eq = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_aeqmethid (
-            n_eq: TEq 
+            n_eq: nullable TEq 
     )
     do
         empty_init
-        _n_eq = n_eq
-       if n_eq != null then
-               n_eq.parent = self
-       end
+        _n_eq = n_eq.as(not null)
+       n_eq.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_eq == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa TEq
                 _n_eq = new_child
            else
-               _n_eq = null
+               abort
             end
             return
        end
@@ -3736,50 +3234,41 @@ redef class AEqMethid
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_eq != null then
-            v.visit(_n_eq)
-        end
+        v.visit(_n_eq)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_eq != null then
-            v.visit(_n_eq)
-        end
+        v.visit(_n_eq)
     end
 end
 redef class ANeMethid
-    redef meth n_ne=(n: TNe)
+    redef meth n_ne=(n)
     do
         _n_ne = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_anemethid (
-            n_ne: TNe 
+            n_ne: nullable TNe 
     )
     do
         empty_init
-        _n_ne = n_ne
-       if n_ne != null then
-               n_ne.parent = self
-       end
+        _n_ne = n_ne.as(not null)
+       n_ne.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_ne == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa TNe
                 _n_ne = new_child
            else
-               _n_ne = null
+               abort
             end
             return
        end
@@ -3787,50 +3276,41 @@ redef class ANeMethid
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_ne != null then
-            v.visit(_n_ne)
-        end
+        v.visit(_n_ne)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_ne != null then
-            v.visit(_n_ne)
-        end
+        v.visit(_n_ne)
     end
 end
 redef class ALeMethid
-    redef meth n_le=(n: TLe)
+    redef meth n_le=(n)
     do
         _n_le = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_alemethid (
-            n_le: TLe 
+            n_le: nullable TLe 
     )
     do
         empty_init
-        _n_le = n_le
-       if n_le != null then
-               n_le.parent = self
-       end
+        _n_le = n_le.as(not null)
+       n_le.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_le == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa TLe
                 _n_le = new_child
            else
-               _n_le = null
+               abort
             end
             return
        end
@@ -3838,50 +3318,41 @@ redef class ALeMethid
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_le != null then
-            v.visit(_n_le)
-        end
+        v.visit(_n_le)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_le != null then
-            v.visit(_n_le)
-        end
+        v.visit(_n_le)
     end
 end
 redef class AGeMethid
-    redef meth n_ge=(n: TGe)
+    redef meth n_ge=(n)
     do
         _n_ge = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_agemethid (
-            n_ge: TGe 
+            n_ge: nullable TGe 
     )
     do
         empty_init
-        _n_ge = n_ge
-       if n_ge != null then
-               n_ge.parent = self
-       end
+        _n_ge = n_ge.as(not null)
+       n_ge.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_ge == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa TGe
                 _n_ge = new_child
            else
-               _n_ge = null
+               abort
             end
             return
        end
@@ -3889,50 +3360,41 @@ redef class AGeMethid
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_ge != null then
-            v.visit(_n_ge)
-        end
+        v.visit(_n_ge)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_ge != null then
-            v.visit(_n_ge)
-        end
+        v.visit(_n_ge)
     end
 end
 redef class ALtMethid
-    redef meth n_lt=(n: TLt)
+    redef meth n_lt=(n)
     do
         _n_lt = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_altmethid (
-            n_lt: TLt 
+            n_lt: nullable TLt 
     )
     do
         empty_init
-        _n_lt = n_lt
-       if n_lt != null then
-               n_lt.parent = self
-       end
+        _n_lt = n_lt.as(not null)
+       n_lt.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_lt == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa TLt
                 _n_lt = new_child
            else
-               _n_lt = null
+               abort
             end
             return
        end
@@ -3940,50 +3402,41 @@ redef class ALtMethid
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_lt != null then
-            v.visit(_n_lt)
-        end
+        v.visit(_n_lt)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_lt != null then
-            v.visit(_n_lt)
-        end
+        v.visit(_n_lt)
     end
 end
 redef class AGtMethid
-    redef meth n_gt=(n: TGt)
+    redef meth n_gt=(n)
     do
         _n_gt = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_agtmethid (
-            n_gt: TGt 
+            n_gt: nullable TGt 
     )
     do
         empty_init
-        _n_gt = n_gt
-       if n_gt != null then
-               n_gt.parent = self
-       end
+        _n_gt = n_gt.as(not null)
+       n_gt.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_gt == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa TGt
                 _n_gt = new_child
            else
-               _n_gt = null
+               abort
             end
             return
        end
@@ -3991,62 +3444,49 @@ redef class AGtMethid
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_gt != null then
-            v.visit(_n_gt)
-        end
+        v.visit(_n_gt)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_gt != null then
-            v.visit(_n_gt)
-        end
+        v.visit(_n_gt)
     end
 end
 redef class ABraMethid
-    redef meth n_obra=(n: TObra)
+    redef meth n_obra=(n)
     do
         _n_obra = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_cbra=(n: TCbra)
+    redef meth n_cbra=(n)
     do
         _n_cbra = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_abramethid (
-            n_obra: TObra ,
-            n_cbra: TCbra 
+            n_obra: nullable TObra ,
+            n_cbra: nullable TCbra 
     )
     do
         empty_init
-        _n_obra = n_obra
-       if n_obra != null then
-               n_obra.parent = self
-       end
-        _n_cbra = n_cbra
-       if n_cbra != null then
-               n_cbra.parent = self
-       end
+        _n_obra = n_obra.as(not null)
+       n_obra.parent = self
+        _n_cbra = n_cbra.as(not null)
+       n_cbra.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_obra == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa TObra
                 _n_obra = new_child
            else
-               _n_obra = null
+               abort
             end
             return
        end
@@ -4056,7 +3496,7 @@ redef class ABraMethid
                assert new_child isa TCbra
                 _n_cbra = new_child
            else
-               _n_cbra = null
+               abort
             end
             return
        end
@@ -4064,56 +3504,43 @@ redef class ABraMethid
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_obra != null then
-            v.visit(_n_obra)
-        end
-        if _n_cbra != null then
-            v.visit(_n_cbra)
-        end
+        v.visit(_n_obra)
+        v.visit(_n_cbra)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_obra != null then
-            v.visit(_n_obra)
-        end
-        if _n_cbra != null then
-            v.visit(_n_cbra)
-        end
+        v.visit(_n_obra)
+        v.visit(_n_cbra)
     end
 end
 redef class AStarshipMethid
-    redef meth n_starship=(n: TStarship)
+    redef meth n_starship=(n)
     do
         _n_starship = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_astarshipmethid (
-            n_starship: TStarship 
+            n_starship: nullable TStarship 
     )
     do
         empty_init
-        _n_starship = n_starship
-       if n_starship != null then
-               n_starship.parent = self
-       end
+        _n_starship = n_starship.as(not null)
+       n_starship.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_starship == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa TStarship
                 _n_starship = new_child
            else
-               _n_starship = null
+               abort
             end
             return
        end
@@ -4121,62 +3548,49 @@ redef class AStarshipMethid
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_starship != null then
-            v.visit(_n_starship)
-        end
+        v.visit(_n_starship)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_starship != null then
-            v.visit(_n_starship)
-        end
+        v.visit(_n_starship)
     end
 end
 redef class AAssignMethid
-    redef meth n_id=(n: TId)
+    redef meth n_id=(n)
     do
         _n_id = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_assign=(n: TAssign)
+    redef meth n_assign=(n)
     do
         _n_assign = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_aassignmethid (
-            n_id: TId ,
-            n_assign: TAssign 
+            n_id: nullable TId ,
+            n_assign: nullable TAssign 
     )
     do
         empty_init
-        _n_id = n_id
-       if n_id != null then
-               n_id.parent = self
-       end
-        _n_assign = n_assign
-       if n_assign != null then
-               n_assign.parent = self
-       end
+        _n_id = n_id.as(not null)
+       n_id.parent = self
+        _n_assign = n_assign.as(not null)
+       n_assign.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         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
-               _n_id = null
+               abort
             end
             return
        end
@@ -4186,7 +3600,7 @@ redef class AAssignMethid
                assert new_child isa TAssign
                 _n_assign = new_child
            else
-               _n_assign = null
+               abort
             end
             return
        end
@@ -4194,80 +3608,59 @@ redef class AAssignMethid
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_id != null then
-            v.visit(_n_id)
-        end
-        if _n_assign != null then
-            v.visit(_n_assign)
-        end
+        v.visit(_n_id)
+        v.visit(_n_assign)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_id != null then
-            v.visit(_n_id)
-        end
-        if _n_assign != null then
-            v.visit(_n_assign)
-        end
+        v.visit(_n_id)
+        v.visit(_n_assign)
     end
 end
 redef class ABraassignMethid
-    redef meth n_obra=(n: TObra)
+    redef meth n_obra=(n)
     do
         _n_obra = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_cbra=(n: TCbra)
+    redef meth n_cbra=(n)
     do
         _n_cbra = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_assign=(n: TAssign)
+    redef meth n_assign=(n)
     do
         _n_assign = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_abraassignmethid (
-            n_obra: TObra ,
-            n_cbra: TCbra ,
-            n_assign: TAssign 
+            n_obra: nullable TObra ,
+            n_cbra: nullable TCbra ,
+            n_assign: nullable TAssign 
     )
     do
         empty_init
-        _n_obra = n_obra
-       if n_obra != null then
-               n_obra.parent = self
-       end
-        _n_cbra = n_cbra
-       if n_cbra != null then
-               n_cbra.parent = self
-       end
-        _n_assign = n_assign
-       if n_assign != null then
-               n_assign.parent = self
-       end
+        _n_obra = n_obra.as(not null)
+       n_obra.parent = self
+        _n_cbra = n_cbra.as(not null)
+       n_cbra.parent = self
+        _n_assign = n_assign.as(not null)
+       n_assign.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_obra == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa TObra
                 _n_obra = new_child
            else
-               _n_obra = null
+               abort
             end
             return
        end
@@ -4277,7 +3670,7 @@ redef class ABraassignMethid
                assert new_child isa TCbra
                 _n_cbra = new_child
            else
-               _n_cbra = null
+               abort
             end
             return
        end
@@ -4287,7 +3680,7 @@ redef class ABraassignMethid
                assert new_child isa TAssign
                 _n_assign = new_child
            else
-               _n_assign = null
+               abort
             end
             return
        end
@@ -4295,32 +3688,20 @@ redef class ABraassignMethid
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_obra != null then
-            v.visit(_n_obra)
-        end
-        if _n_cbra != null then
-            v.visit(_n_cbra)
-        end
-        if _n_assign != null then
-            v.visit(_n_assign)
-        end
+        v.visit(_n_obra)
+        v.visit(_n_cbra)
+        v.visit(_n_assign)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_obra != null then
-            v.visit(_n_obra)
-        end
-        if _n_cbra != null then
-            v.visit(_n_cbra)
-        end
-        if _n_assign != null then
-            v.visit(_n_assign)
-        end
+        v.visit(_n_obra)
+        v.visit(_n_cbra)
+        v.visit(_n_assign)
     end
 end
 redef class ASignature
-    redef meth n_type=(n: PType)
+    redef meth n_type=(n)
     do
         _n_type = n
         if n != null then
@@ -4332,12 +3713,11 @@ redef class ASignature
 
     init init_asignature (
             n_params: Collection[Object] , # Should be Collection[PParam]
-            n_type: PType ,
+            n_type: nullable PType ,
             n_closure_decls: Collection[Object]  # Should be Collection[PClosureDecl]
     )
     do
         empty_init
-        _n_params = new List[PParam]
        for n in n_params do
                assert n isa PParam
                _n_params.add(n)
@@ -4347,7 +3727,6 @@ redef class ASignature
        if n_type != null then
                n_type.parent = self
        end
-        _n_closure_decls = new List[PClosureDecl]
        for n in n_closure_decls do
                assert n isa PClosureDecl
                _n_closure_decls.add(n)
@@ -4355,9 +3734,8 @@ redef class ASignature
        end
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         for i in [0.._n_params.length[ do
             if _n_params[i] == old_child then
                 if new_child != null then
@@ -4400,7 +3778,7 @@ redef class ASignature
                 v.visit(n)
            end
         if _n_type != null then
-            v.visit(_n_type)
+            v.visit(_n_type.as(not null))
         end
             for n in _n_closure_decls do
                 v.visit(n)
@@ -4417,7 +3795,7 @@ redef class ASignature
            end
        end
         if _n_type != null then
-            v.visit(_n_type)
+            v.visit(_n_type.as(not null))
         end
        do
            var i = _n_closure_decls.length
@@ -4429,21 +3807,19 @@ redef class ASignature
     end
 end
 redef class AParam
-    redef meth n_id=(n: TId)
+    redef meth n_id=(n)
     do
         _n_id = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_type=(n: PType)
+    redef meth n_type=(n)
     do
         _n_type = n
         if n != null then
            n.parent = self
         end
     end
-    redef meth n_dotdotdot=(n: TDotdotdot)
+    redef meth n_dotdotdot=(n)
     do
         _n_dotdotdot = n
         if n != null then
@@ -4454,16 +3830,14 @@ redef class AParam
     private init empty_init do end
 
     init init_aparam (
-            n_id: TId ,
-            n_type: PType ,
-            n_dotdotdot: TDotdotdot 
+            n_id: nullable TId ,
+            n_type: nullable PType ,
+            n_dotdotdot: nullable TDotdotdot 
     )
     do
         empty_init
-        _n_id = n_id
-       if n_id != null then
-               n_id.parent = self
-       end
+        _n_id = n_id.as(not null)
+       n_id.parent = self
         _n_type = n_type
        if n_type != null then
                n_type.parent = self
@@ -4474,16 +3848,15 @@ redef class AParam
        end
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         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
-               _n_id = null
+               abort
             end
             return
        end
@@ -4511,60 +3884,50 @@ redef class AParam
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_id != null then
-            v.visit(_n_id)
-        end
+        v.visit(_n_id)
         if _n_type != null then
-            v.visit(_n_type)
+            v.visit(_n_type.as(not null))
         end
         if _n_dotdotdot != null then
-            v.visit(_n_dotdotdot)
+            v.visit(_n_dotdotdot.as(not null))
         end
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_id != null then
-            v.visit(_n_id)
-        end
+        v.visit(_n_id)
         if _n_type != null then
-            v.visit(_n_type)
+            v.visit(_n_type.as(not null))
         end
         if _n_dotdotdot != null then
-            v.visit(_n_dotdotdot)
+            v.visit(_n_dotdotdot.as(not null))
         end
     end
 end
 redef class AClosureDecl
-    redef meth n_kwwith=(n: TKwwith)
+    redef meth n_kwwith=(n)
     do
         _n_kwwith = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_kwbreak=(n: TKwbreak)
+    redef meth n_kwbreak=(n)
     do
         _n_kwbreak = n
         if n != null then
            n.parent = self
         end
     end
-    redef meth n_id=(n: TId)
+    redef meth n_id=(n)
     do
         _n_id = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_signature=(n: PSignature)
+    redef meth n_signature=(n)
     do
         _n_signature = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
         if n != null then
@@ -4575,46 +3938,39 @@ redef class AClosureDecl
     private init empty_init do end
 
     init init_aclosuredecl (
-            n_kwwith: TKwwith ,
-            n_kwbreak: TKwbreak ,
-            n_id: TId ,
-            n_signature: PSignature ,
-            n_expr: PExpr 
+            n_kwwith: nullable TKwwith ,
+            n_kwbreak: nullable TKwbreak ,
+            n_id: nullable TId ,
+            n_signature: nullable PSignature ,
+            n_expr: nullable PExpr 
     )
     do
         empty_init
-        _n_kwwith = n_kwwith
-       if n_kwwith != null then
-               n_kwwith.parent = self
-       end
+        _n_kwwith = n_kwwith.as(not null)
+       n_kwwith.parent = self
         _n_kwbreak = n_kwbreak
        if n_kwbreak != null then
                n_kwbreak.parent = self
        end
-        _n_id = n_id
-       if n_id != null then
-               n_id.parent = self
-       end
-        _n_signature = n_signature
-       if n_signature != null then
-               n_signature.parent = self
-       end
+        _n_id = n_id.as(not null)
+       n_id.parent = self
+        _n_signature = n_signature.as(not null)
+       n_signature.parent = self
         _n_expr = n_expr
        if n_expr != null then
                n_expr.parent = self
        end
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_kwwith == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa TKwwith
                 _n_kwwith = new_child
            else
-               _n_kwwith = null
+               abort
             end
             return
        end
@@ -4634,7 +3990,7 @@ redef class AClosureDecl
                assert new_child isa TId
                 _n_id = new_child
            else
-               _n_id = null
+               abort
             end
             return
        end
@@ -4644,7 +4000,7 @@ redef class AClosureDecl
                assert new_child isa PSignature
                 _n_signature = new_child
            else
-               _n_signature = null
+               abort
             end
             return
        end
@@ -4662,63 +4018,49 @@ redef class AClosureDecl
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_kwwith != null then
-            v.visit(_n_kwwith)
-        end
+        v.visit(_n_kwwith)
         if _n_kwbreak != null then
-            v.visit(_n_kwbreak)
-        end
-        if _n_id != null then
-            v.visit(_n_id)
-        end
-        if _n_signature != null then
-            v.visit(_n_signature)
+            v.visit(_n_kwbreak.as(not null))
         end
+        v.visit(_n_id)
+        v.visit(_n_signature)
         if _n_expr != null then
-            v.visit(_n_expr)
+            v.visit(_n_expr.as(not null))
         end
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_kwwith != null then
-            v.visit(_n_kwwith)
-        end
+        v.visit(_n_kwwith)
         if _n_kwbreak != null then
-            v.visit(_n_kwbreak)
-        end
-        if _n_id != null then
-            v.visit(_n_id)
-        end
-        if _n_signature != null then
-            v.visit(_n_signature)
+            v.visit(_n_kwbreak.as(not null))
         end
+        v.visit(_n_id)
+        v.visit(_n_signature)
         if _n_expr != null then
-            v.visit(_n_expr)
+            v.visit(_n_expr.as(not null))
         end
     end
 end
 redef class AType
-    redef meth n_kwnullable=(n: TKwnullable)
+    redef meth n_kwnullable=(n)
     do
         _n_kwnullable = n
         if n != null then
            n.parent = self
         end
     end
-    redef meth n_id=(n: TClassid)
+    redef meth n_id=(n)
     do
         _n_id = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_atype (
-            n_kwnullable: TKwnullable ,
-            n_id: TClassid ,
+            n_kwnullable: nullable TKwnullable ,
+            n_id: nullable TClassid ,
             n_types: Collection[Object]  # Should be Collection[PType]
     )
     do
@@ -4727,11 +4069,8 @@ redef class AType
        if n_kwnullable != null then
                n_kwnullable.parent = self
        end
-        _n_id = n_id
-       if n_id != null then
-               n_id.parent = self
-       end
-        _n_types = new List[PType]
+        _n_id = n_id.as(not null)
+       n_id.parent = self
        for n in n_types do
                assert n isa PType
                _n_types.add(n)
@@ -4739,9 +4078,8 @@ redef class AType
        end
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_kwnullable == old_child then
             if new_child != null then
                 new_child.parent = self
@@ -4758,7 +4096,7 @@ redef class AType
                assert new_child isa TClassid
                 _n_id = new_child
            else
-               _n_id = null
+               abort
             end
             return
        end
@@ -4779,11 +4117,9 @@ redef class AType
     redef meth visit_all(v: Visitor)
     do
         if _n_kwnullable != null then
-            v.visit(_n_kwnullable)
-        end
-        if _n_id != null then
-            v.visit(_n_id)
+            v.visit(_n_kwnullable.as(not null))
         end
+        v.visit(_n_id)
             for n in _n_types do
                 v.visit(n)
            end
@@ -4792,11 +4128,9 @@ redef class AType
     redef meth visit_all_reverse(v: Visitor)
     do
         if _n_kwnullable != null then
-            v.visit(_n_kwnullable)
-        end
-        if _n_id != null then
-            v.visit(_n_id)
+            v.visit(_n_kwnullable.as(not null))
         end
+        v.visit(_n_id)
        do
            var i = _n_types.length
             while i >= 0 do
@@ -4815,7 +4149,6 @@ redef class ABlockExpr
     )
     do
         empty_init
-        _n_expr = new List[PExpr]
        for n in n_expr do
                assert n isa PExpr
                _n_expr.add(n)
@@ -4823,9 +4156,8 @@ redef class ABlockExpr
        end
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         for i in [0.._n_expr.length[ do
             if _n_expr[i] == old_child then
                 if new_child != null then
@@ -4859,35 +4191,31 @@ redef class ABlockExpr
     end
 end
 redef class AVardeclExpr
-    redef meth n_kwvar=(n: TKwvar)
+    redef meth n_kwvar=(n)
     do
         _n_kwvar = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_id=(n: TId)
+    redef meth n_id=(n)
     do
         _n_id = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_type=(n: PType)
+    redef meth n_type=(n)
     do
         _n_type = n
         if n != null then
            n.parent = self
         end
     end
-    redef meth n_assign=(n: TAssign)
+    redef meth n_assign=(n)
     do
         _n_assign = n
         if n != null then
            n.parent = self
         end
     end
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
         if n != null then
@@ -4898,22 +4226,18 @@ redef class AVardeclExpr
     private init empty_init do end
 
     init init_avardeclexpr (
-            n_kwvar: TKwvar ,
-            n_id: TId ,
-            n_type: PType ,
-            n_assign: TAssign ,
-            n_expr: PExpr 
+            n_kwvar: nullable TKwvar ,
+            n_id: nullable TId ,
+            n_type: nullable PType ,
+            n_assign: nullable TAssign ,
+            n_expr: nullable PExpr 
     )
     do
         empty_init
-        _n_kwvar = n_kwvar
-       if n_kwvar != null then
-               n_kwvar.parent = self
-       end
-        _n_id = n_id
-       if n_id != null then
-               n_id.parent = self
-       end
+        _n_kwvar = n_kwvar.as(not null)
+       n_kwvar.parent = self
+        _n_id = n_id.as(not null)
+       n_id.parent = self
         _n_type = n_type
        if n_type != null then
                n_type.parent = self
@@ -4928,16 +4252,15 @@ redef class AVardeclExpr
        end
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_kwvar == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa TKwvar
                 _n_kwvar = new_child
            else
-               _n_kwvar = null
+               abort
             end
             return
        end
@@ -4947,7 +4270,7 @@ redef class AVardeclExpr
                assert new_child isa TId
                 _n_id = new_child
            else
-               _n_id = null
+               abort
             end
             return
        end
@@ -4985,51 +4308,41 @@ redef class AVardeclExpr
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_kwvar != null then
-            v.visit(_n_kwvar)
-        end
-        if _n_id != null then
-            v.visit(_n_id)
-        end
+        v.visit(_n_kwvar)
+        v.visit(_n_id)
         if _n_type != null then
-            v.visit(_n_type)
+            v.visit(_n_type.as(not null))
         end
         if _n_assign != null then
-            v.visit(_n_assign)
+            v.visit(_n_assign.as(not null))
         end
         if _n_expr != null then
-            v.visit(_n_expr)
+            v.visit(_n_expr.as(not null))
         end
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_kwvar != null then
-            v.visit(_n_kwvar)
-        end
-        if _n_id != null then
-            v.visit(_n_id)
-        end
+        v.visit(_n_kwvar)
+        v.visit(_n_id)
         if _n_type != null then
-            v.visit(_n_type)
+            v.visit(_n_type.as(not null))
         end
         if _n_assign != null then
-            v.visit(_n_assign)
+            v.visit(_n_assign.as(not null))
         end
         if _n_expr != null then
-            v.visit(_n_expr)
+            v.visit(_n_expr.as(not null))
         end
     end
 end
 redef class AReturnExpr
-    redef meth n_kwreturn=(n: TKwreturn)
+    redef meth n_kwreturn=(n)
     do
         _n_kwreturn = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
         if n != null then
@@ -5040,31 +4353,28 @@ redef class AReturnExpr
     private init empty_init do end
 
     init init_areturnexpr (
-            n_kwreturn: TKwreturn ,
-            n_expr: PExpr 
+            n_kwreturn: nullable TKwreturn ,
+            n_expr: nullable PExpr 
     )
     do
         empty_init
-        _n_kwreturn = n_kwreturn
-       if n_kwreturn != null then
-               n_kwreturn.parent = self
-       end
+        _n_kwreturn = n_kwreturn.as(not null)
+       n_kwreturn.parent = self
         _n_expr = n_expr
        if n_expr != null then
                n_expr.parent = self
        end
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_kwreturn == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa TKwreturn
                 _n_kwreturn = new_child
            else
-               _n_kwreturn = null
+               abort
             end
             return
        end
@@ -5082,33 +4392,27 @@ redef class AReturnExpr
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_kwreturn != null then
-            v.visit(_n_kwreturn)
-        end
+        v.visit(_n_kwreturn)
         if _n_expr != null then
-            v.visit(_n_expr)
+            v.visit(_n_expr.as(not null))
         end
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_kwreturn != null then
-            v.visit(_n_kwreturn)
-        end
+        v.visit(_n_kwreturn)
         if _n_expr != null then
-            v.visit(_n_expr)
+            v.visit(_n_expr.as(not null))
         end
     end
 end
 redef class ABreakExpr
-    redef meth n_kwbreak=(n: TKwbreak)
+    redef meth n_kwbreak=(n)
     do
         _n_kwbreak = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
         if n != null then
@@ -5119,31 +4423,28 @@ redef class ABreakExpr
     private init empty_init do end
 
     init init_abreakexpr (
-            n_kwbreak: TKwbreak ,
-            n_expr: PExpr 
+            n_kwbreak: nullable TKwbreak ,
+            n_expr: nullable PExpr 
     )
     do
         empty_init
-        _n_kwbreak = n_kwbreak
-       if n_kwbreak != null then
-               n_kwbreak.parent = self
-       end
+        _n_kwbreak = n_kwbreak.as(not null)
+       n_kwbreak.parent = self
         _n_expr = n_expr
        if n_expr != null then
                n_expr.parent = self
        end
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_kwbreak == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa TKwbreak
                 _n_kwbreak = new_child
            else
-               _n_kwbreak = null
+               abort
             end
             return
        end
@@ -5161,56 +4462,47 @@ redef class ABreakExpr
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_kwbreak != null then
-            v.visit(_n_kwbreak)
-        end
+        v.visit(_n_kwbreak)
         if _n_expr != null then
-            v.visit(_n_expr)
+            v.visit(_n_expr.as(not null))
         end
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_kwbreak != null then
-            v.visit(_n_kwbreak)
-        end
+        v.visit(_n_kwbreak)
         if _n_expr != null then
-            v.visit(_n_expr)
+            v.visit(_n_expr.as(not null))
         end
     end
 end
 redef class AAbortExpr
-    redef meth n_kwabort=(n: TKwabort)
+    redef meth n_kwabort=(n)
     do
         _n_kwabort = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_aabortexpr (
-            n_kwabort: TKwabort 
+            n_kwabort: nullable TKwabort 
     )
     do
         empty_init
-        _n_kwabort = n_kwabort
-       if n_kwabort != null then
-               n_kwabort.parent = self
-       end
+        _n_kwabort = n_kwabort.as(not null)
+       n_kwabort.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_kwabort == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa TKwabort
                 _n_kwabort = new_child
            else
-               _n_kwabort = null
+               abort
             end
             return
        end
@@ -5218,27 +4510,21 @@ redef class AAbortExpr
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_kwabort != null then
-            v.visit(_n_kwabort)
-        end
+        v.visit(_n_kwabort)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_kwabort != null then
-            v.visit(_n_kwabort)
-        end
+        v.visit(_n_kwabort)
     end
 end
 redef class AContinueExpr
-    redef meth n_kwcontinue=(n: TKwcontinue)
+    redef meth n_kwcontinue=(n)
     do
         _n_kwcontinue = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
         if n != null then
@@ -5249,31 +4535,28 @@ redef class AContinueExpr
     private init empty_init do end
 
     init init_acontinueexpr (
-            n_kwcontinue: TKwcontinue ,
-            n_expr: PExpr 
+            n_kwcontinue: nullable TKwcontinue ,
+            n_expr: nullable PExpr 
     )
     do
         empty_init
-        _n_kwcontinue = n_kwcontinue
-       if n_kwcontinue != null then
-               n_kwcontinue.parent = self
-       end
+        _n_kwcontinue = n_kwcontinue.as(not null)
+       n_kwcontinue.parent = self
         _n_expr = n_expr
        if n_expr != null then
                n_expr.parent = self
        end
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_kwcontinue == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa TKwcontinue
                 _n_kwcontinue = new_child
            else
-               _n_kwcontinue = null
+               abort
             end
             return
        end
@@ -5291,33 +4574,27 @@ redef class AContinueExpr
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_kwcontinue != null then
-            v.visit(_n_kwcontinue)
-        end
+        v.visit(_n_kwcontinue)
         if _n_expr != null then
-            v.visit(_n_expr)
+            v.visit(_n_expr.as(not null))
         end
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_kwcontinue != null then
-            v.visit(_n_kwcontinue)
-        end
+        v.visit(_n_kwcontinue)
         if _n_expr != null then
-            v.visit(_n_expr)
+            v.visit(_n_expr.as(not null))
         end
     end
 end
 redef class ADoExpr
-    redef meth n_kwdo=(n: TKwdo)
+    redef meth n_kwdo=(n)
     do
         _n_kwdo = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_block=(n: PExpr)
+    redef meth n_block=(n)
     do
         _n_block = n
         if n != null then
@@ -5328,31 +4605,28 @@ redef class ADoExpr
     private init empty_init do end
 
     init init_adoexpr (
-            n_kwdo: TKwdo ,
-            n_block: PExpr 
+            n_kwdo: nullable TKwdo ,
+            n_block: nullable PExpr 
     )
     do
         empty_init
-        _n_kwdo = n_kwdo
-       if n_kwdo != null then
-               n_kwdo.parent = self
-       end
+        _n_kwdo = n_kwdo.as(not null)
+       n_kwdo.parent = self
         _n_block = n_block
        if n_block != null then
                n_block.parent = self
        end
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_kwdo == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa TKwdo
                 _n_kwdo = new_child
            else
-               _n_kwdo = null
+               abort
             end
             return
        end
@@ -5370,47 +4644,39 @@ redef class ADoExpr
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_kwdo != null then
-            v.visit(_n_kwdo)
-        end
+        v.visit(_n_kwdo)
         if _n_block != null then
-            v.visit(_n_block)
+            v.visit(_n_block.as(not null))
         end
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_kwdo != null then
-            v.visit(_n_kwdo)
-        end
+        v.visit(_n_kwdo)
         if _n_block != null then
-            v.visit(_n_block)
+            v.visit(_n_block.as(not null))
         end
     end
 end
 redef class AIfExpr
-    redef meth n_kwif=(n: TKwif)
+    redef meth n_kwif=(n)
     do
         _n_kwif = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_then=(n: PExpr)
+    redef meth n_then=(n)
     do
         _n_then = n
         if n != null then
            n.parent = self
         end
     end
-    redef meth n_else=(n: PExpr)
+    redef meth n_else=(n)
     do
         _n_else = n
         if n != null then
@@ -5421,21 +4687,17 @@ redef class AIfExpr
     private init empty_init do end
 
     init init_aifexpr (
-            n_kwif: TKwif ,
-            n_expr: PExpr ,
-            n_then: PExpr ,
-            n_else: PExpr 
+            n_kwif: nullable TKwif ,
+            n_expr: nullable PExpr ,
+            n_then: nullable PExpr ,
+            n_else: nullable PExpr 
     )
     do
         empty_init
-        _n_kwif = n_kwif
-       if n_kwif != null then
-               n_kwif.parent = self
-       end
-        _n_expr = n_expr
-       if n_expr != null then
-               n_expr.parent = self
-       end
+        _n_kwif = n_kwif.as(not null)
+       n_kwif.parent = self
+        _n_expr = n_expr.as(not null)
+       n_expr.parent = self
         _n_then = n_then
        if n_then != null then
                n_then.parent = self
@@ -5446,16 +4708,15 @@ redef class AIfExpr
        end
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_kwif == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa TKwif
                 _n_kwif = new_child
            else
-               _n_kwif = null
+               abort
             end
             return
        end
@@ -5465,7 +4726,7 @@ redef class AIfExpr
                assert new_child isa PExpr
                 _n_expr = new_child
            else
-               _n_expr = null
+               abort
             end
             return
        end
@@ -5493,128 +4754,95 @@ redef class AIfExpr
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_kwif != null then
-            v.visit(_n_kwif)
-        end
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
+        v.visit(_n_kwif)
+        v.visit(_n_expr)
         if _n_then != null then
-            v.visit(_n_then)
+            v.visit(_n_then.as(not null))
         end
         if _n_else != null then
-            v.visit(_n_else)
+            v.visit(_n_else.as(not null))
         end
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_kwif != null then
-            v.visit(_n_kwif)
-        end
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
+        v.visit(_n_kwif)
+        v.visit(_n_expr)
         if _n_then != null then
-            v.visit(_n_then)
+            v.visit(_n_then.as(not null))
         end
         if _n_else != null then
-            v.visit(_n_else)
+            v.visit(_n_else.as(not null))
         end
     end
 end
 redef class AIfexprExpr
-    redef meth n_kwif=(n: TKwif)
+    redef meth n_kwif=(n)
     do
         _n_kwif = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_kwthen=(n: TKwthen)
+    redef meth n_kwthen=(n)
     do
         _n_kwthen = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_then=(n: PExpr)
+    redef meth n_then=(n)
     do
         _n_then = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_kwelse=(n: TKwelse)
+    redef meth n_kwelse=(n)
     do
         _n_kwelse = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_else=(n: PExpr)
+    redef meth n_else=(n)
     do
         _n_else = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_aifexprexpr (
-            n_kwif: TKwif ,
-            n_expr: PExpr ,
-            n_kwthen: TKwthen ,
-            n_then: PExpr ,
-            n_kwelse: TKwelse ,
-            n_else: PExpr 
+            n_kwif: nullable TKwif ,
+            n_expr: nullable PExpr ,
+            n_kwthen: nullable TKwthen ,
+            n_then: nullable PExpr ,
+            n_kwelse: nullable TKwelse ,
+            n_else: nullable PExpr 
     )
     do
         empty_init
-        _n_kwif = n_kwif
-       if n_kwif != null then
-               n_kwif.parent = self
-       end
-        _n_expr = n_expr
-       if n_expr != null then
-               n_expr.parent = self
-       end
-        _n_kwthen = n_kwthen
-       if n_kwthen != null then
-               n_kwthen.parent = self
-       end
-        _n_then = n_then
-       if n_then != null then
-               n_then.parent = self
-       end
-        _n_kwelse = n_kwelse
-       if n_kwelse != null then
-               n_kwelse.parent = self
-       end
-        _n_else = n_else
-       if n_else != null then
-               n_else.parent = self
-       end
-    end
-
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+        _n_kwif = n_kwif.as(not null)
+       n_kwif.parent = self
+        _n_expr = n_expr.as(not null)
+       n_expr.parent = self
+        _n_kwthen = n_kwthen.as(not null)
+       n_kwthen.parent = self
+        _n_then = n_then.as(not null)
+       n_then.parent = self
+        _n_kwelse = n_kwelse.as(not null)
+       n_kwelse.parent = self
+        _n_else = n_else.as(not null)
+       n_else.parent = self
+    end
+
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_kwif == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa TKwif
                 _n_kwif = new_child
            else
-               _n_kwif = null
+               abort
             end
             return
        end
@@ -5624,7 +4852,7 @@ redef class AIfexprExpr
                assert new_child isa PExpr
                 _n_expr = new_child
            else
-               _n_expr = null
+               abort
             end
             return
        end
@@ -5634,7 +4862,7 @@ redef class AIfexprExpr
                assert new_child isa TKwthen
                 _n_kwthen = new_child
            else
-               _n_kwthen = null
+               abort
             end
             return
        end
@@ -5644,7 +4872,7 @@ redef class AIfexprExpr
                assert new_child isa PExpr
                 _n_then = new_child
            else
-               _n_then = null
+               abort
             end
             return
        end
@@ -5654,7 +4882,7 @@ redef class AIfexprExpr
                assert new_child isa TKwelse
                 _n_kwelse = new_child
            else
-               _n_kwelse = null
+               abort
             end
             return
        end
@@ -5664,7 +4892,7 @@ redef class AIfexprExpr
                assert new_child isa PExpr
                 _n_else = new_child
            else
-               _n_else = null
+               abort
             end
             return
        end
@@ -5672,71 +4900,41 @@ redef class AIfexprExpr
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_kwif != null then
-            v.visit(_n_kwif)
-        end
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
-        if _n_kwthen != null then
-            v.visit(_n_kwthen)
-        end
-        if _n_then != null then
-            v.visit(_n_then)
-        end
-        if _n_kwelse != null then
-            v.visit(_n_kwelse)
-        end
-        if _n_else != null then
-            v.visit(_n_else)
-        end
+        v.visit(_n_kwif)
+        v.visit(_n_expr)
+        v.visit(_n_kwthen)
+        v.visit(_n_then)
+        v.visit(_n_kwelse)
+        v.visit(_n_else)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_kwif != null then
-            v.visit(_n_kwif)
-        end
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
-        if _n_kwthen != null then
-            v.visit(_n_kwthen)
-        end
-        if _n_then != null then
-            v.visit(_n_then)
-        end
-        if _n_kwelse != null then
-            v.visit(_n_kwelse)
-        end
-        if _n_else != null then
-            v.visit(_n_else)
-        end
+        v.visit(_n_kwif)
+        v.visit(_n_expr)
+        v.visit(_n_kwthen)
+        v.visit(_n_then)
+        v.visit(_n_kwelse)
+        v.visit(_n_else)
     end
 end
 redef class AWhileExpr
-    redef meth n_kwwhile=(n: TKwwhile)
+    redef meth n_kwwhile=(n)
     do
         _n_kwwhile = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_kwdo=(n: TKwdo)
+    redef meth n_kwdo=(n)
     do
         _n_kwdo = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_block=(n: PExpr)
+    redef meth n_block=(n)
     do
         _n_block = n
         if n != null then
@@ -5747,41 +4945,34 @@ redef class AWhileExpr
     private init empty_init do end
 
     init init_awhileexpr (
-            n_kwwhile: TKwwhile ,
-            n_expr: PExpr ,
-            n_kwdo: TKwdo ,
-            n_block: PExpr 
+            n_kwwhile: nullable TKwwhile ,
+            n_expr: nullable PExpr ,
+            n_kwdo: nullable TKwdo ,
+            n_block: nullable PExpr 
     )
     do
         empty_init
-        _n_kwwhile = n_kwwhile
-       if n_kwwhile != null then
-               n_kwwhile.parent = self
-       end
-        _n_expr = n_expr
-       if n_expr != null then
-               n_expr.parent = self
-       end
-        _n_kwdo = n_kwdo
-       if n_kwdo != null then
-               n_kwdo.parent = self
-       end
+        _n_kwwhile = n_kwwhile.as(not null)
+       n_kwwhile.parent = self
+        _n_expr = n_expr.as(not null)
+       n_expr.parent = self
+        _n_kwdo = n_kwdo.as(not null)
+       n_kwdo.parent = self
         _n_block = n_block
        if n_block != null then
                n_block.parent = self
        end
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_kwwhile == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa TKwwhile
                 _n_kwwhile = new_child
            else
-               _n_kwwhile = null
+               abort
             end
             return
        end
@@ -5791,7 +4982,7 @@ redef class AWhileExpr
                assert new_child isa PExpr
                 _n_expr = new_child
            else
-               _n_expr = null
+               abort
             end
             return
        end
@@ -5801,7 +4992,7 @@ redef class AWhileExpr
                assert new_child isa TKwdo
                 _n_kwdo = new_child
            else
-               _n_kwdo = null
+               abort
             end
             return
        end
@@ -5819,66 +5010,46 @@ redef class AWhileExpr
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_kwwhile != null then
-            v.visit(_n_kwwhile)
-        end
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
-        if _n_kwdo != null then
-            v.visit(_n_kwdo)
-        end
+        v.visit(_n_kwwhile)
+        v.visit(_n_expr)
+        v.visit(_n_kwdo)
         if _n_block != null then
-            v.visit(_n_block)
+            v.visit(_n_block.as(not null))
         end
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_kwwhile != null then
-            v.visit(_n_kwwhile)
-        end
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
-        if _n_kwdo != null then
-            v.visit(_n_kwdo)
-        end
+        v.visit(_n_kwwhile)
+        v.visit(_n_expr)
+        v.visit(_n_kwdo)
         if _n_block != null then
-            v.visit(_n_block)
+            v.visit(_n_block.as(not null))
         end
     end
 end
 redef class AForExpr
-    redef meth n_kwfor=(n: TKwfor)
+    redef meth n_kwfor=(n)
     do
         _n_kwfor = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_id=(n: TId)
+    redef meth n_id=(n)
     do
         _n_id = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_kwdo=(n: TKwdo)
+    redef meth n_kwdo=(n)
     do
         _n_kwdo = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_block=(n: PExpr)
+    redef meth n_block=(n)
     do
         _n_block = n
         if n != null then
@@ -5889,46 +5060,37 @@ redef class AForExpr
     private init empty_init do end
 
     init init_aforexpr (
-            n_kwfor: TKwfor ,
-            n_id: TId ,
-            n_expr: PExpr ,
-            n_kwdo: TKwdo ,
-            n_block: PExpr 
+            n_kwfor: nullable TKwfor ,
+            n_id: nullable TId ,
+            n_expr: nullable PExpr ,
+            n_kwdo: nullable TKwdo ,
+            n_block: nullable PExpr 
     )
     do
         empty_init
-        _n_kwfor = n_kwfor
-       if n_kwfor != null then
-               n_kwfor.parent = self
-       end
-        _n_id = n_id
-       if n_id != null then
-               n_id.parent = self
-       end
-        _n_expr = n_expr
-       if n_expr != null then
-               n_expr.parent = self
-       end
-        _n_kwdo = n_kwdo
-       if n_kwdo != null then
-               n_kwdo.parent = self
-       end
+        _n_kwfor = n_kwfor.as(not null)
+       n_kwfor.parent = self
+        _n_id = n_id.as(not null)
+       n_id.parent = self
+        _n_expr = n_expr.as(not null)
+       n_expr.parent = self
+        _n_kwdo = n_kwdo.as(not null)
+       n_kwdo.parent = self
         _n_block = n_block
        if n_block != null then
                n_block.parent = self
        end
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_kwfor == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa TKwfor
                 _n_kwfor = new_child
            else
-               _n_kwfor = null
+               abort
             end
             return
        end
@@ -5938,7 +5100,7 @@ redef class AForExpr
                assert new_child isa TId
                 _n_id = new_child
            else
-               _n_id = null
+               abort
             end
             return
        end
@@ -5948,7 +5110,7 @@ redef class AForExpr
                assert new_child isa PExpr
                 _n_expr = new_child
            else
-               _n_expr = null
+               abort
             end
             return
        end
@@ -5958,7 +5120,7 @@ redef class AForExpr
                assert new_child isa TKwdo
                 _n_kwdo = new_child
            else
-               _n_kwdo = null
+               abort
             end
             return
        end
@@ -5976,98 +5138,73 @@ redef class AForExpr
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_kwfor != null then
-            v.visit(_n_kwfor)
-        end
-        if _n_id != null then
-            v.visit(_n_id)
-        end
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
-        if _n_kwdo != null then
-            v.visit(_n_kwdo)
-        end
+        v.visit(_n_kwfor)
+        v.visit(_n_id)
+        v.visit(_n_expr)
+        v.visit(_n_kwdo)
         if _n_block != null then
-            v.visit(_n_block)
+            v.visit(_n_block.as(not null))
         end
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_kwfor != null then
-            v.visit(_n_kwfor)
-        end
-        if _n_id != null then
-            v.visit(_n_id)
-        end
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
-        if _n_kwdo != null then
-            v.visit(_n_kwdo)
-        end
+        v.visit(_n_kwfor)
+        v.visit(_n_id)
+        v.visit(_n_expr)
+        v.visit(_n_kwdo)
         if _n_block != null then
-            v.visit(_n_block)
+            v.visit(_n_block.as(not null))
         end
     end
 end
 redef class AAssertExpr
-    redef meth n_kwassert=(n: TKwassert)
+    redef meth n_kwassert=(n)
     do
         _n_kwassert = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_id=(n: TId)
+    redef meth n_id=(n)
     do
         _n_id = n
         if n != null then
            n.parent = self
         end
     end
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_aassertexpr (
-            n_kwassert: TKwassert ,
-            n_id: TId ,
-            n_expr: PExpr 
+            n_kwassert: nullable TKwassert ,
+            n_id: nullable TId ,
+            n_expr: nullable PExpr 
     )
     do
         empty_init
-        _n_kwassert = n_kwassert
-       if n_kwassert != null then
-               n_kwassert.parent = self
-       end
+        _n_kwassert = n_kwassert.as(not null)
+       n_kwassert.parent = self
         _n_id = n_id
        if n_id != null then
                n_id.parent = self
        end
-        _n_expr = n_expr
-       if n_expr != null then
-               n_expr.parent = self
-       end
+        _n_expr = n_expr.as(not null)
+       n_expr.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_kwassert == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa TKwassert
                 _n_kwassert = new_child
            else
-               _n_kwassert = null
+               abort
             end
             return
        end
@@ -6087,7 +5224,7 @@ redef class AAssertExpr
                assert new_child isa PExpr
                 _n_expr = new_child
            else
-               _n_expr = null
+               abort
             end
             return
        end
@@ -6095,74 +5232,57 @@ redef class AAssertExpr
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_kwassert != null then
-            v.visit(_n_kwassert)
-        end
+        v.visit(_n_kwassert)
         if _n_id != null then
-            v.visit(_n_id)
-        end
-        if _n_expr != null then
-            v.visit(_n_expr)
+            v.visit(_n_id.as(not null))
         end
+        v.visit(_n_expr)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_kwassert != null then
-            v.visit(_n_kwassert)
-        end
+        v.visit(_n_kwassert)
         if _n_id != null then
-            v.visit(_n_id)
-        end
-        if _n_expr != null then
-            v.visit(_n_expr)
+            v.visit(_n_id.as(not null))
         end
+        v.visit(_n_expr)
     end
 end
 redef class AOnceExpr
-    redef meth n_kwonce=(n: TKwonce)
+    redef meth n_kwonce=(n)
     do
         _n_kwonce = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_aonceexpr (
-            n_kwonce: TKwonce ,
-            n_expr: PExpr 
+            n_kwonce: nullable TKwonce ,
+            n_expr: nullable PExpr 
     )
     do
         empty_init
-        _n_kwonce = n_kwonce
-       if n_kwonce != null then
-               n_kwonce.parent = self
-       end
-        _n_expr = n_expr
-       if n_expr != null then
-               n_expr.parent = self
-       end
+        _n_kwonce = n_kwonce.as(not null)
+       n_kwonce.parent = self
+        _n_expr = n_expr.as(not null)
+       n_expr.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_kwonce == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa TKwonce
                 _n_kwonce = new_child
            else
-               _n_kwonce = null
+               abort
             end
             return
        end
@@ -6172,7 +5292,7 @@ redef class AOnceExpr
                assert new_child isa PExpr
                 _n_expr = new_child
            else
-               _n_expr = null
+               abort
             end
             return
        end
@@ -6180,56 +5300,43 @@ redef class AOnceExpr
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_kwonce != null then
-            v.visit(_n_kwonce)
-        end
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
+        v.visit(_n_kwonce)
+        v.visit(_n_expr)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_kwonce != null then
-            v.visit(_n_kwonce)
-        end
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
+        v.visit(_n_kwonce)
+        v.visit(_n_expr)
     end
 end
 redef class ASendExpr
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_asendexpr (
-            n_expr: PExpr 
+            n_expr: nullable PExpr 
     )
     do
         empty_init
-        _n_expr = n_expr
-       if n_expr != null then
-               n_expr.parent = self
-       end
+        _n_expr = n_expr.as(not null)
+       n_expr.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa PExpr
                 _n_expr = new_child
            else
-               _n_expr = null
+               abort
             end
             return
        end
@@ -6237,62 +5344,49 @@ redef class ASendExpr
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
+        v.visit(_n_expr)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
+        v.visit(_n_expr)
     end
 end
 redef class ABinopExpr
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_expr2=(n: PExpr)
+    redef meth n_expr2=(n)
     do
         _n_expr2 = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_abinopexpr (
-            n_expr: PExpr ,
-            n_expr2: PExpr 
+            n_expr: nullable PExpr ,
+            n_expr2: nullable PExpr 
     )
     do
         empty_init
-        _n_expr = n_expr
-       if n_expr != null then
-               n_expr.parent = self
-       end
-        _n_expr2 = n_expr2
-       if n_expr2 != null then
-               n_expr2.parent = self
-       end
+        _n_expr = n_expr.as(not null)
+       n_expr.parent = self
+        _n_expr2 = n_expr2.as(not null)
+       n_expr2.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa PExpr
                 _n_expr = new_child
            else
-               _n_expr = null
+               abort
             end
             return
        end
@@ -6302,7 +5396,7 @@ redef class ABinopExpr
                assert new_child isa PExpr
                 _n_expr2 = new_child
            else
-               _n_expr2 = null
+               abort
             end
             return
        end
@@ -6310,68 +5404,51 @@ redef class ABinopExpr
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
-        if _n_expr2 != null then
-            v.visit(_n_expr2)
-        end
+        v.visit(_n_expr)
+        v.visit(_n_expr2)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
-        if _n_expr2 != null then
-            v.visit(_n_expr2)
-        end
+        v.visit(_n_expr)
+        v.visit(_n_expr2)
     end
 end
 redef class AOrExpr
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_expr2=(n: PExpr)
+    redef meth n_expr2=(n)
     do
         _n_expr2 = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_aorexpr (
-            n_expr: PExpr ,
-            n_expr2: PExpr 
+            n_expr: nullable PExpr ,
+            n_expr2: nullable PExpr 
     )
     do
         empty_init
-        _n_expr = n_expr
-       if n_expr != null then
-               n_expr.parent = self
-       end
-        _n_expr2 = n_expr2
-       if n_expr2 != null then
-               n_expr2.parent = self
-       end
+        _n_expr = n_expr.as(not null)
+       n_expr.parent = self
+        _n_expr2 = n_expr2.as(not null)
+       n_expr2.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa PExpr
                 _n_expr = new_child
            else
-               _n_expr = null
+               abort
             end
             return
        end
@@ -6381,7 +5458,7 @@ redef class AOrExpr
                assert new_child isa PExpr
                 _n_expr2 = new_child
            else
-               _n_expr2 = null
+               abort
             end
             return
        end
@@ -6389,68 +5466,51 @@ redef class AOrExpr
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
-        if _n_expr2 != null then
-            v.visit(_n_expr2)
-        end
+        v.visit(_n_expr)
+        v.visit(_n_expr2)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
-        if _n_expr2 != null then
-            v.visit(_n_expr2)
-        end
+        v.visit(_n_expr)
+        v.visit(_n_expr2)
     end
 end
 redef class AAndExpr
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_expr2=(n: PExpr)
+    redef meth n_expr2=(n)
     do
         _n_expr2 = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_aandexpr (
-            n_expr: PExpr ,
-            n_expr2: PExpr 
+            n_expr: nullable PExpr ,
+            n_expr2: nullable PExpr 
     )
     do
         empty_init
-        _n_expr = n_expr
-       if n_expr != null then
-               n_expr.parent = self
-       end
-        _n_expr2 = n_expr2
-       if n_expr2 != null then
-               n_expr2.parent = self
-       end
+        _n_expr = n_expr.as(not null)
+       n_expr.parent = self
+        _n_expr2 = n_expr2.as(not null)
+       n_expr2.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa PExpr
                 _n_expr = new_child
            else
-               _n_expr = null
+               abort
             end
             return
        end
@@ -6460,7 +5520,7 @@ redef class AAndExpr
                assert new_child isa PExpr
                 _n_expr2 = new_child
            else
-               _n_expr2 = null
+               abort
             end
             return
        end
@@ -6468,68 +5528,51 @@ redef class AAndExpr
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
-        if _n_expr2 != null then
-            v.visit(_n_expr2)
-        end
+        v.visit(_n_expr)
+        v.visit(_n_expr2)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
-        if _n_expr2 != null then
-            v.visit(_n_expr2)
-        end
+        v.visit(_n_expr)
+        v.visit(_n_expr2)
     end
 end
 redef class ANotExpr
-    redef meth n_kwnot=(n: TKwnot)
+    redef meth n_kwnot=(n)
     do
         _n_kwnot = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_anotexpr (
-            n_kwnot: TKwnot ,
-            n_expr: PExpr 
+            n_kwnot: nullable TKwnot ,
+            n_expr: nullable PExpr 
     )
     do
         empty_init
-        _n_kwnot = n_kwnot
-       if n_kwnot != null then
-               n_kwnot.parent = self
-       end
-        _n_expr = n_expr
-       if n_expr != null then
-               n_expr.parent = self
-       end
+        _n_kwnot = n_kwnot.as(not null)
+       n_kwnot.parent = self
+        _n_expr = n_expr.as(not null)
+       n_expr.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_kwnot == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa TKwnot
                 _n_kwnot = new_child
            else
-               _n_kwnot = null
+               abort
             end
             return
        end
@@ -6539,7 +5582,7 @@ redef class ANotExpr
                assert new_child isa PExpr
                 _n_expr = new_child
            else
-               _n_expr = null
+               abort
             end
             return
        end
@@ -6547,68 +5590,51 @@ redef class ANotExpr
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_kwnot != null then
-            v.visit(_n_kwnot)
-        end
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
+        v.visit(_n_kwnot)
+        v.visit(_n_expr)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_kwnot != null then
-            v.visit(_n_kwnot)
-        end
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
+        v.visit(_n_kwnot)
+        v.visit(_n_expr)
     end
 end
 redef class AEqExpr
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_expr2=(n: PExpr)
+    redef meth n_expr2=(n)
     do
         _n_expr2 = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_aeqexpr (
-            n_expr: PExpr ,
-            n_expr2: PExpr 
+            n_expr: nullable PExpr ,
+            n_expr2: nullable PExpr 
     )
     do
         empty_init
-        _n_expr = n_expr
-       if n_expr != null then
-               n_expr.parent = self
-       end
-        _n_expr2 = n_expr2
-       if n_expr2 != null then
-               n_expr2.parent = self
-       end
+        _n_expr = n_expr.as(not null)
+       n_expr.parent = self
+        _n_expr2 = n_expr2.as(not null)
+       n_expr2.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa PExpr
                 _n_expr = new_child
            else
-               _n_expr = null
+               abort
             end
             return
        end
@@ -6618,7 +5644,7 @@ redef class AEqExpr
                assert new_child isa PExpr
                 _n_expr2 = new_child
            else
-               _n_expr2 = null
+               abort
             end
             return
        end
@@ -6626,68 +5652,51 @@ redef class AEqExpr
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
-        if _n_expr2 != null then
-            v.visit(_n_expr2)
-        end
+        v.visit(_n_expr)
+        v.visit(_n_expr2)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
-        if _n_expr2 != null then
-            v.visit(_n_expr2)
-        end
+        v.visit(_n_expr)
+        v.visit(_n_expr2)
     end
 end
 redef class AEeExpr
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_expr2=(n: PExpr)
+    redef meth n_expr2=(n)
     do
         _n_expr2 = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_aeeexpr (
-            n_expr: PExpr ,
-            n_expr2: PExpr 
+            n_expr: nullable PExpr ,
+            n_expr2: nullable PExpr 
     )
     do
         empty_init
-        _n_expr = n_expr
-       if n_expr != null then
-               n_expr.parent = self
-       end
-        _n_expr2 = n_expr2
-       if n_expr2 != null then
-               n_expr2.parent = self
-       end
+        _n_expr = n_expr.as(not null)
+       n_expr.parent = self
+        _n_expr2 = n_expr2.as(not null)
+       n_expr2.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa PExpr
                 _n_expr = new_child
            else
-               _n_expr = null
+               abort
             end
             return
        end
@@ -6697,7 +5706,7 @@ redef class AEeExpr
                assert new_child isa PExpr
                 _n_expr2 = new_child
            else
-               _n_expr2 = null
+               abort
             end
             return
        end
@@ -6705,68 +5714,51 @@ redef class AEeExpr
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
-        if _n_expr2 != null then
-            v.visit(_n_expr2)
-        end
+        v.visit(_n_expr)
+        v.visit(_n_expr2)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
-        if _n_expr2 != null then
-            v.visit(_n_expr2)
-        end
+        v.visit(_n_expr)
+        v.visit(_n_expr2)
     end
 end
 redef class ANeExpr
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_expr2=(n: PExpr)
+    redef meth n_expr2=(n)
     do
         _n_expr2 = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_aneexpr (
-            n_expr: PExpr ,
-            n_expr2: PExpr 
+            n_expr: nullable PExpr ,
+            n_expr2: nullable PExpr 
     )
     do
         empty_init
-        _n_expr = n_expr
-       if n_expr != null then
-               n_expr.parent = self
-       end
-        _n_expr2 = n_expr2
-       if n_expr2 != null then
-               n_expr2.parent = self
-       end
+        _n_expr = n_expr.as(not null)
+       n_expr.parent = self
+        _n_expr2 = n_expr2.as(not null)
+       n_expr2.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa PExpr
                 _n_expr = new_child
            else
-               _n_expr = null
+               abort
             end
             return
        end
@@ -6776,7 +5768,7 @@ redef class ANeExpr
                assert new_child isa PExpr
                 _n_expr2 = new_child
            else
-               _n_expr2 = null
+               abort
             end
             return
        end
@@ -6784,68 +5776,51 @@ redef class ANeExpr
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
-        if _n_expr2 != null then
-            v.visit(_n_expr2)
-        end
+        v.visit(_n_expr)
+        v.visit(_n_expr2)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
-        if _n_expr2 != null then
-            v.visit(_n_expr2)
-        end
+        v.visit(_n_expr)
+        v.visit(_n_expr2)
     end
 end
 redef class ALtExpr
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_expr2=(n: PExpr)
+    redef meth n_expr2=(n)
     do
         _n_expr2 = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_altexpr (
-            n_expr: PExpr ,
-            n_expr2: PExpr 
+            n_expr: nullable PExpr ,
+            n_expr2: nullable PExpr 
     )
     do
         empty_init
-        _n_expr = n_expr
-       if n_expr != null then
-               n_expr.parent = self
-       end
-        _n_expr2 = n_expr2
-       if n_expr2 != null then
-               n_expr2.parent = self
-       end
+        _n_expr = n_expr.as(not null)
+       n_expr.parent = self
+        _n_expr2 = n_expr2.as(not null)
+       n_expr2.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa PExpr
                 _n_expr = new_child
            else
-               _n_expr = null
+               abort
             end
             return
        end
@@ -6855,7 +5830,7 @@ redef class ALtExpr
                assert new_child isa PExpr
                 _n_expr2 = new_child
            else
-               _n_expr2 = null
+               abort
             end
             return
        end
@@ -6863,68 +5838,51 @@ redef class ALtExpr
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
-        if _n_expr2 != null then
-            v.visit(_n_expr2)
-        end
+        v.visit(_n_expr)
+        v.visit(_n_expr2)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
-        if _n_expr2 != null then
-            v.visit(_n_expr2)
-        end
+        v.visit(_n_expr)
+        v.visit(_n_expr2)
     end
 end
 redef class ALeExpr
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_expr2=(n: PExpr)
+    redef meth n_expr2=(n)
     do
         _n_expr2 = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_aleexpr (
-            n_expr: PExpr ,
-            n_expr2: PExpr 
+            n_expr: nullable PExpr ,
+            n_expr2: nullable PExpr 
     )
     do
         empty_init
-        _n_expr = n_expr
-       if n_expr != null then
-               n_expr.parent = self
-       end
-        _n_expr2 = n_expr2
-       if n_expr2 != null then
-               n_expr2.parent = self
-       end
+        _n_expr = n_expr.as(not null)
+       n_expr.parent = self
+        _n_expr2 = n_expr2.as(not null)
+       n_expr2.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa PExpr
                 _n_expr = new_child
            else
-               _n_expr = null
+               abort
             end
             return
        end
@@ -6934,7 +5892,7 @@ redef class ALeExpr
                assert new_child isa PExpr
                 _n_expr2 = new_child
            else
-               _n_expr2 = null
+               abort
             end
             return
        end
@@ -6942,68 +5900,51 @@ redef class ALeExpr
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
-        if _n_expr2 != null then
-            v.visit(_n_expr2)
-        end
+        v.visit(_n_expr)
+        v.visit(_n_expr2)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
-        if _n_expr2 != null then
-            v.visit(_n_expr2)
-        end
+        v.visit(_n_expr)
+        v.visit(_n_expr2)
     end
 end
 redef class AGtExpr
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_expr2=(n: PExpr)
+    redef meth n_expr2=(n)
     do
         _n_expr2 = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_agtexpr (
-            n_expr: PExpr ,
-            n_expr2: PExpr 
+            n_expr: nullable PExpr ,
+            n_expr2: nullable PExpr 
     )
     do
         empty_init
-        _n_expr = n_expr
-       if n_expr != null then
-               n_expr.parent = self
-       end
-        _n_expr2 = n_expr2
-       if n_expr2 != null then
-               n_expr2.parent = self
-       end
+        _n_expr = n_expr.as(not null)
+       n_expr.parent = self
+        _n_expr2 = n_expr2.as(not null)
+       n_expr2.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa PExpr
                 _n_expr = new_child
            else
-               _n_expr = null
+               abort
             end
             return
        end
@@ -7013,7 +5954,7 @@ redef class AGtExpr
                assert new_child isa PExpr
                 _n_expr2 = new_child
            else
-               _n_expr2 = null
+               abort
             end
             return
        end
@@ -7021,68 +5962,51 @@ redef class AGtExpr
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
-        if _n_expr2 != null then
-            v.visit(_n_expr2)
-        end
+        v.visit(_n_expr)
+        v.visit(_n_expr2)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
-        if _n_expr2 != null then
-            v.visit(_n_expr2)
-        end
+        v.visit(_n_expr)
+        v.visit(_n_expr2)
     end
 end
 redef class AGeExpr
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_expr2=(n: PExpr)
+    redef meth n_expr2=(n)
     do
         _n_expr2 = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_ageexpr (
-            n_expr: PExpr ,
-            n_expr2: PExpr 
+            n_expr: nullable PExpr ,
+            n_expr2: nullable PExpr 
     )
     do
         empty_init
-        _n_expr = n_expr
-       if n_expr != null then
-               n_expr.parent = self
-       end
-        _n_expr2 = n_expr2
-       if n_expr2 != null then
-               n_expr2.parent = self
-       end
+        _n_expr = n_expr.as(not null)
+       n_expr.parent = self
+        _n_expr2 = n_expr2.as(not null)
+       n_expr2.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa PExpr
                 _n_expr = new_child
            else
-               _n_expr = null
+               abort
             end
             return
        end
@@ -7092,7 +6016,7 @@ redef class AGeExpr
                assert new_child isa PExpr
                 _n_expr2 = new_child
            else
-               _n_expr2 = null
+               abort
             end
             return
        end
@@ -7100,68 +6024,51 @@ redef class AGeExpr
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
-        if _n_expr2 != null then
-            v.visit(_n_expr2)
-        end
+        v.visit(_n_expr)
+        v.visit(_n_expr2)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
-        if _n_expr2 != null then
-            v.visit(_n_expr2)
-        end
+        v.visit(_n_expr)
+        v.visit(_n_expr2)
     end
 end
 redef class AIsaExpr
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_type=(n: PType)
+    redef meth n_type=(n)
     do
         _n_type = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_aisaexpr (
-            n_expr: PExpr ,
-            n_type: PType 
+            n_expr: nullable PExpr ,
+            n_type: nullable PType 
     )
     do
         empty_init
-        _n_expr = n_expr
-       if n_expr != null then
-               n_expr.parent = self
-       end
-        _n_type = n_type
-       if n_type != null then
-               n_type.parent = self
-       end
+        _n_expr = n_expr.as(not null)
+       n_expr.parent = self
+        _n_type = n_type.as(not null)
+       n_type.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa PExpr
                 _n_expr = new_child
            else
-               _n_expr = null
+               abort
             end
             return
        end
@@ -7171,7 +6078,7 @@ redef class AIsaExpr
                assert new_child isa PType
                 _n_type = new_child
            else
-               _n_type = null
+               abort
             end
             return
        end
@@ -7179,68 +6086,51 @@ redef class AIsaExpr
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
-        if _n_type != null then
-            v.visit(_n_type)
-        end
+        v.visit(_n_expr)
+        v.visit(_n_type)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
-        if _n_type != null then
-            v.visit(_n_type)
-        end
+        v.visit(_n_expr)
+        v.visit(_n_type)
     end
 end
 redef class APlusExpr
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_expr2=(n: PExpr)
+    redef meth n_expr2=(n)
     do
         _n_expr2 = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_aplusexpr (
-            n_expr: PExpr ,
-            n_expr2: PExpr 
+            n_expr: nullable PExpr ,
+            n_expr2: nullable PExpr 
     )
     do
         empty_init
-        _n_expr = n_expr
-       if n_expr != null then
-               n_expr.parent = self
-       end
-        _n_expr2 = n_expr2
-       if n_expr2 != null then
-               n_expr2.parent = self
-       end
+        _n_expr = n_expr.as(not null)
+       n_expr.parent = self
+        _n_expr2 = n_expr2.as(not null)
+       n_expr2.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa PExpr
                 _n_expr = new_child
            else
-               _n_expr = null
+               abort
             end
             return
        end
@@ -7250,7 +6140,7 @@ redef class APlusExpr
                assert new_child isa PExpr
                 _n_expr2 = new_child
            else
-               _n_expr2 = null
+               abort
             end
             return
        end
@@ -7258,68 +6148,51 @@ redef class APlusExpr
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
-        if _n_expr2 != null then
-            v.visit(_n_expr2)
-        end
+        v.visit(_n_expr)
+        v.visit(_n_expr2)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
-        if _n_expr2 != null then
-            v.visit(_n_expr2)
-        end
+        v.visit(_n_expr)
+        v.visit(_n_expr2)
     end
 end
 redef class AMinusExpr
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_expr2=(n: PExpr)
+    redef meth n_expr2=(n)
     do
         _n_expr2 = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_aminusexpr (
-            n_expr: PExpr ,
-            n_expr2: PExpr 
+            n_expr: nullable PExpr ,
+            n_expr2: nullable PExpr 
     )
     do
         empty_init
-        _n_expr = n_expr
-       if n_expr != null then
-               n_expr.parent = self
-       end
-        _n_expr2 = n_expr2
-       if n_expr2 != null then
-               n_expr2.parent = self
-       end
+        _n_expr = n_expr.as(not null)
+       n_expr.parent = self
+        _n_expr2 = n_expr2.as(not null)
+       n_expr2.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa PExpr
                 _n_expr = new_child
            else
-               _n_expr = null
+               abort
             end
             return
        end
@@ -7329,7 +6202,7 @@ redef class AMinusExpr
                assert new_child isa PExpr
                 _n_expr2 = new_child
            else
-               _n_expr2 = null
+               abort
             end
             return
        end
@@ -7337,68 +6210,51 @@ redef class AMinusExpr
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
-        if _n_expr2 != null then
-            v.visit(_n_expr2)
-        end
+        v.visit(_n_expr)
+        v.visit(_n_expr2)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
-        if _n_expr2 != null then
-            v.visit(_n_expr2)
-        end
+        v.visit(_n_expr)
+        v.visit(_n_expr2)
     end
 end
 redef class AStarshipExpr
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_expr2=(n: PExpr)
+    redef meth n_expr2=(n)
     do
         _n_expr2 = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_astarshipexpr (
-            n_expr: PExpr ,
-            n_expr2: PExpr 
+            n_expr: nullable PExpr ,
+            n_expr2: nullable PExpr 
     )
     do
         empty_init
-        _n_expr = n_expr
-       if n_expr != null then
-               n_expr.parent = self
-       end
-        _n_expr2 = n_expr2
-       if n_expr2 != null then
-               n_expr2.parent = self
-       end
+        _n_expr = n_expr.as(not null)
+       n_expr.parent = self
+        _n_expr2 = n_expr2.as(not null)
+       n_expr2.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa PExpr
                 _n_expr = new_child
            else
-               _n_expr = null
+               abort
             end
             return
        end
@@ -7408,7 +6264,7 @@ redef class AStarshipExpr
                assert new_child isa PExpr
                 _n_expr2 = new_child
            else
-               _n_expr2 = null
+               abort
             end
             return
        end
@@ -7416,68 +6272,51 @@ redef class AStarshipExpr
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
-        if _n_expr2 != null then
-            v.visit(_n_expr2)
-        end
+        v.visit(_n_expr)
+        v.visit(_n_expr2)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
-        if _n_expr2 != null then
-            v.visit(_n_expr2)
-        end
+        v.visit(_n_expr)
+        v.visit(_n_expr2)
     end
 end
 redef class AStarExpr
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_expr2=(n: PExpr)
+    redef meth n_expr2=(n)
     do
         _n_expr2 = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_astarexpr (
-            n_expr: PExpr ,
-            n_expr2: PExpr 
+            n_expr: nullable PExpr ,
+            n_expr2: nullable PExpr 
     )
     do
         empty_init
-        _n_expr = n_expr
-       if n_expr != null then
-               n_expr.parent = self
-       end
-        _n_expr2 = n_expr2
-       if n_expr2 != null then
-               n_expr2.parent = self
-       end
+        _n_expr = n_expr.as(not null)
+       n_expr.parent = self
+        _n_expr2 = n_expr2.as(not null)
+       n_expr2.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa PExpr
                 _n_expr = new_child
            else
-               _n_expr = null
+               abort
             end
             return
        end
@@ -7487,7 +6326,7 @@ redef class AStarExpr
                assert new_child isa PExpr
                 _n_expr2 = new_child
            else
-               _n_expr2 = null
+               abort
             end
             return
        end
@@ -7495,68 +6334,51 @@ redef class AStarExpr
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
-        if _n_expr2 != null then
-            v.visit(_n_expr2)
-        end
+        v.visit(_n_expr)
+        v.visit(_n_expr2)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
-        if _n_expr2 != null then
-            v.visit(_n_expr2)
-        end
+        v.visit(_n_expr)
+        v.visit(_n_expr2)
     end
 end
 redef class ASlashExpr
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_expr2=(n: PExpr)
+    redef meth n_expr2=(n)
     do
         _n_expr2 = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_aslashexpr (
-            n_expr: PExpr ,
-            n_expr2: PExpr 
+            n_expr: nullable PExpr ,
+            n_expr2: nullable PExpr 
     )
     do
         empty_init
-        _n_expr = n_expr
-       if n_expr != null then
-               n_expr.parent = self
-       end
-        _n_expr2 = n_expr2
-       if n_expr2 != null then
-               n_expr2.parent = self
-       end
+        _n_expr = n_expr.as(not null)
+       n_expr.parent = self
+        _n_expr2 = n_expr2.as(not null)
+       n_expr2.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa PExpr
                 _n_expr = new_child
            else
-               _n_expr = null
+               abort
             end
             return
        end
@@ -7566,7 +6388,7 @@ redef class ASlashExpr
                assert new_child isa PExpr
                 _n_expr2 = new_child
            else
-               _n_expr2 = null
+               abort
             end
             return
        end
@@ -7574,68 +6396,51 @@ redef class ASlashExpr
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
-        if _n_expr2 != null then
-            v.visit(_n_expr2)
-        end
+        v.visit(_n_expr)
+        v.visit(_n_expr2)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
-        if _n_expr2 != null then
-            v.visit(_n_expr2)
-        end
+        v.visit(_n_expr)
+        v.visit(_n_expr2)
     end
 end
 redef class APercentExpr
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_expr2=(n: PExpr)
+    redef meth n_expr2=(n)
     do
         _n_expr2 = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_apercentexpr (
-            n_expr: PExpr ,
-            n_expr2: PExpr 
+            n_expr: nullable PExpr ,
+            n_expr2: nullable PExpr 
     )
     do
         empty_init
-        _n_expr = n_expr
-       if n_expr != null then
-               n_expr.parent = self
-       end
-        _n_expr2 = n_expr2
-       if n_expr2 != null then
-               n_expr2.parent = self
-       end
+        _n_expr = n_expr.as(not null)
+       n_expr.parent = self
+        _n_expr2 = n_expr2.as(not null)
+       n_expr2.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa PExpr
                 _n_expr = new_child
            else
-               _n_expr = null
+               abort
             end
             return
        end
@@ -7645,7 +6450,7 @@ redef class APercentExpr
                assert new_child isa PExpr
                 _n_expr2 = new_child
            else
-               _n_expr2 = null
+               abort
             end
             return
        end
@@ -7653,68 +6458,51 @@ redef class APercentExpr
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
-        if _n_expr2 != null then
-            v.visit(_n_expr2)
-        end
+        v.visit(_n_expr)
+        v.visit(_n_expr2)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
-        if _n_expr2 != null then
-            v.visit(_n_expr2)
-        end
+        v.visit(_n_expr)
+        v.visit(_n_expr2)
     end
 end
 redef class AUminusExpr
-    redef meth n_minus=(n: TMinus)
+    redef meth n_minus=(n)
     do
         _n_minus = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_auminusexpr (
-            n_minus: TMinus ,
-            n_expr: PExpr 
+            n_minus: nullable TMinus ,
+            n_expr: nullable PExpr 
     )
     do
         empty_init
-        _n_minus = n_minus
-       if n_minus != null then
-               n_minus.parent = self
-       end
-        _n_expr = n_expr
-       if n_expr != null then
-               n_expr.parent = self
-       end
+        _n_minus = n_minus.as(not null)
+       n_minus.parent = self
+        _n_expr = n_expr.as(not null)
+       n_expr.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_minus == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa TMinus
                 _n_minus = new_child
            else
-               _n_minus = null
+               abort
             end
             return
        end
@@ -7724,7 +6512,7 @@ redef class AUminusExpr
                assert new_child isa PExpr
                 _n_expr = new_child
            else
-               _n_expr = null
+               abort
             end
             return
        end
@@ -7732,40 +6520,28 @@ redef class AUminusExpr
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_minus != null then
-            v.visit(_n_minus)
-        end
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
+        v.visit(_n_minus)
+        v.visit(_n_expr)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_minus != null then
-            v.visit(_n_minus)
-        end
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
+        v.visit(_n_minus)
+        v.visit(_n_expr)
     end
 end
 redef class ANewExpr
-    redef meth n_kwnew=(n: TKwnew)
+    redef meth n_kwnew=(n)
     do
         _n_kwnew = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_type=(n: PType)
+    redef meth n_type=(n)
     do
         _n_type = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_id=(n: TId)
+    redef meth n_id=(n)
     do
         _n_id = n
         if n != null then
@@ -7776,26 +6552,21 @@ redef class ANewExpr
     private init empty_init do end
 
     init init_anewexpr (
-            n_kwnew: TKwnew ,
-            n_type: PType ,
-            n_id: TId ,
+            n_kwnew: nullable TKwnew ,
+            n_type: nullable PType ,
+            n_id: nullable TId ,
             n_args: Collection[Object]  # Should be Collection[PExpr]
     )
     do
         empty_init
-        _n_kwnew = n_kwnew
-       if n_kwnew != null then
-               n_kwnew.parent = self
-       end
-        _n_type = n_type
-       if n_type != null then
-               n_type.parent = self
-       end
+        _n_kwnew = n_kwnew.as(not null)
+       n_kwnew.parent = self
+        _n_type = n_type.as(not null)
+       n_type.parent = self
         _n_id = n_id
        if n_id != null then
                n_id.parent = self
        end
-        _n_args = new List[PExpr]
        for n in n_args do
                assert n isa PExpr
                _n_args.add(n)
@@ -7803,16 +6574,15 @@ redef class ANewExpr
        end
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_kwnew == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa TKwnew
                 _n_kwnew = new_child
            else
-               _n_kwnew = null
+               abort
             end
             return
        end
@@ -7822,7 +6592,7 @@ redef class ANewExpr
                assert new_child isa PType
                 _n_type = new_child
            else
-               _n_type = null
+               abort
             end
             return
        end
@@ -7852,14 +6622,10 @@ redef class ANewExpr
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_kwnew != null then
-            v.visit(_n_kwnew)
-        end
-        if _n_type != null then
-            v.visit(_n_type)
-        end
+        v.visit(_n_kwnew)
+        v.visit(_n_type)
         if _n_id != null then
-            v.visit(_n_id)
+            v.visit(_n_id.as(not null))
         end
             for n in _n_args do
                 v.visit(n)
@@ -7868,14 +6634,10 @@ redef class ANewExpr
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_kwnew != null then
-            v.visit(_n_kwnew)
-        end
-        if _n_type != null then
-            v.visit(_n_type)
-        end
+        v.visit(_n_kwnew)
+        v.visit(_n_type)
         if _n_id != null then
-            v.visit(_n_id)
+            v.visit(_n_id.as(not null))
         end
        do
            var i = _n_args.length
@@ -7887,49 +6649,40 @@ redef class ANewExpr
     end
 end
 redef class AAttrExpr
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_id=(n: TAttrid)
+    redef meth n_id=(n)
     do
         _n_id = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_aattrexpr (
-            n_expr: PExpr ,
-            n_id: TAttrid 
+            n_expr: nullable PExpr ,
+            n_id: nullable TAttrid 
     )
     do
         empty_init
-        _n_expr = n_expr
-       if n_expr != null then
-               n_expr.parent = self
-       end
-        _n_id = n_id
-       if n_id != null then
-               n_id.parent = self
-       end
+        _n_expr = n_expr.as(not null)
+       n_expr.parent = self
+        _n_id = n_id.as(not null)
+       n_id.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa PExpr
                 _n_expr = new_child
            else
-               _n_expr = null
+               abort
             end
             return
        end
@@ -7939,7 +6692,7 @@ redef class AAttrExpr
                assert new_child isa TAttrid
                 _n_id = new_child
            else
-               _n_id = null
+               abort
             end
             return
        end
@@ -7947,92 +6700,67 @@ redef class AAttrExpr
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
-        if _n_id != null then
-            v.visit(_n_id)
-        end
+        v.visit(_n_expr)
+        v.visit(_n_id)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
-        if _n_id != null then
-            v.visit(_n_id)
-        end
+        v.visit(_n_expr)
+        v.visit(_n_id)
     end
 end
 redef class AAttrAssignExpr
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_id=(n: TAttrid)
+    redef meth n_id=(n)
     do
         _n_id = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_assign=(n: TAssign)
+    redef meth n_assign=(n)
     do
         _n_assign = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_value=(n: PExpr)
+    redef meth n_value=(n)
     do
         _n_value = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_aattrassignexpr (
-            n_expr: PExpr ,
-            n_id: TAttrid ,
-            n_assign: TAssign ,
-            n_value: PExpr 
+            n_expr: nullable PExpr ,
+            n_id: nullable TAttrid ,
+            n_assign: nullable TAssign ,
+            n_value: nullable PExpr 
     )
     do
         empty_init
-        _n_expr = n_expr
-       if n_expr != null then
-               n_expr.parent = self
-       end
-        _n_id = n_id
-       if n_id != null then
-               n_id.parent = self
-       end
-        _n_assign = n_assign
-       if n_assign != null then
-               n_assign.parent = self
-       end
-        _n_value = n_value
-       if n_value != null then
-               n_value.parent = self
-       end
+        _n_expr = n_expr.as(not null)
+       n_expr.parent = self
+        _n_id = n_id.as(not null)
+       n_id.parent = self
+        _n_assign = n_assign.as(not null)
+       n_assign.parent = self
+        _n_value = n_value.as(not null)
+       n_value.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa PExpr
                 _n_expr = new_child
            else
-               _n_expr = null
+               abort
             end
             return
        end
@@ -8042,7 +6770,7 @@ redef class AAttrAssignExpr
                assert new_child isa TAttrid
                 _n_id = new_child
            else
-               _n_id = null
+               abort
             end
             return
        end
@@ -8052,7 +6780,7 @@ redef class AAttrAssignExpr
                assert new_child isa TAssign
                 _n_assign = new_child
            else
-               _n_assign = null
+               abort
             end
             return
        end
@@ -8062,7 +6790,7 @@ redef class AAttrAssignExpr
                assert new_child isa PExpr
                 _n_value = new_child
            else
-               _n_value = null
+               abort
             end
             return
        end
@@ -8070,104 +6798,71 @@ redef class AAttrAssignExpr
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
-        if _n_id != null then
-            v.visit(_n_id)
-        end
-        if _n_assign != null then
-            v.visit(_n_assign)
-        end
-        if _n_value != null then
-            v.visit(_n_value)
-        end
+        v.visit(_n_expr)
+        v.visit(_n_id)
+        v.visit(_n_assign)
+        v.visit(_n_value)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
-        if _n_id != null then
-            v.visit(_n_id)
-        end
-        if _n_assign != null then
-            v.visit(_n_assign)
-        end
-        if _n_value != null then
-            v.visit(_n_value)
-        end
+        v.visit(_n_expr)
+        v.visit(_n_id)
+        v.visit(_n_assign)
+        v.visit(_n_value)
     end
 end
 redef class AAttrReassignExpr
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_id=(n: TAttrid)
+    redef meth n_id=(n)
     do
         _n_id = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_assign_op=(n: PAssignOp)
+    redef meth n_assign_op=(n)
     do
         _n_assign_op = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_value=(n: PExpr)
+    redef meth n_value=(n)
     do
         _n_value = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_aattrreassignexpr (
-            n_expr: PExpr ,
-            n_id: TAttrid ,
-            n_assign_op: PAssignOp ,
-            n_value: PExpr 
+            n_expr: nullable PExpr ,
+            n_id: nullable TAttrid ,
+            n_assign_op: nullable PAssignOp ,
+            n_value: nullable PExpr 
     )
     do
         empty_init
-        _n_expr = n_expr
-       if n_expr != null then
-               n_expr.parent = self
-       end
-        _n_id = n_id
-       if n_id != null then
-               n_id.parent = self
-       end
-        _n_assign_op = n_assign_op
-       if n_assign_op != null then
-               n_assign_op.parent = self
-       end
-        _n_value = n_value
-       if n_value != null then
-               n_value.parent = self
-       end
+        _n_expr = n_expr.as(not null)
+       n_expr.parent = self
+        _n_id = n_id.as(not null)
+       n_id.parent = self
+        _n_assign_op = n_assign_op.as(not null)
+       n_assign_op.parent = self
+        _n_value = n_value.as(not null)
+       n_value.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa PExpr
                 _n_expr = new_child
            else
-               _n_expr = null
+               abort
             end
             return
        end
@@ -8177,7 +6872,7 @@ redef class AAttrReassignExpr
                assert new_child isa TAttrid
                 _n_id = new_child
            else
-               _n_id = null
+               abort
             end
             return
        end
@@ -8187,7 +6882,7 @@ redef class AAttrReassignExpr
                assert new_child isa PAssignOp
                 _n_assign_op = new_child
            else
-               _n_assign_op = null
+               abort
             end
             return
        end
@@ -8197,7 +6892,7 @@ redef class AAttrReassignExpr
                assert new_child isa PExpr
                 _n_value = new_child
            else
-               _n_value = null
+               abort
             end
             return
        end
@@ -8205,77 +6900,51 @@ redef class AAttrReassignExpr
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
-        if _n_id != null then
-            v.visit(_n_id)
-        end
-        if _n_assign_op != null then
-            v.visit(_n_assign_op)
-        end
-        if _n_value != null then
-            v.visit(_n_value)
-        end
+        v.visit(_n_expr)
+        v.visit(_n_id)
+        v.visit(_n_assign_op)
+        v.visit(_n_value)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
-        if _n_id != null then
-            v.visit(_n_id)
-        end
-        if _n_assign_op != null then
-            v.visit(_n_assign_op)
-        end
-        if _n_value != null then
-            v.visit(_n_value)
-        end
+        v.visit(_n_expr)
+        v.visit(_n_id)
+        v.visit(_n_assign_op)
+        v.visit(_n_value)
     end
 end
 redef class ACallExpr
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_id=(n: TId)
+    redef meth n_id=(n)
     do
         _n_id = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_acallexpr (
-            n_expr: PExpr ,
-            n_id: TId ,
+            n_expr: nullable PExpr ,
+            n_id: nullable TId ,
             n_args: Collection[Object] , # Should be Collection[PExpr]
             n_closure_defs: Collection[Object]  # Should be Collection[PClosureDef]
     )
     do
         empty_init
-        _n_expr = n_expr
-       if n_expr != null then
-               n_expr.parent = self
-       end
-        _n_id = n_id
-       if n_id != null then
-               n_id.parent = self
-       end
-        _n_args = new List[PExpr]
+        _n_expr = n_expr.as(not null)
+       n_expr.parent = self
+        _n_id = n_id.as(not null)
+       n_id.parent = self
        for n in n_args do
                assert n isa PExpr
                _n_args.add(n)
                n.parent = self
        end
-        _n_closure_defs = new List[PClosureDef]
        for n in n_closure_defs do
                assert n isa PClosureDef
                _n_closure_defs.add(n)
@@ -8283,16 +6952,15 @@ redef class ACallExpr
        end
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa PExpr
                 _n_expr = new_child
            else
-               _n_expr = null
+               abort
             end
             return
        end
@@ -8302,7 +6970,7 @@ redef class ACallExpr
                assert new_child isa TId
                 _n_id = new_child
            else
-               _n_id = null
+               abort
             end
             return
        end
@@ -8334,12 +7002,8 @@ redef class ACallExpr
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
-        if _n_id != null then
-            v.visit(_n_id)
-        end
+        v.visit(_n_expr)
+        v.visit(_n_id)
             for n in _n_args do
                 v.visit(n)
            end
@@ -8350,12 +7014,8 @@ redef class ACallExpr
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
-        if _n_id != null then
-            v.visit(_n_id)
-        end
+        v.visit(_n_expr)
+        v.visit(_n_id)
        do
            var i = _n_args.length
             while i >= 0 do
@@ -8373,80 +7033,62 @@ redef class ACallExpr
     end
 end
 redef class ACallAssignExpr
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_id=(n: TId)
+    redef meth n_id=(n)
     do
         _n_id = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_assign=(n: TAssign)
+    redef meth n_assign=(n)
     do
         _n_assign = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_value=(n: PExpr)
+    redef meth n_value=(n)
     do
         _n_value = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_acallassignexpr (
-            n_expr: PExpr ,
-            n_id: TId ,
+            n_expr: nullable PExpr ,
+            n_id: nullable TId ,
             n_args: Collection[Object] , # Should be Collection[PExpr]
-            n_assign: TAssign ,
-            n_value: PExpr 
+            n_assign: nullable TAssign ,
+            n_value: nullable PExpr 
     )
     do
         empty_init
-        _n_expr = n_expr
-       if n_expr != null then
-               n_expr.parent = self
-       end
-        _n_id = n_id
-       if n_id != null then
-               n_id.parent = self
-       end
-        _n_args = new List[PExpr]
+        _n_expr = n_expr.as(not null)
+       n_expr.parent = self
+        _n_id = n_id.as(not null)
+       n_id.parent = self
        for n in n_args do
                assert n isa PExpr
                _n_args.add(n)
                n.parent = self
        end
-        _n_assign = n_assign
-       if n_assign != null then
-               n_assign.parent = self
-       end
-        _n_value = n_value
-       if n_value != null then
-               n_value.parent = self
-       end
+        _n_assign = n_assign.as(not null)
+       n_assign.parent = self
+        _n_value = n_value.as(not null)
+       n_value.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa PExpr
                 _n_expr = new_child
            else
-               _n_expr = null
+               abort
             end
             return
        end
@@ -8456,7 +7098,7 @@ redef class ACallAssignExpr
                assert new_child isa TId
                 _n_id = new_child
            else
-               _n_id = null
+               abort
             end
             return
        end
@@ -8478,7 +7120,7 @@ redef class ACallAssignExpr
                assert new_child isa TAssign
                 _n_assign = new_child
            else
-               _n_assign = null
+               abort
             end
             return
        end
@@ -8488,7 +7130,7 @@ redef class ACallAssignExpr
                assert new_child isa PExpr
                 _n_value = new_child
            else
-               _n_value = null
+               abort
             end
             return
        end
@@ -8496,31 +7138,19 @@ redef class ACallAssignExpr
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
-        if _n_id != null then
-            v.visit(_n_id)
-        end
+        v.visit(_n_expr)
+        v.visit(_n_id)
             for n in _n_args do
                 v.visit(n)
            end
-        if _n_assign != null then
-            v.visit(_n_assign)
-        end
-        if _n_value != null then
-            v.visit(_n_value)
-        end
+        v.visit(_n_assign)
+        v.visit(_n_value)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
-        if _n_id != null then
-            v.visit(_n_id)
-        end
+        v.visit(_n_expr)
+        v.visit(_n_id)
        do
            var i = _n_args.length
             while i >= 0 do
@@ -8528,89 +7158,67 @@ redef class ACallAssignExpr
                i = i - 1
            end
        end
-        if _n_assign != null then
-            v.visit(_n_assign)
-        end
-        if _n_value != null then
-            v.visit(_n_value)
-        end
+        v.visit(_n_assign)
+        v.visit(_n_value)
     end
 end
 redef class ACallReassignExpr
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_id=(n: TId)
+    redef meth n_id=(n)
     do
         _n_id = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_assign_op=(n: PAssignOp)
+    redef meth n_assign_op=(n)
     do
         _n_assign_op = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_value=(n: PExpr)
+    redef meth n_value=(n)
     do
         _n_value = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_acallreassignexpr (
-            n_expr: PExpr ,
-            n_id: TId ,
+            n_expr: nullable PExpr ,
+            n_id: nullable TId ,
             n_args: Collection[Object] , # Should be Collection[PExpr]
-            n_assign_op: PAssignOp ,
-            n_value: PExpr 
+            n_assign_op: nullable PAssignOp ,
+            n_value: nullable PExpr 
     )
     do
         empty_init
-        _n_expr = n_expr
-       if n_expr != null then
-               n_expr.parent = self
-       end
-        _n_id = n_id
-       if n_id != null then
-               n_id.parent = self
-       end
-        _n_args = new List[PExpr]
+        _n_expr = n_expr.as(not null)
+       n_expr.parent = self
+        _n_id = n_id.as(not null)
+       n_id.parent = self
        for n in n_args do
                assert n isa PExpr
                _n_args.add(n)
                n.parent = self
        end
-        _n_assign_op = n_assign_op
-       if n_assign_op != null then
-               n_assign_op.parent = self
-       end
-        _n_value = n_value
-       if n_value != null then
-               n_value.parent = self
-       end
+        _n_assign_op = n_assign_op.as(not null)
+       n_assign_op.parent = self
+        _n_value = n_value.as(not null)
+       n_value.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa PExpr
                 _n_expr = new_child
            else
-               _n_expr = null
+               abort
             end
             return
        end
@@ -8620,7 +7228,7 @@ redef class ACallReassignExpr
                assert new_child isa TId
                 _n_id = new_child
            else
-               _n_id = null
+               abort
             end
             return
        end
@@ -8642,7 +7250,7 @@ redef class ACallReassignExpr
                assert new_child isa PAssignOp
                 _n_assign_op = new_child
            else
-               _n_assign_op = null
+               abort
             end
             return
        end
@@ -8652,7 +7260,7 @@ redef class ACallReassignExpr
                assert new_child isa PExpr
                 _n_value = new_child
            else
-               _n_value = null
+               abort
             end
             return
        end
@@ -8660,31 +7268,19 @@ redef class ACallReassignExpr
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
-        if _n_id != null then
-            v.visit(_n_id)
-        end
+        v.visit(_n_expr)
+        v.visit(_n_id)
             for n in _n_args do
                 v.visit(n)
            end
-        if _n_assign_op != null then
-            v.visit(_n_assign_op)
-        end
-        if _n_value != null then
-            v.visit(_n_value)
-        end
+        v.visit(_n_assign_op)
+        v.visit(_n_value)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
-        if _n_id != null then
-            v.visit(_n_id)
-        end
+        v.visit(_n_expr)
+        v.visit(_n_id)
        do
            var i = _n_args.length
             while i >= 0 do
@@ -8692,35 +7288,29 @@ redef class ACallReassignExpr
                i = i - 1
            end
        end
-        if _n_assign_op != null then
-            v.visit(_n_assign_op)
-        end
-        if _n_value != null then
-            v.visit(_n_value)
-        end
+        v.visit(_n_assign_op)
+        v.visit(_n_value)
     end
 end
 redef class ASuperExpr
-    redef meth n_qualified=(n: PQualified)
+    redef meth n_qualified=(n)
     do
         _n_qualified = n
         if n != null then
            n.parent = self
         end
     end
-    redef meth n_kwsuper=(n: TKwsuper)
+    redef meth n_kwsuper=(n)
     do
         _n_kwsuper = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_asuperexpr (
-            n_qualified: PQualified ,
-            n_kwsuper: TKwsuper ,
+            n_qualified: nullable PQualified ,
+            n_kwsuper: nullable TKwsuper ,
             n_args: Collection[Object]  # Should be Collection[PExpr]
     )
     do
@@ -8729,11 +7319,8 @@ redef class ASuperExpr
        if n_qualified != null then
                n_qualified.parent = self
        end
-        _n_kwsuper = n_kwsuper
-       if n_kwsuper != null then
-               n_kwsuper.parent = self
-       end
-        _n_args = new List[PExpr]
+        _n_kwsuper = n_kwsuper.as(not null)
+       n_kwsuper.parent = self
        for n in n_args do
                assert n isa PExpr
                _n_args.add(n)
@@ -8741,9 +7328,8 @@ redef class ASuperExpr
        end
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_qualified == old_child then
             if new_child != null then
                 new_child.parent = self
@@ -8760,7 +7346,7 @@ redef class ASuperExpr
                assert new_child isa TKwsuper
                 _n_kwsuper = new_child
            else
-               _n_kwsuper = null
+               abort
             end
             return
        end
@@ -8781,11 +7367,9 @@ redef class ASuperExpr
     redef meth visit_all(v: Visitor)
     do
         if _n_qualified != null then
-            v.visit(_n_qualified)
-        end
-        if _n_kwsuper != null then
-            v.visit(_n_kwsuper)
+            v.visit(_n_qualified.as(not null))
         end
+        v.visit(_n_kwsuper)
             for n in _n_args do
                 v.visit(n)
            end
@@ -8794,11 +7378,9 @@ redef class ASuperExpr
     redef meth visit_all_reverse(v: Visitor)
     do
         if _n_qualified != null then
-            v.visit(_n_qualified)
-        end
-        if _n_kwsuper != null then
-            v.visit(_n_kwsuper)
+            v.visit(_n_qualified.as(not null))
         end
+        v.visit(_n_kwsuper)
        do
            var i = _n_args.length
             while i >= 0 do
@@ -8809,39 +7391,30 @@ redef class ASuperExpr
     end
 end
 redef class AInitExpr
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_kwinit=(n: TKwinit)
+    redef meth n_kwinit=(n)
     do
         _n_kwinit = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_ainitexpr (
-            n_expr: PExpr ,
-            n_kwinit: TKwinit ,
+            n_expr: nullable PExpr ,
+            n_kwinit: nullable TKwinit ,
             n_args: Collection[Object]  # Should be Collection[PExpr]
     )
     do
         empty_init
-        _n_expr = n_expr
-       if n_expr != null then
-               n_expr.parent = self
-       end
-        _n_kwinit = n_kwinit
-       if n_kwinit != null then
-               n_kwinit.parent = self
-       end
-        _n_args = new List[PExpr]
+        _n_expr = n_expr.as(not null)
+       n_expr.parent = self
+        _n_kwinit = n_kwinit.as(not null)
+       n_kwinit.parent = self
        for n in n_args do
                assert n isa PExpr
                _n_args.add(n)
@@ -8849,16 +7422,15 @@ redef class AInitExpr
        end
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa PExpr
                 _n_expr = new_child
            else
-               _n_expr = null
+               abort
             end
             return
        end
@@ -8868,7 +7440,7 @@ redef class AInitExpr
                assert new_child isa TKwinit
                 _n_kwinit = new_child
            else
-               _n_kwinit = null
+               abort
             end
             return
        end
@@ -8888,12 +7460,8 @@ redef class AInitExpr
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
-        if _n_kwinit != null then
-            v.visit(_n_kwinit)
-        end
+        v.visit(_n_expr)
+        v.visit(_n_kwinit)
             for n in _n_args do
                 v.visit(n)
            end
@@ -8901,12 +7469,8 @@ redef class AInitExpr
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
-        if _n_kwinit != null then
-            v.visit(_n_kwinit)
-        end
+        v.visit(_n_expr)
+        v.visit(_n_kwinit)
        do
            var i = _n_args.length
             while i >= 0 do
@@ -8917,34 +7481,28 @@ redef class AInitExpr
     end
 end
 redef class ABraExpr
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_abraexpr (
-            n_expr: PExpr ,
+            n_expr: nullable PExpr ,
             n_args: Collection[Object] , # Should be Collection[PExpr]
             n_closure_defs: Collection[Object]  # Should be Collection[PClosureDef]
     )
     do
         empty_init
-        _n_expr = n_expr
-       if n_expr != null then
-               n_expr.parent = self
-       end
-        _n_args = new List[PExpr]
+        _n_expr = n_expr.as(not null)
+       n_expr.parent = self
        for n in n_args do
                assert n isa PExpr
                _n_args.add(n)
                n.parent = self
        end
-        _n_closure_defs = new List[PClosureDef]
        for n in n_closure_defs do
                assert n isa PClosureDef
                _n_closure_defs.add(n)
@@ -8952,16 +7510,15 @@ redef class ABraExpr
        end
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa PExpr
                 _n_expr = new_child
            else
-               _n_expr = null
+               abort
             end
             return
        end
@@ -8993,9 +7550,7 @@ redef class ABraExpr
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
+        v.visit(_n_expr)
             for n in _n_args do
                 v.visit(n)
            end
@@ -9006,9 +7561,7 @@ redef class ABraExpr
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
+        v.visit(_n_expr)
        do
            var i = _n_args.length
             while i >= 0 do
@@ -9026,68 +7579,54 @@ redef class ABraExpr
     end
 end
 redef class ABraAssignExpr
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_assign=(n: TAssign)
+    redef meth n_assign=(n)
     do
         _n_assign = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_value=(n: PExpr)
+    redef meth n_value=(n)
     do
         _n_value = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_abraassignexpr (
-            n_expr: PExpr ,
+            n_expr: nullable PExpr ,
             n_args: Collection[Object] , # Should be Collection[PExpr]
-            n_assign: TAssign ,
-            n_value: PExpr 
+            n_assign: nullable TAssign ,
+            n_value: nullable PExpr 
     )
     do
         empty_init
-        _n_expr = n_expr
-       if n_expr != null then
-               n_expr.parent = self
-       end
-        _n_args = new List[PExpr]
+        _n_expr = n_expr.as(not null)
+       n_expr.parent = self
        for n in n_args do
                assert n isa PExpr
                _n_args.add(n)
                n.parent = self
        end
-        _n_assign = n_assign
-       if n_assign != null then
-               n_assign.parent = self
-       end
-        _n_value = n_value
-       if n_value != null then
-               n_value.parent = self
-       end
+        _n_assign = n_assign.as(not null)
+       n_assign.parent = self
+        _n_value = n_value.as(not null)
+       n_value.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa PExpr
                 _n_expr = new_child
            else
-               _n_expr = null
+               abort
             end
             return
        end
@@ -9109,7 +7648,7 @@ redef class ABraAssignExpr
                assert new_child isa TAssign
                 _n_assign = new_child
            else
-               _n_assign = null
+               abort
             end
             return
        end
@@ -9119,7 +7658,7 @@ redef class ABraAssignExpr
                assert new_child isa PExpr
                 _n_value = new_child
            else
-               _n_value = null
+               abort
             end
             return
        end
@@ -9127,25 +7666,17 @@ redef class ABraAssignExpr
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
+        v.visit(_n_expr)
             for n in _n_args do
                 v.visit(n)
            end
-        if _n_assign != null then
-            v.visit(_n_assign)
-        end
-        if _n_value != null then
-            v.visit(_n_value)
-        end
+        v.visit(_n_assign)
+        v.visit(_n_value)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
+        v.visit(_n_expr)
        do
            var i = _n_args.length
             while i >= 0 do
@@ -9153,77 +7684,59 @@ redef class ABraAssignExpr
                i = i - 1
            end
        end
-        if _n_assign != null then
-            v.visit(_n_assign)
-        end
-        if _n_value != null then
-            v.visit(_n_value)
-        end
+        v.visit(_n_assign)
+        v.visit(_n_value)
     end
 end
 redef class ABraReassignExpr
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_assign_op=(n: PAssignOp)
+    redef meth n_assign_op=(n)
     do
         _n_assign_op = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_value=(n: PExpr)
+    redef meth n_value=(n)
     do
         _n_value = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_abrareassignexpr (
-            n_expr: PExpr ,
+            n_expr: nullable PExpr ,
             n_args: Collection[Object] , # Should be Collection[PExpr]
-            n_assign_op: PAssignOp ,
-            n_value: PExpr 
+            n_assign_op: nullable PAssignOp ,
+            n_value: nullable PExpr 
     )
     do
         empty_init
-        _n_expr = n_expr
-       if n_expr != null then
-               n_expr.parent = self
-       end
-        _n_args = new List[PExpr]
+        _n_expr = n_expr.as(not null)
+       n_expr.parent = self
        for n in n_args do
                assert n isa PExpr
                _n_args.add(n)
                n.parent = self
        end
-        _n_assign_op = n_assign_op
-       if n_assign_op != null then
-               n_assign_op.parent = self
-       end
-        _n_value = n_value
-       if n_value != null then
-               n_value.parent = self
-       end
+        _n_assign_op = n_assign_op.as(not null)
+       n_assign_op.parent = self
+        _n_value = n_value.as(not null)
+       n_value.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa PExpr
                 _n_expr = new_child
            else
-               _n_expr = null
+               abort
             end
             return
        end
@@ -9245,7 +7758,7 @@ redef class ABraReassignExpr
                assert new_child isa PAssignOp
                 _n_assign_op = new_child
            else
-               _n_assign_op = null
+               abort
             end
             return
        end
@@ -9255,7 +7768,7 @@ redef class ABraReassignExpr
                assert new_child isa PExpr
                 _n_value = new_child
            else
-               _n_value = null
+               abort
             end
             return
        end
@@ -9263,25 +7776,17 @@ redef class ABraReassignExpr
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
+        v.visit(_n_expr)
             for n in _n_args do
                 v.visit(n)
            end
-        if _n_assign_op != null then
-            v.visit(_n_assign_op)
-        end
-        if _n_value != null then
-            v.visit(_n_value)
-        end
+        v.visit(_n_assign_op)
+        v.visit(_n_value)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
+        v.visit(_n_expr)
        do
            var i = _n_args.length
             while i >= 0 do
@@ -9289,43 +7794,33 @@ redef class ABraReassignExpr
                i = i - 1
            end
        end
-        if _n_assign_op != null then
-            v.visit(_n_assign_op)
-        end
-        if _n_value != null then
-            v.visit(_n_value)
-        end
+        v.visit(_n_assign_op)
+        v.visit(_n_value)
     end
 end
 redef class AClosureCallExpr
-    redef meth n_id=(n: TId)
+    redef meth n_id=(n)
     do
         _n_id = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_aclosurecallexpr (
-            n_id: TId ,
+            n_id: nullable TId ,
             n_args: Collection[Object] , # Should be Collection[PExpr]
             n_closure_defs: Collection[Object]  # Should be Collection[PClosureDef]
     )
     do
         empty_init
-        _n_id = n_id
-       if n_id != null then
-               n_id.parent = self
-       end
-        _n_args = new List[PExpr]
+        _n_id = n_id.as(not null)
+       n_id.parent = self
        for n in n_args do
                assert n isa PExpr
                _n_args.add(n)
                n.parent = self
        end
-        _n_closure_defs = new List[PClosureDef]
        for n in n_closure_defs do
                assert n isa PClosureDef
                _n_closure_defs.add(n)
@@ -9333,16 +7828,15 @@ redef class AClosureCallExpr
        end
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         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
-               _n_id = null
+               abort
             end
             return
        end
@@ -9374,9 +7868,7 @@ redef class AClosureCallExpr
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_id != null then
-            v.visit(_n_id)
-        end
+        v.visit(_n_id)
             for n in _n_args do
                 v.visit(n)
            end
@@ -9387,9 +7879,7 @@ redef class AClosureCallExpr
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_id != null then
-            v.visit(_n_id)
-        end
+        v.visit(_n_id)
        do
            var i = _n_args.length
             while i >= 0 do
@@ -9407,37 +7897,32 @@ redef class AClosureCallExpr
     end
 end
 redef class AVarExpr
-    redef meth n_id=(n: TId)
+    redef meth n_id=(n)
     do
         _n_id = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_avarexpr (
-            n_id: TId 
+            n_id: nullable TId 
     )
     do
         empty_init
-        _n_id = n_id
-       if n_id != null then
-               n_id.parent = self
-       end
+        _n_id = n_id.as(not null)
+       n_id.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         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
-               _n_id = null
+               abort
             end
             return
        end
@@ -9445,74 +7930,57 @@ redef class AVarExpr
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_id != null then
-            v.visit(_n_id)
-        end
+        v.visit(_n_id)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_id != null then
-            v.visit(_n_id)
-        end
+        v.visit(_n_id)
     end
 end
 redef class AVarAssignExpr
-    redef meth n_id=(n: TId)
+    redef meth n_id=(n)
     do
         _n_id = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_assign=(n: TAssign)
+    redef meth n_assign=(n)
     do
         _n_assign = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_value=(n: PExpr)
+    redef meth n_value=(n)
     do
         _n_value = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_avarassignexpr (
-            n_id: TId ,
-            n_assign: TAssign ,
-            n_value: PExpr 
+            n_id: nullable TId ,
+            n_assign: nullable TAssign ,
+            n_value: nullable PExpr 
     )
     do
         empty_init
-        _n_id = n_id
-       if n_id != null then
-               n_id.parent = self
-       end
-        _n_assign = n_assign
-       if n_assign != null then
-               n_assign.parent = self
-       end
-        _n_value = n_value
-       if n_value != null then
-               n_value.parent = self
-       end
+        _n_id = n_id.as(not null)
+       n_id.parent = self
+        _n_assign = n_assign.as(not null)
+       n_assign.parent = self
+        _n_value = n_value.as(not null)
+       n_value.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         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
-               _n_id = null
+               abort
             end
             return
        end
@@ -9522,7 +7990,7 @@ redef class AVarAssignExpr
                assert new_child isa TAssign
                 _n_assign = new_child
            else
-               _n_assign = null
+               abort
             end
             return
        end
@@ -9532,7 +8000,7 @@ redef class AVarAssignExpr
                assert new_child isa PExpr
                 _n_value = new_child
            else
-               _n_value = null
+               abort
             end
             return
        end
@@ -9540,86 +8008,61 @@ redef class AVarAssignExpr
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_id != null then
-            v.visit(_n_id)
-        end
-        if _n_assign != null then
-            v.visit(_n_assign)
-        end
-        if _n_value != null then
-            v.visit(_n_value)
-        end
+        v.visit(_n_id)
+        v.visit(_n_assign)
+        v.visit(_n_value)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_id != null then
-            v.visit(_n_id)
-        end
-        if _n_assign != null then
-            v.visit(_n_assign)
-        end
-        if _n_value != null then
-            v.visit(_n_value)
-        end
+        v.visit(_n_id)
+        v.visit(_n_assign)
+        v.visit(_n_value)
     end
 end
 redef class AVarReassignExpr
-    redef meth n_id=(n: TId)
+    redef meth n_id=(n)
     do
         _n_id = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_assign_op=(n: PAssignOp)
+    redef meth n_assign_op=(n)
     do
         _n_assign_op = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_value=(n: PExpr)
+    redef meth n_value=(n)
     do
         _n_value = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_avarreassignexpr (
-            n_id: TId ,
-            n_assign_op: PAssignOp ,
-            n_value: PExpr 
+            n_id: nullable TId ,
+            n_assign_op: nullable PAssignOp ,
+            n_value: nullable PExpr 
     )
     do
-        empty_init
-        _n_id = n_id
-       if n_id != null then
-               n_id.parent = self
-       end
-        _n_assign_op = n_assign_op
-       if n_assign_op != null then
-               n_assign_op.parent = self
-       end
-        _n_value = n_value
-       if n_value != null then
-               n_value.parent = self
-       end
+        empty_init
+        _n_id = n_id.as(not null)
+       n_id.parent = self
+        _n_assign_op = n_assign_op.as(not null)
+       n_assign_op.parent = self
+        _n_value = n_value.as(not null)
+       n_value.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         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
-               _n_id = null
+               abort
             end
             return
        end
@@ -9629,7 +8072,7 @@ redef class AVarReassignExpr
                assert new_child isa PAssignOp
                 _n_assign_op = new_child
            else
-               _n_assign_op = null
+               abort
             end
             return
        end
@@ -9639,7 +8082,7 @@ redef class AVarReassignExpr
                assert new_child isa PExpr
                 _n_value = new_child
            else
-               _n_value = null
+               abort
             end
             return
        end
@@ -9647,74 +8090,53 @@ redef class AVarReassignExpr
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_id != null then
-            v.visit(_n_id)
-        end
-        if _n_assign_op != null then
-            v.visit(_n_assign_op)
-        end
-        if _n_value != null then
-            v.visit(_n_value)
-        end
+        v.visit(_n_id)
+        v.visit(_n_assign_op)
+        v.visit(_n_value)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_id != null then
-            v.visit(_n_id)
-        end
-        if _n_assign_op != null then
-            v.visit(_n_assign_op)
-        end
-        if _n_value != null then
-            v.visit(_n_value)
-        end
+        v.visit(_n_id)
+        v.visit(_n_assign_op)
+        v.visit(_n_value)
     end
 end
 redef class ARangeExpr
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_expr2=(n: PExpr)
+    redef meth n_expr2=(n)
     do
         _n_expr2 = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_arangeexpr (
-            n_expr: PExpr ,
-            n_expr2: PExpr 
+            n_expr: nullable PExpr ,
+            n_expr2: nullable PExpr 
     )
     do
         empty_init
-        _n_expr = n_expr
-       if n_expr != null then
-               n_expr.parent = self
-       end
-        _n_expr2 = n_expr2
-       if n_expr2 != null then
-               n_expr2.parent = self
-       end
+        _n_expr = n_expr.as(not null)
+       n_expr.parent = self
+        _n_expr2 = n_expr2.as(not null)
+       n_expr2.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa PExpr
                 _n_expr = new_child
            else
-               _n_expr = null
+               abort
             end
             return
        end
@@ -9724,7 +8146,7 @@ redef class ARangeExpr
                assert new_child isa PExpr
                 _n_expr2 = new_child
            else
-               _n_expr2 = null
+               abort
             end
             return
        end
@@ -9732,68 +8154,51 @@ redef class ARangeExpr
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
-        if _n_expr2 != null then
-            v.visit(_n_expr2)
-        end
+        v.visit(_n_expr)
+        v.visit(_n_expr2)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
-        if _n_expr2 != null then
-            v.visit(_n_expr2)
-        end
+        v.visit(_n_expr)
+        v.visit(_n_expr2)
     end
 end
 redef class ACrangeExpr
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_expr2=(n: PExpr)
+    redef meth n_expr2=(n)
     do
         _n_expr2 = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_acrangeexpr (
-            n_expr: PExpr ,
-            n_expr2: PExpr 
+            n_expr: nullable PExpr ,
+            n_expr2: nullable PExpr 
     )
     do
         empty_init
-        _n_expr = n_expr
-       if n_expr != null then
-               n_expr.parent = self
-       end
-        _n_expr2 = n_expr2
-       if n_expr2 != null then
-               n_expr2.parent = self
-       end
+        _n_expr = n_expr.as(not null)
+       n_expr.parent = self
+        _n_expr2 = n_expr2.as(not null)
+       n_expr2.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa PExpr
                 _n_expr = new_child
            else
-               _n_expr = null
+               abort
             end
             return
        end
@@ -9803,7 +8208,7 @@ redef class ACrangeExpr
                assert new_child isa PExpr
                 _n_expr2 = new_child
            else
-               _n_expr2 = null
+               abort
             end
             return
        end
@@ -9811,68 +8216,51 @@ redef class ACrangeExpr
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
-        if _n_expr2 != null then
-            v.visit(_n_expr2)
-        end
+        v.visit(_n_expr)
+        v.visit(_n_expr2)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
-        if _n_expr2 != null then
-            v.visit(_n_expr2)
-        end
+        v.visit(_n_expr)
+        v.visit(_n_expr2)
     end
 end
 redef class AOrangeExpr
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_expr2=(n: PExpr)
+    redef meth n_expr2=(n)
     do
         _n_expr2 = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_aorangeexpr (
-            n_expr: PExpr ,
-            n_expr2: PExpr 
+            n_expr: nullable PExpr ,
+            n_expr2: nullable PExpr 
     )
     do
         empty_init
-        _n_expr = n_expr
-       if n_expr != null then
-               n_expr.parent = self
-       end
-        _n_expr2 = n_expr2
-       if n_expr2 != null then
-               n_expr2.parent = self
-       end
+        _n_expr = n_expr.as(not null)
+       n_expr.parent = self
+        _n_expr2 = n_expr2.as(not null)
+       n_expr2.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa PExpr
                 _n_expr = new_child
            else
-               _n_expr = null
+               abort
             end
             return
        end
@@ -9882,7 +8270,7 @@ redef class AOrangeExpr
                assert new_child isa PExpr
                 _n_expr2 = new_child
            else
-               _n_expr2 = null
+               abort
             end
             return
        end
@@ -9890,22 +8278,14 @@ redef class AOrangeExpr
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
-        if _n_expr2 != null then
-            v.visit(_n_expr2)
-        end
+        v.visit(_n_expr)
+        v.visit(_n_expr2)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
-        if _n_expr2 != null then
-            v.visit(_n_expr2)
-        end
+        v.visit(_n_expr)
+        v.visit(_n_expr2)
     end
 end
 redef class AArrayExpr
@@ -9917,7 +8297,6 @@ redef class AArrayExpr
     )
     do
         empty_init
-        _n_exprs = new List[PExpr]
        for n in n_exprs do
                assert n isa PExpr
                _n_exprs.add(n)
@@ -9925,9 +8304,8 @@ redef class AArrayExpr
        end
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         for i in [0.._n_exprs.length[ do
             if _n_exprs[i] == old_child then
                 if new_child != null then
@@ -9961,37 +8339,32 @@ redef class AArrayExpr
     end
 end
 redef class ASelfExpr
-    redef meth n_kwself=(n: TKwself)
+    redef meth n_kwself=(n)
     do
         _n_kwself = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_aselfexpr (
-            n_kwself: TKwself 
+            n_kwself: nullable TKwself 
     )
     do
         empty_init
-        _n_kwself = n_kwself
-       if n_kwself != null then
-               n_kwself.parent = self
-       end
+        _n_kwself = n_kwself.as(not null)
+       n_kwself.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_kwself == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa TKwself
                 _n_kwself = new_child
            else
-               _n_kwself = null
+               abort
             end
             return
        end
@@ -9999,16 +8372,12 @@ redef class ASelfExpr
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_kwself != null then
-            v.visit(_n_kwself)
-        end
+        v.visit(_n_kwself)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_kwself != null then
-            v.visit(_n_kwself)
-        end
+        v.visit(_n_kwself)
     end
 end
 redef class AImplicitSelfExpr
@@ -10020,9 +8389,8 @@ redef class AImplicitSelfExpr
         empty_init
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
     end
 
     redef meth visit_all(v: Visitor)
@@ -10034,37 +8402,32 @@ redef class AImplicitSelfExpr
     end
 end
 redef class ATrueExpr
-    redef meth n_kwtrue=(n: TKwtrue)
+    redef meth n_kwtrue=(n)
     do
         _n_kwtrue = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_atrueexpr (
-            n_kwtrue: TKwtrue 
+            n_kwtrue: nullable TKwtrue 
     )
     do
         empty_init
-        _n_kwtrue = n_kwtrue
-       if n_kwtrue != null then
-               n_kwtrue.parent = self
-       end
+        _n_kwtrue = n_kwtrue.as(not null)
+       n_kwtrue.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_kwtrue == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa TKwtrue
                 _n_kwtrue = new_child
            else
-               _n_kwtrue = null
+               abort
             end
             return
        end
@@ -10072,50 +8435,41 @@ redef class ATrueExpr
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_kwtrue != null then
-            v.visit(_n_kwtrue)
-        end
+        v.visit(_n_kwtrue)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_kwtrue != null then
-            v.visit(_n_kwtrue)
-        end
+        v.visit(_n_kwtrue)
     end
 end
 redef class AFalseExpr
-    redef meth n_kwfalse=(n: TKwfalse)
+    redef meth n_kwfalse=(n)
     do
         _n_kwfalse = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_afalseexpr (
-            n_kwfalse: TKwfalse 
+            n_kwfalse: nullable TKwfalse 
     )
     do
         empty_init
-        _n_kwfalse = n_kwfalse
-       if n_kwfalse != null then
-               n_kwfalse.parent = self
-       end
+        _n_kwfalse = n_kwfalse.as(not null)
+       n_kwfalse.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_kwfalse == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa TKwfalse
                 _n_kwfalse = new_child
            else
-               _n_kwfalse = null
+               abort
             end
             return
        end
@@ -10123,50 +8477,41 @@ redef class AFalseExpr
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_kwfalse != null then
-            v.visit(_n_kwfalse)
-        end
+        v.visit(_n_kwfalse)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_kwfalse != null then
-            v.visit(_n_kwfalse)
-        end
+        v.visit(_n_kwfalse)
     end
 end
 redef class ANullExpr
-    redef meth n_kwnull=(n: TKwnull)
+    redef meth n_kwnull=(n)
     do
         _n_kwnull = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_anullexpr (
-            n_kwnull: TKwnull 
+            n_kwnull: nullable TKwnull 
     )
     do
         empty_init
-        _n_kwnull = n_kwnull
-       if n_kwnull != null then
-               n_kwnull.parent = self
-       end
+        _n_kwnull = n_kwnull.as(not null)
+       n_kwnull.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_kwnull == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa TKwnull
                 _n_kwnull = new_child
            else
-               _n_kwnull = null
+               abort
             end
             return
        end
@@ -10174,50 +8519,41 @@ redef class ANullExpr
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_kwnull != null then
-            v.visit(_n_kwnull)
-        end
+        v.visit(_n_kwnull)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_kwnull != null then
-            v.visit(_n_kwnull)
-        end
+        v.visit(_n_kwnull)
     end
 end
 redef class AIntExpr
-    redef meth n_number=(n: TNumber)
+    redef meth n_number=(n)
     do
         _n_number = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_aintexpr (
-            n_number: TNumber 
+            n_number: nullable TNumber 
     )
     do
         empty_init
-        _n_number = n_number
-       if n_number != null then
-               n_number.parent = self
-       end
+        _n_number = n_number.as(not null)
+       n_number.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_number == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa TNumber
                 _n_number = new_child
            else
-               _n_number = null
+               abort
             end
             return
        end
@@ -10225,50 +8561,41 @@ redef class AIntExpr
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_number != null then
-            v.visit(_n_number)
-        end
+        v.visit(_n_number)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_number != null then
-            v.visit(_n_number)
-        end
+        v.visit(_n_number)
     end
 end
 redef class AFloatExpr
-    redef meth n_float=(n: TFloat)
+    redef meth n_float=(n)
     do
         _n_float = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_afloatexpr (
-            n_float: TFloat 
+            n_float: nullable TFloat 
     )
     do
         empty_init
-        _n_float = n_float
-       if n_float != null then
-               n_float.parent = self
-       end
+        _n_float = n_float.as(not null)
+       n_float.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_float == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa TFloat
                 _n_float = new_child
            else
-               _n_float = null
+               abort
             end
             return
        end
@@ -10276,50 +8603,41 @@ redef class AFloatExpr
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_float != null then
-            v.visit(_n_float)
-        end
+        v.visit(_n_float)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_float != null then
-            v.visit(_n_float)
-        end
+        v.visit(_n_float)
     end
 end
 redef class ACharExpr
-    redef meth n_char=(n: TChar)
+    redef meth n_char=(n)
     do
         _n_char = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_acharexpr (
-            n_char: TChar 
+            n_char: nullable TChar 
     )
     do
         empty_init
-        _n_char = n_char
-       if n_char != null then
-               n_char.parent = self
-       end
+        _n_char = n_char.as(not null)
+       n_char.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_char == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa TChar
                 _n_char = new_child
            else
-               _n_char = null
+               abort
             end
             return
        end
@@ -10327,50 +8645,41 @@ redef class ACharExpr
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_char != null then
-            v.visit(_n_char)
-        end
+        v.visit(_n_char)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_char != null then
-            v.visit(_n_char)
-        end
+        v.visit(_n_char)
     end
 end
 redef class AStringExpr
-    redef meth n_string=(n: TString)
+    redef meth n_string=(n)
     do
         _n_string = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_astringexpr (
-            n_string: TString 
+            n_string: nullable TString 
     )
     do
         empty_init
-        _n_string = n_string
-       if n_string != null then
-               n_string.parent = self
-       end
+        _n_string = n_string.as(not null)
+       n_string.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_string == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa TString
                 _n_string = new_child
            else
-               _n_string = null
+               abort
             end
             return
        end
@@ -10378,50 +8687,41 @@ redef class AStringExpr
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_string != null then
-            v.visit(_n_string)
-        end
+        v.visit(_n_string)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_string != null then
-            v.visit(_n_string)
-        end
+        v.visit(_n_string)
     end
 end
 redef class AStartStringExpr
-    redef meth n_string=(n: TStartString)
+    redef meth n_string=(n)
     do
         _n_string = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_astartstringexpr (
-            n_string: TStartString 
+            n_string: nullable TStartString 
     )
     do
         empty_init
-        _n_string = n_string
-       if n_string != null then
-               n_string.parent = self
-       end
+        _n_string = n_string.as(not null)
+       n_string.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_string == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa TStartString
                 _n_string = new_child
            else
-               _n_string = null
+               abort
             end
             return
        end
@@ -10429,50 +8729,41 @@ redef class AStartStringExpr
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_string != null then
-            v.visit(_n_string)
-        end
+        v.visit(_n_string)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_string != null then
-            v.visit(_n_string)
-        end
+        v.visit(_n_string)
     end
 end
 redef class AMidStringExpr
-    redef meth n_string=(n: TMidString)
+    redef meth n_string=(n)
     do
         _n_string = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_amidstringexpr (
-            n_string: TMidString 
+            n_string: nullable TMidString 
     )
     do
         empty_init
-        _n_string = n_string
-       if n_string != null then
-               n_string.parent = self
-       end
+        _n_string = n_string.as(not null)
+       n_string.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_string == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa TMidString
                 _n_string = new_child
            else
-               _n_string = null
+               abort
             end
             return
        end
@@ -10480,50 +8771,41 @@ redef class AMidStringExpr
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_string != null then
-            v.visit(_n_string)
-        end
+        v.visit(_n_string)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_string != null then
-            v.visit(_n_string)
-        end
+        v.visit(_n_string)
     end
 end
 redef class AEndStringExpr
-    redef meth n_string=(n: TEndString)
+    redef meth n_string=(n)
     do
         _n_string = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_aendstringexpr (
-            n_string: TEndString 
+            n_string: nullable TEndString 
     )
     do
         empty_init
-        _n_string = n_string
-       if n_string != null then
-               n_string.parent = self
-       end
+        _n_string = n_string.as(not null)
+       n_string.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_string == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa TEndString
                 _n_string = new_child
            else
-               _n_string = null
+               abort
             end
             return
        end
@@ -10531,16 +8813,12 @@ redef class AEndStringExpr
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_string != null then
-            v.visit(_n_string)
-        end
+        v.visit(_n_string)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_string != null then
-            v.visit(_n_string)
-        end
+        v.visit(_n_string)
     end
 end
 redef class ASuperstringExpr
@@ -10552,7 +8830,6 @@ redef class ASuperstringExpr
     )
     do
         empty_init
-        _n_exprs = new List[PExpr]
        for n in n_exprs do
                assert n isa PExpr
                _n_exprs.add(n)
@@ -10560,9 +8837,8 @@ redef class ASuperstringExpr
        end
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         for i in [0.._n_exprs.length[ do
             if _n_exprs[i] == old_child then
                 if new_child != null then
@@ -10596,37 +8872,32 @@ redef class ASuperstringExpr
     end
 end
 redef class AParExpr
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_aparexpr (
-            n_expr: PExpr 
+            n_expr: nullable PExpr 
     )
     do
         empty_init
-        _n_expr = n_expr
-       if n_expr != null then
-               n_expr.parent = self
-       end
+        _n_expr = n_expr.as(not null)
+       n_expr.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa PExpr
                 _n_expr = new_child
            else
-               _n_expr = null
+               abort
             end
             return
        end
@@ -10634,74 +8905,57 @@ redef class AParExpr
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
+        v.visit(_n_expr)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
+        v.visit(_n_expr)
     end
 end
 redef class AAsCastExpr
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_kwas=(n: TKwas)
+    redef meth n_kwas=(n)
     do
         _n_kwas = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_type=(n: PType)
+    redef meth n_type=(n)
     do
         _n_type = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_aascastexpr (
-            n_expr: PExpr ,
-            n_kwas: TKwas ,
-            n_type: PType 
+            n_expr: nullable PExpr ,
+            n_kwas: nullable TKwas ,
+            n_type: nullable PType 
     )
     do
         empty_init
-        _n_expr = n_expr
-       if n_expr != null then
-               n_expr.parent = self
-       end
-        _n_kwas = n_kwas
-       if n_kwas != null then
-               n_kwas.parent = self
-       end
-        _n_type = n_type
-       if n_type != null then
-               n_type.parent = self
-       end
+        _n_expr = n_expr.as(not null)
+       n_expr.parent = self
+        _n_kwas = n_kwas.as(not null)
+       n_kwas.parent = self
+        _n_type = n_type.as(not null)
+       n_type.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa PExpr
                 _n_expr = new_child
            else
-               _n_expr = null
+               abort
             end
             return
        end
@@ -10711,7 +8965,7 @@ redef class AAsCastExpr
                assert new_child isa TKwas
                 _n_kwas = new_child
            else
-               _n_kwas = null
+               abort
             end
             return
        end
@@ -10721,7 +8975,7 @@ redef class AAsCastExpr
                assert new_child isa PType
                 _n_type = new_child
            else
-               _n_type = null
+               abort
             end
             return
        end
@@ -10729,98 +8983,69 @@ redef class AAsCastExpr
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
-        if _n_kwas != null then
-            v.visit(_n_kwas)
-        end
-        if _n_type != null then
-            v.visit(_n_type)
-        end
+        v.visit(_n_expr)
+        v.visit(_n_kwas)
+        v.visit(_n_type)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
-        if _n_kwas != null then
-            v.visit(_n_kwas)
-        end
-        if _n_type != null then
-            v.visit(_n_type)
-        end
+        v.visit(_n_expr)
+        v.visit(_n_kwas)
+        v.visit(_n_type)
     end
 end
 redef class AAsNotnullExpr
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_kwas=(n: TKwas)
+    redef meth n_kwas=(n)
     do
         _n_kwas = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_kwnot=(n: TKwnot)
+    redef meth n_kwnot=(n)
     do
         _n_kwnot = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_kwnull=(n: TKwnull)
+    redef meth n_kwnull=(n)
     do
         _n_kwnull = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_aasnotnullexpr (
-            n_expr: PExpr ,
-            n_kwas: TKwas ,
-            n_kwnot: TKwnot ,
-            n_kwnull: TKwnull 
+            n_expr: nullable PExpr ,
+            n_kwas: nullable TKwas ,
+            n_kwnot: nullable TKwnot ,
+            n_kwnull: nullable TKwnull 
     )
     do
         empty_init
-        _n_expr = n_expr
-       if n_expr != null then
-               n_expr.parent = self
-       end
-        _n_kwas = n_kwas
-       if n_kwas != null then
-               n_kwas.parent = self
-       end
-        _n_kwnot = n_kwnot
-       if n_kwnot != null then
-               n_kwnot.parent = self
-       end
-        _n_kwnull = n_kwnull
-       if n_kwnull != null then
-               n_kwnull.parent = self
-       end
+        _n_expr = n_expr.as(not null)
+       n_expr.parent = self
+        _n_kwas = n_kwas.as(not null)
+       n_kwas.parent = self
+        _n_kwnot = n_kwnot.as(not null)
+       n_kwnot.parent = self
+        _n_kwnull = n_kwnull.as(not null)
+       n_kwnull.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_expr == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa PExpr
                 _n_expr = new_child
            else
-               _n_expr = null
+               abort
             end
             return
        end
@@ -10830,7 +9055,7 @@ redef class AAsNotnullExpr
                assert new_child isa TKwas
                 _n_kwas = new_child
            else
-               _n_kwas = null
+               abort
             end
             return
        end
@@ -10840,7 +9065,7 @@ redef class AAsNotnullExpr
                assert new_child isa TKwnot
                 _n_kwnot = new_child
            else
-               _n_kwnot = null
+               abort
             end
             return
        end
@@ -10850,7 +9075,7 @@ redef class AAsNotnullExpr
                assert new_child isa TKwnull
                 _n_kwnull = new_child
            else
-               _n_kwnull = null
+               abort
             end
             return
        end
@@ -10858,92 +9083,63 @@ redef class AAsNotnullExpr
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
-        if _n_kwas != null then
-            v.visit(_n_kwas)
-        end
-        if _n_kwnot != null then
-            v.visit(_n_kwnot)
-        end
-        if _n_kwnull != null then
-            v.visit(_n_kwnull)
-        end
+        v.visit(_n_expr)
+        v.visit(_n_kwas)
+        v.visit(_n_kwnot)
+        v.visit(_n_kwnull)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
-        if _n_kwas != null then
-            v.visit(_n_kwas)
-        end
-        if _n_kwnot != null then
-            v.visit(_n_kwnot)
-        end
-        if _n_kwnull != null then
-            v.visit(_n_kwnull)
-        end
+        v.visit(_n_expr)
+        v.visit(_n_kwas)
+        v.visit(_n_kwnot)
+        v.visit(_n_kwnull)
     end
 end
 redef class AIssetAttrExpr
-    redef meth n_kwisset=(n: TKwisset)
+    redef meth n_kwisset=(n)
     do
         _n_kwisset = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_id=(n: TAttrid)
+    redef meth n_id=(n)
     do
         _n_id = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_aissetattrexpr (
-            n_kwisset: TKwisset ,
-            n_expr: PExpr ,
-            n_id: TAttrid 
+            n_kwisset: nullable TKwisset ,
+            n_expr: nullable PExpr ,
+            n_id: nullable TAttrid 
     )
     do
         empty_init
-        _n_kwisset = n_kwisset
-       if n_kwisset != null then
-               n_kwisset.parent = self
-       end
-        _n_expr = n_expr
-       if n_expr != null then
-               n_expr.parent = self
-       end
-        _n_id = n_id
-       if n_id != null then
-               n_id.parent = self
-       end
+        _n_kwisset = n_kwisset.as(not null)
+       n_kwisset.parent = self
+        _n_expr = n_expr.as(not null)
+       n_expr.parent = self
+        _n_id = n_id.as(not null)
+       n_id.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_kwisset == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa TKwisset
                 _n_kwisset = new_child
            else
-               _n_kwisset = null
+               abort
             end
             return
        end
@@ -10953,7 +9149,7 @@ redef class AIssetAttrExpr
                assert new_child isa PExpr
                 _n_expr = new_child
            else
-               _n_expr = null
+               abort
             end
             return
        end
@@ -10963,7 +9159,7 @@ redef class AIssetAttrExpr
                assert new_child isa TAttrid
                 _n_id = new_child
            else
-               _n_id = null
+               abort
             end
             return
        end
@@ -10971,62 +9167,45 @@ redef class AIssetAttrExpr
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_kwisset != null then
-            v.visit(_n_kwisset)
-        end
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
-        if _n_id != null then
-            v.visit(_n_id)
-        end
+        v.visit(_n_kwisset)
+        v.visit(_n_expr)
+        v.visit(_n_id)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_kwisset != null then
-            v.visit(_n_kwisset)
-        end
-        if _n_expr != null then
-            v.visit(_n_expr)
-        end
-        if _n_id != null then
-            v.visit(_n_id)
-        end
+        v.visit(_n_kwisset)
+        v.visit(_n_expr)
+        v.visit(_n_id)
     end
 end
 redef class APlusAssignOp
-    redef meth n_pluseq=(n: TPluseq)
+    redef meth n_pluseq=(n)
     do
         _n_pluseq = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_aplusassignop (
-            n_pluseq: TPluseq 
+            n_pluseq: nullable TPluseq 
     )
     do
         empty_init
-        _n_pluseq = n_pluseq
-       if n_pluseq != null then
-               n_pluseq.parent = self
-       end
+        _n_pluseq = n_pluseq.as(not null)
+       n_pluseq.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_pluseq == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa TPluseq
                 _n_pluseq = new_child
            else
-               _n_pluseq = null
+               abort
             end
             return
        end
@@ -11034,50 +9213,41 @@ redef class APlusAssignOp
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_pluseq != null then
-            v.visit(_n_pluseq)
-        end
+        v.visit(_n_pluseq)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_pluseq != null then
-            v.visit(_n_pluseq)
-        end
+        v.visit(_n_pluseq)
     end
 end
 redef class AMinusAssignOp
-    redef meth n_minuseq=(n: TMinuseq)
+    redef meth n_minuseq=(n)
     do
         _n_minuseq = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
 
     private init empty_init do end
 
     init init_aminusassignop (
-            n_minuseq: TMinuseq 
+            n_minuseq: nullable TMinuseq 
     )
     do
         empty_init
-        _n_minuseq = n_minuseq
-       if n_minuseq != null then
-               n_minuseq.parent = self
-       end
+        _n_minuseq = n_minuseq.as(not null)
+       n_minuseq.parent = self
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_minuseq == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa TMinuseq
                 _n_minuseq = new_child
            else
-               _n_minuseq = null
+               abort
             end
             return
        end
@@ -11085,34 +9255,26 @@ redef class AMinusAssignOp
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_minuseq != null then
-            v.visit(_n_minuseq)
-        end
+        v.visit(_n_minuseq)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_minuseq != null then
-            v.visit(_n_minuseq)
-        end
+        v.visit(_n_minuseq)
     end
 end
 redef class AClosureDef
-    redef meth n_kwwith=(n: TKwwith)
+    redef meth n_kwwith=(n)
     do
         _n_kwwith = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_kwdo=(n: TKwdo)
+    redef meth n_kwdo=(n)
     do
         _n_kwdo = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
         if n != null then
@@ -11123,43 +9285,37 @@ redef class AClosureDef
     private init empty_init do end
 
     init init_aclosuredef (
-            n_kwwith: TKwwith ,
+            n_kwwith: nullable TKwwith ,
             n_id: Collection[Object] , # Should be Collection[TId]
-            n_kwdo: TKwdo ,
-            n_expr: PExpr 
+            n_kwdo: nullable TKwdo ,
+            n_expr: nullable PExpr 
     )
     do
         empty_init
-        _n_kwwith = n_kwwith
-       if n_kwwith != null then
-               n_kwwith.parent = self
-       end
-        _n_id = new List[TId]
+        _n_kwwith = n_kwwith.as(not null)
+       n_kwwith.parent = self
        for n in n_id do
                assert n isa TId
                _n_id.add(n)
                n.parent = self
        end
-        _n_kwdo = n_kwdo
-       if n_kwdo != null then
-               n_kwdo.parent = self
-       end
+        _n_kwdo = n_kwdo.as(not null)
+       n_kwdo.parent = self
         _n_expr = n_expr
        if n_expr != null then
                n_expr.parent = self
        end
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_kwwith == old_child then
             if new_child != null then
                 new_child.parent = self
                assert new_child isa TKwwith
                 _n_kwwith = new_child
            else
-               _n_kwwith = null
+               abort
             end
             return
        end
@@ -11181,7 +9337,7 @@ redef class AClosureDef
                assert new_child isa TKwdo
                 _n_kwdo = new_child
            else
-               _n_kwdo = null
+               abort
             end
             return
        end
@@ -11199,25 +9355,19 @@ redef class AClosureDef
 
     redef meth visit_all(v: Visitor)
     do
-        if _n_kwwith != null then
-            v.visit(_n_kwwith)
-        end
+        v.visit(_n_kwwith)
             for n in _n_id do
                 v.visit(n)
            end
-        if _n_kwdo != null then
-            v.visit(_n_kwdo)
-        end
+        v.visit(_n_kwdo)
         if _n_expr != null then
-            v.visit(_n_expr)
+            v.visit(_n_expr.as(not null))
         end
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
-        if _n_kwwith != null then
-            v.visit(_n_kwwith)
-        end
+        v.visit(_n_kwwith)
        do
            var i = _n_id.length
             while i >= 0 do
@@ -11225,16 +9375,14 @@ redef class AClosureDef
                i = i - 1
            end
        end
-        if _n_kwdo != null then
-            v.visit(_n_kwdo)
-        end
+        v.visit(_n_kwdo)
         if _n_expr != null then
-            v.visit(_n_expr)
+            v.visit(_n_expr.as(not null))
         end
     end
 end
 redef class AQualified
-    redef meth n_classid=(n: TClassid)
+    redef meth n_classid=(n)
     do
         _n_classid = n
         if n != null then
@@ -11246,11 +9394,10 @@ redef class AQualified
 
     init init_aqualified (
             n_id: Collection[Object] , # Should be Collection[TId]
-            n_classid: TClassid 
+            n_classid: nullable TClassid 
     )
     do
         empty_init
-        _n_id = new List[TId]
        for n in n_id do
                assert n isa TId
                _n_id.add(n)
@@ -11262,9 +9409,8 @@ redef class AQualified
        end
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         for i in [0.._n_id.length[ do
             if _n_id[i] == old_child then
                 if new_child != null then
@@ -11295,7 +9441,7 @@ redef class AQualified
                 v.visit(n)
            end
         if _n_classid != null then
-            v.visit(_n_classid)
+            v.visit(_n_classid.as(not null))
         end
     end
 
@@ -11309,7 +9455,7 @@ redef class AQualified
            end
        end
         if _n_classid != null then
-            v.visit(_n_classid)
+            v.visit(_n_classid.as(not null))
         end
     end
 end
@@ -11322,7 +9468,6 @@ redef class ADoc
     )
     do
         empty_init
-        _n_comment = new List[TComment]
        for n in n_comment do
                assert n isa TComment
                _n_comment.add(n)
@@ -11330,9 +9475,8 @@ redef class ADoc
        end
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         for i in [0.._n_comment.length[ do
             if _n_comment[i] == old_child then
                 if new_child != null then
@@ -11368,16 +9512,15 @@ end
 
 redef class Start
     init(
-        n_base: PModule,
+        n_base: nullable PModule,
         n_eof: EOF)
     do
         _n_base = n_base
         _n_eof = n_eof
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_base == old_child then
             if new_child == null then
             else
@@ -11393,14 +9536,14 @@ redef class Start
     redef meth visit_all(v: Visitor)
     do
         if _n_base != null then
-            v.visit(_n_base)
+            v.visit(_n_base.as(not null))
         end
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
         if _n_base != null then
-            v.visit(_n_base)
+            v.visit(_n_base.as(not null))
         end
     end
 end
index f1040fa..f1c6b59 100644 (file)
@@ -4,7 +4,7 @@ package parser_tables
 
 # Parser that build a full AST
 abstract class ParserTable
-       attr _action_table: Array[Array[Int]] = null
+       attr _action_table: Array[Array[Int]]
        private meth build_action_table
        do
                _action_table = once [ 
@@ -18117,7 +18117,7 @@ abstract class ParserTable
                        ]
        end
 
-       attr _goto_table: Array[Array[Int]] = null
+       attr _goto_table: Array[Array[Int]]
        private meth build_goto_table
        do
                _goto_table = once [ 
@@ -19942,4 +19942,6 @@ abstract class ParserTable
                        0 , 1 , 1 , 2 , 3 , 3 , 2 , 2 , 4 , 5 , 6 , 7 , 8 , 3 , 4 , 1 , 1 , 2 , 9 , 8 , 3 , 4 , 10 , 11 , 12 , 13 , 14 , 15 , 15 , 15 , 16 , 16 , 10 , 17 , 17 , 17 , 18 , 19 , 20 , 11 , 21 , 21 , 21 , 21 , 19 , 16 , 22 , 23 , 24 , 21 , 21 , 21 , 21 , 16 , 25 , 26 , 18 , 18 , 18 , 18 , 18 , 18 , 18 , 27 , 21 , 28 , 16 , 21 , 29 , 30 , 29 , 30 , 1 , 31 , 31 , 32 , 3 , 2 , 8 , 4 , 2 , 4 , 33 , 8 , 1 , 1 , 1 , 32 , 2 , 8 , 4 , 2 , 8 , 34 , 14 , 35 , 16 , 36 , 20 , 37 , 35 , 38 , 38 , 38 , 38 , 39 , 40 , 37 , 41 , 38 , 38 , 38 , 38 , 38 , 38 , 21 , 18 , 29 , 42 , 43 , 43 , 43 , 44 , 45 , 45 , 45 , 38 , 46 , 18 , 18 , 18 , 47 , 48 , 49 , 49 , 49 , 19 , 19 , 14 , 50 , 16 , 51 , 20 , 52 , 50 , 53 , 52 , 54 , 21 , 18 , 18 , 55 , 55 , 55 , 56 , 57 , 57 , 57 , 58 , 29 , 18 , 18 , 59 , 19 , 18 , 60 , 21 , 18 , 61 , 62 , 21 , 19 , 63 , 64 , 24 , 65 , 19 , 19 , 19 , 19 , 66 , 67 , 68 , 67 , 67 , 69 , 67 , 26 , 70 , 2 , 26 , 16 , 71 , 24 , 16 , 72 , 28 , 16 , 72 , 28 , 19 , 11 , 22 , 30 , 29 , 1 , 2 , 73 , 32 , 8 , 32 , 32 , 2 , 8 , 46 , 32 , 2 , 32 , 32 , 2 , 8 , 32 , 8 , 40 , 38 , 19 , 74 , 60 , 75 , 38 , 20 , 38 , 76 , 77 , 75 , 38 , 35 , 36 , 36 , 37 , 20 , 37 , 37 , 37 , 37 , 37 , 37 , 37 , 37 , 37 , 37 , 37 , 37 , 71 , 69 , 67 , 18 , 8 , 20 , 16 , 78 , 79 , 80 , 81 , 19 , 82 , 60 , 83 , 21 , 27 , 83 , 84 , 51 , 51 , 52 , 20 , 52 , 52 , 52 , 52 , 52 , 52 , 52 , 52 , 52 , 52 , 52 , 52 , 71 , 84 , 50 , 19 , 18 , 85 , 86 , 76 , 21 , 21 , 71 , 21 , 87 , 29 , 30 , 19 , 19 , 88 , 18 , 18 , 89 , 18 , 18 , 90 , 67 , 91 , 92 , 92 , 92 , 92 , 92 , 92 , 92 , 92 , 92 , 92 , 92 , 92 , 93 , 92 , 85 , 26 , 26 , 2 , 19 , 94 , 19 , 19 , 19 , 28 , 72 , 95 , 21 , 18 , 96 , 97 , 32 , 2 , 32 , 2 , 32 , 32 , 2 , 32 , 2 , 2 , 32 , 32 , 2 , 32 , 3 , 77 , 79 , 43 , 35 , 45 , 60 , 71 , 98 , 99 , 45 , 38 , 74 , 74 , 75 , 60 , 75 , 75 , 75 , 75 , 75 , 75 , 75 , 75 , 75 , 75 , 75 , 75 , 94 , 92 , 85 , 47 , 8 , 60 , 19 , 16 , 100 , 101 , 102 , 79 , 55 , 103 , 57 , 71 , 57 , 18 , 82 , 82 , 83 , 60 , 83 , 83 , 83 , 83 , 83 , 83 , 83 , 83 , 83 , 83 , 83 , 83 , 94 , 18 , 86 , 20 , 10 , 94 , 104 , 18 , 18 , 13 , 105 , 105 , 18 , 8 , 8 , 93 , 92 , 106 , 107 , 108 , 107 , 109 , 110 , 111 , 112 , 11 , 113 , 114 , 24 , 18 , 18 , 95 , 28 , 97 , 2 , 2 , 32 , 2 , 2 , 2 , 32 , 2 , 72 , 99 , 100 , 10 , 45 , 76 , 94 , 115 , 43 , 43 , 116 , 43 , 45 , 45 , 116 , 116 , 116 , 116 , 116 , 116 , 116 , 45 , 45 , 45 , 35 , 113 , 35 , 38 , 107 , 111 , 18 , 47 , 117 , 18 , 19 , 118 , 13 , 16 , 100 , 57 , 94 , 55 , 55 , 119 , 55 , 57 , 57 , 119 , 119 , 119 , 119 , 119 , 119 , 119 , 57 , 57 , 57 , 50 , 120 , 21 , 20 , 60 , 14 , 50 , 121 , 16 , 122 , 123 , 124 , 18 , 125 , 13 , 126 , 3 , 3 , 92 , 127 , 128 , 13 , 107 , 109 , 110 , 107 , 110 , 129 , 110 , 110 , 67 , 130 , 130 , 8 , 131 , 130 , 124 , 21 , 18 , 132 , 24 , 65 , 19 , 19 , 28 , 2 , 2 , 115 , 16 , 14 , 38 , 98 , 115 , 38 , 132 , 38 , 128 , 13 , 130 , 8 , 131 , 130 , 18 , 18 , 18 , 133 , 13 , 14 , 16 , 13 , 16 , 10 , 134 , 134 , 134 , 135 , 19 , 133 , 136 , 24 , 18 , 18 , 27 , 29 , 137 , 138 , 138 , 138 , 138 , 138 , 138 , 138 , 138 , 18 , 19 , 16 , 21 , 84 , 60 , 112 , 139 , 50 , 21 , 19 , 140 , 121 , 123 , 8 , 18 , 125 , 10 , 108 , 141 , 99 , 142 , 143 , 107 , 110 , 10 , 14 , 110 , 85 , 8 , 131 , 130 , 144 , 20 , 4 , 145 , 146 , 147 , 148 , 130 , 8 , 131 , 149 , 19 , 19 , 18 , 18 , 18 , 72 , 115 , 19 , 35 , 98 , 149 , 142 , 143 , 8 , 131 , 130 , 144 , 4 , 8 , 131 , 135 , 135 , 47 , 138 , 138 , 150 , 19 , 18 , 19 , 14 , 151 , 135 , 152 , 138 , 138 , 138 , 153 , 19 , 138 , 135 , 24 , 42 , 19 , 19 , 71 , 24 , 133 , 8 , 18 , 13 , 80 , 19 , 18 , 139 , 20 , 112 , 112 , 91 , 21 , 154 , 155 , 16 , 156 , 20 , 157 , 155 , 158 , 158 , 158 , 158 , 159 , 19 , 157 , 160 , 158 , 158 , 158 , 158 , 158 , 158 , 29 , 161 , 162 , 162 , 162 , 163 , 164 , 164 , 164 , 158 , 125 , 8 , 8 , 14 , 165 , 10 , 99 , 62 , 99 , 8 , 8 , 14 , 166 , 167 , 112 , 144 , 4 , 8 , 131 , 144 , 8 , 168 , 144 , 60 , 146 , 147 , 148 , 169 , 147 , 170 , 171 , 170 , 69 , 85 , 172 , 173 , 172 , 144 , 4 , 174 , 18 , 18 , 72 , 175 , 38 , 174 , 8 , 8 , 144 , 4 , 8 , 131 , 168 , 144 , 144 , 4 , 135 , 8 , 16 , 176 , 79 , 80 , 81 , 177 , 71 , 177 , 138 , 19 , 19 , 88 , 89 , 138 , 138 , 138 , 138 , 94 , 19 , 19 , 135 , 137 , 8 , 18 , 101 , 175 , 91 , 60 , 112 , 178 , 123 , 158 , 19 , 179 , 60 , 180 , 158 , 20 , 158 , 76 , 62 , 180 , 158 , 155 , 181 , 156 , 156 , 157 , 20 , 157 , 157 , 157 , 157 , 157 , 157 , 157 , 157 , 157 , 157 , 157 , 157 , 71 , 125 , 125 , 8 , 105 , 99 , 14 , 108 , 99 , 62 , 166 , 80 , 182 , 80 , 112 , 67 , 112 , 91 , 112 , 168 , 144 , 144 , 4 , 144 , 4 , 144 , 168 , 130 , 169 , 147 , 170 , 171 , 170 , 69 , 85 , 172 , 173 , 172 , 147 , 170 , 171 , 170 , 172 , 172 , 170 , 172 , 172 , 92 , 183 , 184 , 185 , 101 , 184 , 168 , 144 , 186 , 187 , 138 , 186 , 187 , 168 , 144 , 144 , 4 , 4 , 168 , 168 , 144 , 47 , 8 , 19 , 16 , 100 , 101 , 102 , 138 , 94 , 138 , 138 , 138 , 13 , 105 , 138 , 133 , 188 , 24 , 138 , 138 , 18 , 137 , 13 , 138 , 178 , 112 , 79 , 162 , 85 , 155 , 155 , 164 , 60 , 71 , 158 , 164 , 158 , 21 , 21 , 179 , 179 , 180 , 60 , 180 , 180 , 180 , 180 , 180 , 180 , 180 , 180 , 180 , 180 , 180 , 180 , 94 , 125 , 99 , 108 , 80 , 13 , 110 , 80 , 85 , 130 , 112 , 91 , 4 , 168 , 168 , 144 , 4 , 147 , 170 , 171 , 170 , 172 , 172 , 170 , 172 , 172 , 92 , 183 , 184 , 185 , 101 , 184 , 171 , 170 , 172 , 172 , 170 , 172 , 172 , 184 , 184 , 172 , 172 , 184 , 184 , 107 , 8 , 16 , 189 , 101 , 13 , 16 , 189 , 4 , 168 , 190 , 62 , 191 , 190 , 62 , 4 , 168 , 168 , 144 , 4 , 4 , 168 , 135 , 47 , 138 , 19 , 118 , 13 , 16 , 192 , 125 , 138 , 13 , 135 , 24 , 42 , 19 , 19 , 18 , 18 , 16 , 100 , 155 , 10 , 164 , 76 , 94 , 162 , 162 , 193 , 162 , 164 , 164 , 193 , 193 , 193 , 193 , 193 , 193 , 193 , 164 , 164 , 164 , 155 , 113 , 155 , 158 , 13 , 110 , 8 , 112 , 130 , 4 , 4 , 168 , 171 , 170 , 172 , 172 , 170 , 172 , 172 , 184 , 184 , 172 , 172 , 184 , 184 , 107 , 8 , 16 , 189 , 101 , 13 , 16 , 189 , 170 , 172 , 172 , 184 , 184 , 172 , 172 , 184 , 184 , 16 , 189 , 16 , 189 , 184 , 184 , 16 , 189 , 16 , 189 , 194 , 13 , 19 , 16 , 13 , 143 , 19 , 16 , 4 , 187 , 21 , 195 , 187 , 38 , 4 , 4 , 168 , 4 , 135 , 138 , 138 , 138 , 19 , 177 , 8 , 125 , 138 , 19 , 19 , 138 , 138 , 138 , 19 , 16 , 14 , 158 , 158 , 132 , 158 , 8 , 110 , 4 , 170 , 172 , 172 , 184 , 184 , 172 , 172 , 184 , 184 , 16 , 189 , 16 , 189 , 184 , 184 , 16 , 189 , 16 , 189 , 194 , 13 , 19 , 16 , 13 , 143 , 19 , 16 , 172 , 172 , 184 , 184 , 16 , 189 , 16 , 189 , 184 , 184 , 16 , 189 , 16 , 189 , 19 , 16 , 19 , 16 , 16 , 189 , 16 , 189 , 19 , 16 , 19 , 16 , 8 , 8 , 142 , 143 , 8 , 19 , 143 , 8 , 8 , 19 , 62 , 42 , 62 , 4 , 13 , 80 , 138 , 125 , 8 , 8 , 138 , 138 , 196 , 19 , 155 , 149 , 110 , 172 , 172 , 184 , 184 , 16 , 189 , 16 , 189 , 184 , 184 , 16 , 189 , 16 , 189 , 19 , 16 , 19 , 16 , 16 , 189 , 16 , 189 , 19 , 16 , 19 , 16 , 8 , 8 , 142 , 143 , 8 , 19 , 143 , 8 , 8 , 19 , 184 , 184 , 16 , 189 , 16 , 189 , 19 , 16 , 19 , 16 , 16 , 189 , 16 , 189 , 19 , 16 , 19 , 16 , 8 , 19 , 8 , 19 , 19 , 16 , 19 , 16 , 8 , 19 , 8 , 19 , 8 , 8 , 8 , 8 , 8 , 21 , 38 , 138 , 101 , 125 , 125 , 8 , 175 , 158 , 174 , 184 , 184 , 16 , 189 , 16 , 189 , 19 , 16 , 19 , 16 , 16 , 189 , 16 , 189 , 19 , 16 , 19 , 16 , 8 , 19 , 8 , 19 , 19 , 16 , 19 , 16 , 8 , 19 , 8 , 19 , 8 , 8 , 8 , 8 , 8 , 16 , 189 , 16 , 189 , 19 , 16 , 19 , 16 , 8 , 19 , 8 , 19 , 19 , 16 , 19 , 16 , 8 , 19 , 8 , 19 , 8 , 8 , 8 , 19 , 8 , 19 , 8 , 8 , 13 , 125 , 138 , 186 , 187 , 16 , 189 , 16 , 189 , 19 , 16 , 19 , 16 , 8 , 19 , 8 , 19 , 19 , 16 , 19 , 16 , 8 , 19 , 8 , 19 , 8 , 8 , 8 , 19 , 8 , 19 , 8 , 8 , 19 , 16 , 19 , 16 , 8 , 19 , 8 , 19 , 8 , 8 , 8 , 19 , 8 , 19 , 8 , 8 , 8 , 8 , 138 , 122 , 190 , 62 , 19 , 16 , 19 , 16 , 8 , 19 , 8 , 19 , 8 , 8 , 8 , 19 , 8 , 19 , 8 , 8 , 8 , 8 , 8 , 19 , 8 , 19 , 8 , 8 , 8 , 8 , 140 , 187 , 158 , 8 , 19 , 8 , 19 , 8 , 8 , 8 , 8 , 8 , 8 , 161 , 62 , 8 , 8 , 158  
                ]
        end
+
+       init do end
 end
index d962dce..fccb57c 100644 (file)
@@ -22,7 +22,7 @@ $ template make_lexer()
 # It is better user with the Parser
 class Lexer
        # Last peeked token
-       attr _token: Token
+       attr _token: nullable Token
 
        # Lexer current state
        attr _state: Int = 0
@@ -77,7 +77,7 @@ $ end foreach
                while _token == null do
                        _token = get_token
                end
-               return _token
+               return _token.as(not null)
        end
 
        # Give and consume the next token
@@ -88,11 +88,11 @@ $ end foreach
                        result = get_token
                end
                _token = null
-               return result
+               return result.as(not null)
        end
 
        # Get a token, or null if it is discarded
-       private meth get_token: Token
+       private meth get_token: nullable Token
        do
                var dfa_state = 0
 
index 71d4836..8b0d044 100644 (file)
@@ -35,7 +35,7 @@ $ end template
 $ template make_nodes()
 redef class PNode
        # Parent of the node in the AST
-       readable writable attr _parent: PNode 
+       readable writable attr _parent: nullable PNode
 
        # Remove a child from the AST
        meth remove_child(child: PNode)
@@ -44,7 +44,7 @@ redef class PNode
        end
 
        # Replace a child with an other node in the AST
-       meth replace_child(old_child: PNode, new_child: PNode) is abstract
+       meth replace_child(old_child: PNode, new_child: nullable PNode) is abstract
 
        # Replace itself with an other node in the AST
        meth replace_with(node: PNode)
@@ -78,7 +78,7 @@ end
 redef class Token
        redef meth visit_all(v: Visitor) do end
        redef meth visit_all_reverse(v: Visitor) do end
-       redef meth replace_child(old_child: PNode, new_child: PNode) do end
+       redef meth replace_child(old_child: PNode, new_child: nullable PNode) do end
 
        redef meth locate: String
        do
@@ -90,10 +90,10 @@ end
 
 redef class Prod
        # The first token of the production node
-       readable writable attr _first_token: Token 
+       readable writable attr _first_token: nullable Token
 
        # The last token of the production node
-       readable writable attr _last_token: Token 
+       readable writable attr _last_token: nullable Token
 
        redef meth locate: String
        do
@@ -134,7 +134,7 @@ class Visitor
         # Ask the visitor to visit a given node.
         # Usually automatically called by visit_all* methods.
         # Concrete visitors should redefine this method.
-        meth visit(e: PNode) is abstract
+        meth visit(e: nullable PNode) is abstract
 end
 
 $ end template
index c4df56c..2ba5317 100644 (file)
@@ -24,9 +24,9 @@ private class State
        readable writable attr _state: Int
 
        # The node stored with the state in the stack
-       readable writable attr _nodes: Object 
+       readable writable attr _nodes: nullable Object 
 
-       init(state: Int, nodes: Object)
+       init(state: Int, nodes: nullable Object)
        do
                _state = state
                _nodes = nodes
@@ -80,7 +80,7 @@ special ParserTable
        end
 
        # Push someting in the state stack
-       private meth push(numstate: Int, list_node: Object)
+       private meth push(numstate: Int, list_node: nullable Object)
        do
                var pos = _stack_pos + 1
                _stack_pos = pos
@@ -100,7 +100,7 @@ special ParserTable
        end
 
        # Pop something from the stack state
-       private meth pop: Object
+       private meth pop: nullable Object
        do
                var res = _stack[_stack_pos].nodes
                _stack_pos = _stack_pos -1
@@ -112,7 +112,6 @@ special ParserTable
        do
                push(0, null)
 
-               var ign: List[Token] = null
                var lexer = _lexer
                while true do
                        var token = lexer.peek
@@ -120,7 +119,6 @@ special ParserTable
                        var last_line = token.line
 
                        if token isa PError then
-                               assert token isa PError
                                return new Start(null, token)
                        end
 
@@ -165,7 +163,7 @@ special ParserTable
                                return node
                        end
                end
-               return null
+               abort
        end
 
        attr _reduce_table: Array[ReduceAction]
@@ -183,11 +181,12 @@ end
 private class SearchTokensVisitor
 special Visitor
        attr _untokenned_nodes: Array[Prod]
-       attr _last_token: Token
-       redef meth visit(n: PNode)
+       attr _last_token: nullable Token = null
+       redef meth visit(n: nullable PNode)
        do
-               if n isa Token then
-                       assert n isa Token
+               if n == null then
+                       return
+               else if n isa Token then
                        _last_token = n
                        for no in _untokenned_nodes do
                                no.first_token = n
@@ -216,19 +215,19 @@ private class ReduceAction@index
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
 $   foreach {action}
 $   choose
 $     when {@cmd='POP'}
                                        var ${translate(@result,"ABCDEFGHIJKLMNOPQRSTUVWXYZ","abcdefghijklmnopqrstuvwxyz")} = p.pop
 $     end
 $     when {@cmd='FETCHLIST'}
-                                       var ${translate(@result,"ABCDEFGHIJKLMNOPQRSTUVWXYZ","abcdefghijklmnopqrstuvwxyz")} = ${translate(@from,"ABCDEFGHIJKLMNOPQRSTUVWXYZ","abcdefghijklmnopqrstuvwxyz")} 
+                                       var ${translate(@result,"ABCDEFGHIJKLMNOPQRSTUVWXYZ","abcdefghijklmnopqrstuvwxyz")} = ${translate(@from,"ABCDEFGHIJKLMNOPQRSTUVWXYZ","abcdefghijklmnopqrstuvwxyz")}
                                        assert ${translate(@result,"ABCDEFGHIJKLMNOPQRSTUVWXYZ","abcdefghijklmnopqrstuvwxyz")} isa Array[Object]
 $     end
 $     when {@cmd='FETCHNODE'}
                                        var ${translate(@result,"ABCDEFGHIJKLMNOPQRSTUVWXYZ","abcdefghijklmnopqrstuvwxyz")} = ${translate(@from,"ABCDEFGHIJKLMNOPQRSTUVWXYZ","abcdefghijklmnopqrstuvwxyz")}
-                                       assert ${translate(@result,"ABCDEFGHIJKLMNOPQRSTUVWXYZ","abcdefghijklmnopqrstuvwxyz")} isa @etype
+                                       assert ${translate(@result,"ABCDEFGHIJKLMNOPQRSTUVWXYZ","abcdefghijklmnopqrstuvwxyz")} isa nullable @etype
 $     end
 $     when {@cmd='ADDNODE'}
                                        if ${translate(@node,"ABCDEFGHIJKLMNOPQRSTUVWXYZ","abcdefghijklmnopqrstuvwxyz")} != null then
@@ -236,19 +235,19 @@ $     when {@cmd='ADDNODE'}
                                        end
 $     end
 $     when {@cmd='ADDLIST'}
-                                       if ${translate(@fromlist,"ABCDEFGHIJKLMNOPQRSTUVWXYZ","abcdefghijklmnopqrstuvwxyz")} != null then
+#                                      if ${translate(@fromlist,"ABCDEFGHIJKLMNOPQRSTUVWXYZ","abcdefghijklmnopqrstuvwxyz")} != null then
                                                if ${translate(@tolist,"ABCDEFGHIJKLMNOPQRSTUVWXYZ","abcdefghijklmnopqrstuvwxyz")}.is_empty then
                                                        ${translate(@tolist,"ABCDEFGHIJKLMNOPQRSTUVWXYZ","abcdefghijklmnopqrstuvwxyz")} = ${translate(@fromlist,"ABCDEFGHIJKLMNOPQRSTUVWXYZ","abcdefghijklmnopqrstuvwxyz")}
                                                else
                                                        ${translate(@tolist,"ABCDEFGHIJKLMNOPQRSTUVWXYZ","abcdefghijklmnopqrstuvwxyz")}.append(${translate(@fromlist,"ABCDEFGHIJKLMNOPQRSTUVWXYZ","abcdefghijklmnopqrstuvwxyz")})
                                                end
-                                       end
+#                                      end
 $     end
 $     when {@cmd='MAKELIST'}
                                        var ${translate(@result,"ABCDEFGHIJKLMNOPQRSTUVWXYZ","abcdefghijklmnopqrstuvwxyz")} = new Array[Object]
 $     end
 $     when {@cmd='MAKENODE'}
-                                       var ${translate(@result,"ABCDEFGHIJKLMNOPQRSTUVWXYZ","abcdefghijklmnopqrstuvwxyz")} = new @etype.init_${translate(@etype,"ABCDEFGHIJKLMNOPQRSTUVWXYZ","abcdefghijklmnopqrstuvwxyz")}(
+                                       var ${translate(@result,"ABCDEFGHIJKLMNOPQRSTUVWXYZ","abcdefghijklmnopqrstuvwxyz")}: nullable @etype = new @etype.init_${translate(@etype,"ABCDEFGHIJKLMNOPQRSTUVWXYZ","abcdefghijklmnopqrstuvwxyz")}(
 $       foreach {arg}
 $           if @null
                                                null[-sep ','-]
@@ -280,7 +279,7 @@ $ end template
 $ template make_parser_tables()
 # Parser that build a full AST
 abstract class ParserTable
-       attr _action_table: Array[Array[Int]] = null
+       attr _action_table: Array[Array[Int]]
        private meth build_action_table
        do
                _action_table = once [ 
@@ -301,7 +300,7 @@ $   end foreach
        end
 $ end foreach
 
-       attr _goto_table: Array[Array[Int]] = null
+       attr _goto_table: Array[Array[Int]]
        private meth build_goto_table
        do
                _goto_table = once [ 
@@ -330,5 +329,7 @@ $ end
                        [-foreach {parser_data/errors/i}-]${.} [-sep ','-] [-end-]
                ]
        end
+
+       init do end
 end
 $ end template
index c03b85a..cd2f9df 100644 (file)
@@ -28,9 +28,13 @@ class @ename
 special ${../@ename}
 $ foreach {elem}
 $   if @is_list
-    readable writable attr _n_@name: List[@etype] = null
+    readable writable attr _n_@name: List[@etype] = new List[@etype]
 $   else
-    readable writable attr _n_@name: @etype = null
+$   if @modifier
+    readable writable attr _n_@name: nullable @etype = null
+$   else
+    readable writable attr _n_@name: @etype
+$   end
 $   end
 $ end
 end
@@ -38,7 +42,7 @@ $ end
 
 class Start
 special Prod
-    readable writable attr _n_base: $baseprod 
+    readable writable attr _n_base: nullable $baseprod 
     readable writable attr _n_eof: EOF 
 end
 $ end template
@@ -50,12 +54,16 @@ redef class @ename
 $ foreach {elem}
 $   if @is_list
 $   else
-    redef meth n_@name=(n: @etype)
+    redef meth n_@name=(n)
     do
         _n_@name = n
+$   if @modifier
         if n != null then
            n.parent = self
         end
+$   else
+       n.parent = self
+$   end
     end
 $   end
 $ end
@@ -68,7 +76,7 @@ $ foreach {elem}
 $   if {@is_list}
             n_@{name}: Collection[Object] [-sep ','-] # Should be Collection[@etype]
 $   else
-            n_@{name}: @etype [-sep ','-]
+            n_@{name}: nullable @etype [-sep ','-]
 $   end
 $ end
     )
@@ -79,24 +87,27 @@ $ end
         empty_init
 $ foreach {elem}
 $   if @is_list
-        _n_@{name} = new List[@{etype}]
        for n in n_@{name} do
                assert n isa @{etype}
                _n_@{name}.add(n)
                n.parent = self
        end
 $   else
+$   if {@modifier}
         _n_@name = n_@{name}
        if n_@{name} != null then
                n_@{name}.parent = self
        end
+$   else
+        _n_@name = n_@{name}.as(not null)
+       n_@{name}.parent = self
+$   end
 $   end
 $ end
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
 $ foreach {elem}
 $   if @is_list
         for i in [0.._n_@{name}.length[ do
@@ -118,7 +129,11 @@ $   else
                assert new_child isa @etype
                 _n_@{name} = new_child
            else
+$   if @modifier
                _n_@{name} = null
+$   else
+               abort
+$   end
             end
             return
        end
@@ -134,9 +149,13 @@ $     if @is_list
                 v.visit(n)
            end
 $     else
+$       if @modifier
         if _n_@{name} != null then
-            v.visit(_n_@{name})
+            v.visit(_n_@{name}.as(not null))
         end
+$       else
+        v.visit(_n_@{name})
+$       end
 $     end
 $   end foreach
     end
@@ -153,9 +172,13 @@ $     if @is_list
            end
        end
 $     else
+$       if @modifier
         if _n_@{name} != null then
-            v.visit(_n_@{name})
+            v.visit(_n_@{name}.as(not null))
         end
+$       else
+        v.visit(_n_@{name})
+$       end
 $     end
 $   end foreach
     end
@@ -164,16 +187,15 @@ $ end foreach
 
 redef class Start
     init(
-        n_base: $baseprod,
+        n_base: nullable $baseprod,
         n_eof: EOF)
     do
         _n_base = n_base
         _n_eof = n_eof
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
-        assert old_child != null
         if _n_base == old_child then
             if new_child == null then
             else
@@ -189,14 +211,14 @@ redef class Start
     redef meth visit_all(v: Visitor)
     do
         if _n_base != null then
-            v.visit(_n_base)
+            v.visit(_n_base.as(not null))
         end
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
         if _n_base != null then
-            v.visit(_n_base)
+            v.visit(_n_base.as(not null))
         end
     end
 end
index 4ac5723..bed98a0 100644 (file)
@@ -24,7 +24,7 @@ import syntax_base
 abstract class VariableContext
        # Look for the variable from its name
        # Return null if nothing found
-       meth [](s: Symbol): Variable
+       meth [](s: Symbol): nullable Variable
        do
                if _dico.has_key(s) then
                        return _dico[s]
@@ -64,7 +64,7 @@ abstract class VariableContext
 
        # The effective static type of a given variable
        # May be different from the declaration static type
-       meth stype(v: Variable): MMType
+       meth stype(v: Variable): nullable MMType
        do
                if _stypes.has_key(v) then
                        return _stypes[v]
@@ -75,7 +75,7 @@ abstract class VariableContext
 
        # Set effective static type of a given variable
        # May be different from the declaration static type
-       meth stype=(v: Variable, t: MMType)
+       meth stype=(v: Variable, t: nullable MMType)
        do
                _stypes[v] = t
        end
@@ -87,7 +87,7 @@ abstract class VariableContext
        attr _all_variables: Set[Variable]
 
        # Updated static type of variables
-       attr _stypes: Map[Variable, MMType] = new HashMap[Variable, MMType]
+       attr _stypes: Map[Variable, nullable MMType] = new HashMap[Variable, nullable MMType]
 
        # Build a new VariableContext
        meth sub(node: PNode): SubVariableContext
@@ -170,9 +170,9 @@ abstract class VariableContext
                                # NOP
                        else if s1 == s2 then
                                stype(v) = s1
-                       else if s1 < s2 then
+                       else if s2 == null or s1 < s2 then
                                stype(v) = s2
-                       else if s2 < s1 then
+                       else if s1 == null or s2 < s1 then
                                stype(v) = s1
                        else
                                stype(v) = basectx.stype(v)
index 2d04967..ced1bf5 100644 (file)
@@ -58,7 +58,7 @@ end
 # For and while use this class. closures uses the EscapableClosure subclass.
 class EscapableBlock
        # The syntax node of the block
-       readable attr _node: PNode = null
+       readable attr _node: PNode
 
        # Is self a break closure ?
        meth is_break_block: Bool do return false
@@ -66,10 +66,10 @@ class EscapableBlock
        # Collected expressions used in breaks.
        # null if break does not accept values.
        # break_list is used to store expressions used in break statments and perform type checks latter
-       meth break_list: Array[PExpr] do return null
+       meth break_list: nullable Array[PExpr] do return null
 
        # The static type required by the continue statement (if any)
-       meth continue_stype: MMType do return null
+       meth continue_stype: nullable MMType do return null
 
        init(node: PNode)
        do
@@ -85,11 +85,11 @@ special EscapableBlock
 
        redef meth is_break_block do return _closure.is_break
 
-       redef readable attr _break_list: Array[PExpr]
+       redef readable attr _break_list: nullable Array[PExpr]
 
        redef meth continue_stype do return _closure.signature.return_type
 
-       init(node: PNode, closure: MMClosure, break_list: Array[PExpr])
+       init(node: PNode, closure: MMClosure, break_list: nullable Array[PExpr])
        do
                super(node)
                _closure = closure
@@ -102,13 +102,13 @@ end
 class AEscapeExpr
 special PNode
        # The associated escapable block
-       readable attr _escapable_block: EscapableBlock
+       readable attr _escapable_block: nullable EscapableBlock
 
        # The name of the keyword
        meth kwname: String is abstract
 
        # Compute, set and return the _abelable_node value
-       meth compute_escapable_block(lctx: EscapableContext): EscapableBlock
+       meth compute_escapable_block(lctx: EscapableContext): nullable EscapableBlock
        do
                var block: EscapableBlock
                if lctx.is_empty then
index 99be10f..064a4c0 100644 (file)
@@ -185,7 +185,6 @@ redef class MMSrcLocalClass
                for a in src_local_properties do
                        if a isa MMSrcAttribute then
                                var n = a.node
-                               assert n isa AAttrPropdef
                                if n.n_expr == null then unassigned_attributes.add(a)
                        end
                end
@@ -204,7 +203,7 @@ redef class MMSrcLocalClass
                        supers = che.order.select_smallests(supers)
 
                        # A mixin class can only have 0 or 1 most specific non-mixin superclass
-                       var superclass: MMLocalClass = null # This most specific non-mixin superclass (if any)
+                       var superclass: nullable MMLocalClass = null # This most specific non-mixin superclass (if any)
 
                        if supers.length > 1 then
                                v.error(nodes.first, "Error: Explicit constructor required in {self} since multiple inheritance of constructor is forbiden. Conflicting classes are {supers.join(", ")}. Costructors are {super_constructors.join(", ")}.")
@@ -219,7 +218,7 @@ redef class MMSrcLocalClass
                                        make_visible_an_inherited_global_property(gp)
                                end
                        end
-                       global.mixin_of = superclass.global
+                       global.mixin_of = superclass.as(not null).global # FIXME Dear! this should break!
                else
                        # v.error(nodes.first, "Error, constructor required in {self} since no anonimous init found in {sc}.")
 
@@ -244,15 +243,11 @@ redef class MMSrcLocalClass
 
                # Intro or redefinition ?
                if has_global_property_by_name(pname) then
-                       var globs = properties_by_name[pname]
-                       if globs.length > 1 then
-                               v.error(prop.node, "Name error: {self} inherits {globs.length} global properties named {pname}.")
-                       end
-                       var g = globs.first
+                       var g = get_property_by_name(pname)
                        prop.inherit_global(g)
                end
 
-               if prop.global == null then
+               if not prop.is_global_set then
                        prop.new_global
                        prop.global.is_init = prop.is_init
                end
@@ -266,10 +261,10 @@ redef class MMLocalProperty
 end
 
 redef class MMImplicitInit
-       readable attr _super_init: MMLocalProperty = null
+       readable attr _super_init: nullable MMLocalProperty = null
        redef meth accept_property_visitor(v)
        do
-               var base: MMLocalProperty = null
+               var base: nullable MMLocalProperty = null
                for p in super_inits do
                        if p.signature.arity > 0 then
                                if base == null then
@@ -290,7 +285,9 @@ redef class MMImplicitInit
                        end
                end
                for a in unassigned_attributes do
-                       params.add(a.signature.return_type)
+                       var sig = a.signature
+                       if sig == null then return # Broken attribute definition
+                       params.add(sig.return_type.as(not null))
                end
                signature = new MMSignature(params, null, local_class.get_type)
        end
@@ -319,10 +316,10 @@ end
 private class ClassBuilderVisitor
 special AbsSyntaxVisitor
        # Current class arity
-       readable writable attr _local_class_arity: Int 
+       readable writable attr _local_class_arity: Int = 0
 
        # Current class formal parameters
-       readable writable attr _formals: Map[Symbol, MMTypeFormalParameter] 
+       readable writable attr _formals: nullable Map[Symbol, MMTypeFormalParameter]
 
        redef meth visit(n) do n.accept_class_builder(self)
        init(tc, m) do super
@@ -395,7 +392,7 @@ private class SignatureBuilder
        readable writable attr _closure_decls: Array[AClosureDecl] = new Array[AClosureDecl]
 
        # Current signature
-       readable writable attr _signature: MMSignature = null 
+       readable writable attr _signature: nullable MMSignature = null 
 end
 
 ###############################################################################
@@ -416,7 +413,7 @@ redef class AModule
                # Import super-modules
                var module_names_to_import = new Array[Symbol]
                var module_visibility = new HashMap[Symbol, Int]
-               var no_import: PImport = null
+               var no_import: nullable PImport = null
                for i in n_imports do
                        var n = i.module_name
                        if n != null then
@@ -457,7 +454,7 @@ end
 
 redef class PImport
        # Imported module name (or null)
-       meth module_name: Symbol is abstract
+       meth module_name: nullable Symbol is abstract
 
        # Visibility level (intrude/public/private)
        meth visibility_level: Int is abstract
@@ -498,7 +495,8 @@ end
 
 
 redef class PClassdef
-       redef readable attr _local_class: MMSrcLocalClass
+       redef meth local_class: MMSrcLocalClass do return _local_class.as(not null)
+       attr _local_class: nullable MMSrcLocalClass
 
        # Name of the class
        meth name: Symbol is abstract
@@ -534,13 +532,12 @@ redef class PClassdef
                end
                _local_class = local_class
                v.local_class_arity = 0
-               v.formals = new HashMap[Symbol, MMTypeFormalParameter]
+               v.formals = local_class.formal_dict
 
                #####
                super
                #####
 
-               _local_class.formal_dict = v.formals
                v.formals = null
        end
 
@@ -668,7 +665,7 @@ end
 
 redef class AFormaldef
        # The associated formal generic parameter (MM entity)
-       attr _formal: MMSrcTypeFormalParameter
+       attr _formal: nullable MMSrcTypeFormalParameter
 
        redef meth accept_class_builder(v)
        do
@@ -690,14 +687,14 @@ redef class AFormaldef
                        if n_type == null then
                                _formal.bound = v.module.type_any.as_nullable
                        else
-                               _formal.bound = n_type.get_stype(v)
+                               _formal.bound = n_type.get_stype(v).as(not null)
                        end
                else
                        var ob = o.get_formal(_formal.position).bound.for_module(v.module)
                        if n_type == null then
                                _formal.bound = ob
                        else
-                               _formal.bound = n_type.get_stype(v)
+                               _formal.bound = n_type.get_stype(v).as(not null)
                                if _formal.bound != ob then
                                        v.error(self, "Redef error: Cannot change formal parameter type of class {c}; got {_formal.bound}, expected {ob}.")
                                end
@@ -707,12 +704,13 @@ redef class AFormaldef
 end
 
 redef class ASuperclass
-       readable attr _ancestor: MMSrcAncestor
+       readable attr _ancestor: nullable MMSrcAncestor
 
        redef meth accept_class_specialization_builder(v)
        do
                super
                var c = n_type.get_local_class(v)
+               if c == null then return
                var ancestor = new MMSrcAncestor(self, c)
                _ancestor = ancestor
                v.local_class.add_direct_parent(ancestor)
@@ -785,10 +783,8 @@ redef class PPropdef
                                v.error(v.signature_builder.untyped_params.first, "Error: Untyped parameter.")
                        else
                                prop.signature = new MMSignature(new Array[MMType], null, v.local_class.get_type)
-                               if v.signature_builder.closure_decls != null then
-                                       for clos in v.signature_builder.closure_decls do
-                                               prop.signature.closures.add(clos.variable.closure)
-                                       end
+                               for clos in v.signature_builder.closure_decls do
+                                       prop.signature.closures.add(clos.variable.closure)
                                end
                        end
                end
@@ -908,27 +904,31 @@ redef class PPropdef
 end
 
 redef class AAttrPropdef
-       redef readable attr _readmethod: MMSrcMethod
-       redef readable attr _writemethod: MMSrcMethod
-       redef readable attr _prop: MMSrcAttribute 
+       redef readable attr _readmethod: nullable MMSrcMethod
+       redef readable attr _writemethod: nullable MMSrcMethod
+       attr _prop: nullable MMSrcAttribute
+       redef meth prop do return _prop.as(not null)
 
        redef meth accept_property_builder(v)
        do
                super
                var name = n_id.to_symbol
-               var prop = new MMSrcAttribute(name, v.local_class, self)
+               var lc = v.local_class
+               var prop = new MMSrcAttribute(name, lc, self)
                _prop = prop
                v.local_class.add_src_local_property(v, prop)
 
                if n_readable != null then
                        name = n_id.text.substring_from(1).to_symbol
-                       _readmethod = new MMReadImplementationMethod(name, v.local_class, self)
-                       v.local_class.add_src_local_property(v, _readmethod)
+                       var readmethod = new MMReadImplementationMethod(name, lc, self)
+                       _readmethod = readmethod
+                       v.local_class.add_src_local_property(v, readmethod)
                end
                if n_writable != null then
                        name = (n_id.text.substring_from(1) + "=").to_symbol
-                       _writemethod = new MMWriteImplementationMethod(name, v.local_class, self)
-                       v.local_class.add_src_local_property(v, _writemethod)
+                       var writemethod = new MMWriteImplementationMethod(name, lc, self)
+                       _writemethod = writemethod
+                       v.local_class.add_src_local_property(v, writemethod)
                end
        end
        
@@ -937,31 +937,35 @@ redef class AAttrPropdef
                super
                var t: MMType
                if n_type != null then
-                       t = n_type.get_stype(v)
+                       var t0 = n_type.get_stype(v)
+                       if t0 != null then t = t0 else return
                else
                        v.error(self, "Not yet implemented: Attribute definition {_prop.local_class}::{_prop} requires an explicit type.")
                        return
                end
 
+               var prop = prop
                var signature = new MMSignature(new Array[MMType], t, v.local_class.get_type)
-               _prop.signature = signature
+               prop.signature = signature
                var visibility_level = n_visibility.level
-               process_and_check(v, _prop, n_kwredef != null, visibility_level)
+               process_and_check(v, prop, n_kwredef != null, visibility_level)
                if n_readable != null then
-                       _readmethod.signature = signature
-                       process_and_check(v, _readmethod, n_readable.n_kwredef != null, visibility_level)
-                       n_type.check_visibility(v, _readmethod)
+                       var m = _readmethod.as(not null)
+                       m.signature = signature
+                       process_and_check(v, m, n_readable.n_kwredef != null, visibility_level)
+                       n_type.check_visibility(v, m)
                end
                if n_writable != null then
-                       _writemethod.signature = new MMSignature(new Array[MMType].with_items(t), null, v.local_class.get_type)
-                       process_and_check(v, _writemethod, n_writable.n_kwredef != null, visibility_level)
-                       n_type.check_visibility(v, _writemethod)
+                       var m = _writemethod.as(not null)
+                       m.signature = new MMSignature(new Array[MMType].with_items(t), null, v.local_class.get_type)
+                       process_and_check(v, m, n_writable.n_kwredef != null, visibility_level)
+                       n_type.check_visibility(v, m)
                end
        end
 
        redef meth accept_abs_syntax_visitor(v)
        do
-               v.local_property = prop
+               v.local_property = _prop
                super
                v.local_property = null
        end
@@ -969,30 +973,33 @@ end
 
 redef class AMethPropdef
        # Name of the method
-       readable attr _name: Symbol 
+       readable attr _name: nullable Symbol 
 
-       redef readable attr _method: MMMethSrcMethod
+       attr _method: nullable MMMethSrcMethod
+       redef meth method do return _method.as(not null)
 
        redef meth accept_property_builder(v)
        do
                super
+               var name: Symbol
                if n_methid == null then
                        if self isa AConcreteInitPropdef then
-                               _name = once "init".to_symbol
+                               name = once "init".to_symbol
                        else
-                               _name = once "main".to_symbol
+                               name = once "main".to_symbol
                        end
-               else 
-                       _name = n_methid.name
+               else
+                       name = n_methid.name.as(not null)
                        # FIXME: Add the 'unary' keyword
                        if n_methid.name == (once "-".to_symbol) then
                                var ns = n_signature
                                if ns isa ASignature and ns.n_params.length == 0 then
-                                       _name = once "unary -".to_symbol
+                                       name = once "unary -".to_symbol
                                end
                        end
                end
-               var prop = new MMMethSrcMethod(_name, v.local_class, self)
+               _name = name
+               var prop = new MMMethSrcMethod(name, v.local_class, self)
                _method = prop
                v.local_class.add_src_local_property(v, prop)
        end
@@ -1005,19 +1012,19 @@ redef class AMethPropdef
                if v.signature_builder.signature == null then
                        #_method.signature = new MMSignature(new Array[MMType], null, v.local_class.get_type)
                else
-                       _method.signature = v.signature_builder.signature
+                       method.signature = v.signature_builder.signature.as(not null)
                end
                var visibility_level = 1
                if n_visibility != null and n_visibility.level > 1 then
                        visibility_level = n_visibility.level
                end
-               process_and_check(v, _method, n_kwredef != null, visibility_level)
-               if n_signature != null then n_signature.check_visibility(v, _method)
+               process_and_check(v, method, n_kwredef != null, visibility_level)
+               if n_signature != null then n_signature.check_visibility(v, method)
        end
 
        redef meth accept_abs_syntax_visitor(v)
        do
-               v.local_property = method
+               v.local_property = _method
                super
                v.local_property = null
        end
@@ -1033,7 +1040,8 @@ redef class AMainMethPropdef
 end
 
 redef class ATypePropdef
-       redef readable attr _prop: MMSrcTypeProperty 
+       redef meth prop do return _prop.as(not null)
+       attr _prop: nullable MMSrcTypeProperty
 
        redef meth accept_property_builder(v)
        do
@@ -1048,14 +1056,14 @@ redef class ATypePropdef
        do
                super
                var signature = new MMSignature(new Array[MMType], n_type.get_stype(v), v.local_class.get_type)
-               _prop.signature = signature
+               prop.signature = signature
                var visibility_level = n_visibility.level
-               process_and_check(v, _prop, n_kwredef != null, visibility_level)
+               process_and_check(v, prop, n_kwredef != null, visibility_level)
        end
        
        redef meth accept_abs_syntax_visitor(v)
        do
-               v.local_property = prop
+               v.local_property = _prop
                super
                v.local_property = null
        end
@@ -1077,7 +1085,7 @@ end
 
 redef class PMethid
        # Method name
-       readable attr _name: Symbol 
+       readable attr _name: nullable Symbol 
 
        redef meth accept_property_builder(v)
        do
@@ -1105,9 +1113,9 @@ redef class ASignature
                else if not v.signature_builder.params.is_empty or n_type != null then
                        var pars = new Array[MMType]
                        for p in v.signature_builder.params do
-                               pars.add(p.stype)
+                               pars.add(p.stype.as(not null))
                        end
-                       var ret: MMType = null
+                       var ret: nullable MMType = null
                        if n_type != null then
                                ret = n_type.get_stype(v)
                        end
@@ -1132,12 +1140,13 @@ redef class ASignature
 end
 
 redef class PParam
-       redef readable attr _position: Int
+       redef readable attr _position: Int = 0
 
-       redef readable attr _variable: ParamVariable 
+       redef meth variable: ParamVariable do return _variable.as(not null)
+       attr _variable: nullable ParamVariable
 
        # The type of the parameter in signature
-       readable writable attr _stype: MMType
+       readable writable attr _stype: nullable MMType
 
        redef meth accept_property_verifier(v)
        do
@@ -1147,7 +1156,7 @@ redef class PParam
                v.signature_builder.params.add(self)
                v.signature_builder.untyped_params.add(self)
                if n_type != null then
-                       var stype = n_type.get_stype(v)
+                       var stype = n_type.get_stype(v).as(not null)
                        for p in v.signature_builder.untyped_params do
                                p.stype = stype
                                if is_vararg then
@@ -1156,7 +1165,7 @@ redef class PParam
                                        else
                                                v.error(self, "Error: A vararg parameter is already defined.")
                                        end
-                                       stype = v.type_array(stype) 
+                                       stype = v.type_array(stype)
                                end
                                p.variable.stype = stype
                        end
@@ -1172,7 +1181,8 @@ redef class AParam
 end
 
 redef class AClosureDecl
-       redef readable attr _variable: ClosureVariable
+       redef meth variable: ClosureVariable do return _variable.as(not null)
+       attr _variable: nullable ClosureVariable
 
        redef meth accept_property_verifier(v)
        do
@@ -1188,7 +1198,7 @@ redef class AClosureDecl
                end
 
                # Add the finalizer to the closure signature
-               var finalize_sig = new MMSignature(new Array[MMType], null, null)
+               var finalize_sig = new MMSignature(new Array[MMType], null, v.module.type_any) # FIXME should be no receiver
                var finalizer_clos = new MMClosure(finalize_sig, false, true)
                sig.closures.add(finalizer_clos)
 
@@ -1211,7 +1221,6 @@ redef class AType
                var t = get_stype(v)
                if t == null then return
                var bc = t.local_class
-               if bc == null then return
                if bc.global.visibility_level >= 3 then
                        v.error(self, "Access error: Class {bc} is private and cannot be used in the signature of the non-private property {p}.")
                end
index 0b53c0a..21cfba4 100644 (file)
@@ -63,10 +63,10 @@ special MMConcreteClass
        readable attr _nodes: Array[PClassdef]
 
        # Concrete NIT source generic formal parameter by name
-       readable writable attr _formal_dict: Map[Symbol, MMTypeFormalParameter]
+       readable attr _formal_dict: Map[Symbol, MMTypeFormalParameter] = new HashMap[Symbol, MMTypeFormalParameter]
 
        # Concrete NIT source properties by name
-       readable attr _src_local_properties: Map[Symbol, MMLocalProperty] 
+       readable attr _src_local_properties: Map[Symbol, MMLocalProperty]
 
        init(mod: MMSrcModule, n: Symbol, cla: PClassdef, a: Int)
        do
@@ -101,7 +101,7 @@ end
 
 redef class MMLocalProperty
        # The attached node (if any)
-       meth node: PNode do return null
+       meth node: nullable PNode do return null
 
        # Is the concrete method defined as init
        meth is_init: Bool do return false
@@ -156,8 +156,8 @@ end
 class MMMethSrcMethod
 special MMSrcMethod
        redef meth is_init do return _node isa AConcreteInitPropdef
-       redef readable attr _node: AMethPropdef
-       init(name: Symbol, cla: MMLocalClass, n: AMethPropdef)
+       redef readable attr _node: nullable AMethPropdef
+       init(name: Symbol, cla: MMLocalClass, n: nullable AMethPropdef)
        do
                super(name, cla)
                _node = n
@@ -193,22 +193,20 @@ end
 # Local variables
 abstract class Variable
        # Name of the variable
-       readable attr _name: Symbol 
+       readable attr _name: Symbol
 
        # Declaration AST node
-       readable attr _decl: PNode
+       readable attr _decl: nullable PNode
 
        # Static type
-       readable writable attr _stype: MMType 
+       readable writable attr _stype: nullable MMType
 
        redef meth to_s do return _name.to_s
 
        meth kind: String is abstract
 
-       init(n: Symbol, d: PNode)
+       init(n: Symbol, d: nullable PNode)
        do
-               #assert n != null
-               #assert d != null
                _name = n
                _decl = d
        end
@@ -225,7 +223,7 @@ end
 class ParamVariable
 special Variable
        redef meth kind do return once "parameter"
-       init(n: Symbol, d: PNode) do super
+       init(n: Symbol, d: nullable PNode) do super
 end
 
 # Automatic variable (like in the 'for' statement)
@@ -323,43 +321,45 @@ special Visitor
        end
 
        # The current module
-       readable writable attr _module: MMSrcModule 
+       readable attr _module: MMSrcModule
 
        # The current class
-       readable writable attr _local_class: MMSrcLocalClass 
+       meth local_class: MMSrcLocalClass do return _local_class.as(not null)
+       writable attr _local_class: nullable MMSrcLocalClass
 
        # The current property
-       readable writable attr _local_property: MMLocalProperty
+       meth local_property: MMLocalProperty do return _local_property.as(not null)
+       writable attr _local_property: nullable MMLocalProperty
 
        # The current tool configuration/status
        readable attr _tc: ToolContext 
 
        # Display an error for a given syntax node
-       meth error(n: PNode, s: String)
+       meth error(n: nullable PNode, s: String)
        do
                _tc.error("{locate(n)}: {s}")
        end
 
        # Display a warning for a given syntax node
-       meth warning(n: PNode, s: String)
+       meth warning(n: nullable PNode, s: String)
        do
                _tc.warning("{locate(n)}: {s}")
        end
 
        #
-       meth locate(n: PNode): String
+       meth locate(n: nullable PNode): String
        do
                if n != null then return n.locate
                return _module.filename
        end
 
        # Check conformity and display error
-       meth check_conform(n: PNode, subtype: MMType, stype: MMType): Bool
+       meth check_conform(n: PNode, subtype: nullable MMType, stype: nullable MMType): Bool
        do
                if stype == null or subtype == null then
                        return false
                end
-               if subtype < stype then
+               if subtype < stype  then
                        return true
                end
                # Do not enforce nullable subtype rules yet
@@ -392,8 +392,9 @@ special Visitor
        end
 
        # Combine check_conform and check_expr
-       meth check_conform_expr(n: PExpr, stype: MMType): Bool
+       meth check_conform_expr(n: PExpr, stype: nullable MMType): Bool
        do
+               if stype == null then return false
                if check_expr(n) then return check_conform(n, n.stype, stype) else return false
        end
 
@@ -407,9 +408,9 @@ special Visitor
        #   Int, Int, Object => return Object
        #   Int, Float => display error, return null
        #   nullable Int, Object => return nullable Object
-       meth check_conform_multiexpr(stype: MMType, nodes: Collection[PExpr]): MMType
+       meth check_conform_multiexpr(stype: nullable MMType, nodes: Collection[PExpr]): nullable MMType
        do
-               var node: PExpr = null # candidate node
+               var node: nullable PExpr = null # candidate node
                for n in nodes do
                        if not check_expr(n) then return null
                        var ntype = n.stype
@@ -418,13 +419,13 @@ special Visitor
                                stype = stype.as_nullable
                                ntype = ntype.as_nullable
                        end
-                       if stype == null or (ntype != null and stype < ntype) then
+                       if stype == null or stype < ntype then
                                stype = ntype
                                node = n
                        end
                end
                for n in nodes do
-                       if not n.stype < stype then
+                       if not n.stype < stype.as(not null) then
                                if node == null then
                                        error(n, "Type error: no most general type. Got {n.stype} and {stype}.")
                                else
@@ -450,16 +451,16 @@ redef class PNode
 end
 
 redef class Token
-       attr _symbol: Symbol
+       attr _symbol_cache: nullable Symbol
 
        # Symbol associated with the text
        # Lazily computed
        meth to_symbol: Symbol
        do
-               var s = _symbol
+               var s = _symbol_cache
                if s == null then
                        s = text.to_symbol
-                       _symbol = s
+                       _symbol_cache = s
                end
                return s
        end
@@ -475,10 +476,10 @@ redef class AAttrPropdef
        meth prop: MMSrcAttribute is abstract
 
        # Associated read accessor (MM entity)
-       meth readmethod: MMSrcMethod is abstract
+       meth readmethod: nullable MMSrcMethod is abstract
 
        # Associated write accessor (MM entity)
-       meth writemethod: MMSrcMethod is abstract
+       meth writemethod: nullable MMSrcMethod is abstract
 end
 
 redef class AMethPropdef
@@ -511,17 +512,17 @@ redef class PType
        # Retrieve the local class corresponding to the type.
        # Display an error and return null if there is no class
        # Display an error and return null if the type is not class based (formal one)
-       meth get_local_class(v: AbsSyntaxVisitor): MMLocalClass is abstract
+       meth get_local_class(v: AbsSyntaxVisitor): nullable MMLocalClass is abstract
 
        # Retrieve corresponding static type.
        # Display an error and return null if there is a problem
-       meth get_stype(v: AbsSyntaxVisitor): MMType is abstract
+       meth get_stype(v: AbsSyntaxVisitor): nullable MMType is abstract
 
        # Retrieve corresponding static type.
        # Display an error and return null if there is a problem
        # But do not performs any subtype check.
        # get_unchecked_stype should be called to check that the static type is fully valid
-       meth get_unchecked_stype(v: AbsSyntaxVisitor): MMType is abstract
+       meth get_unchecked_stype(v: AbsSyntaxVisitor): nullable MMType is abstract
 
        # Check that a static definition type is conform with regard to formal types
        # Useful with get_unchecked_stype
@@ -530,7 +531,7 @@ redef class PType
 end
 
 redef class AType
-       attr _stype_cache: MMType
+       attr _stype_cache: nullable MMType = null
        attr _stype_cached: Bool = false
 
        redef meth get_local_class(v)
@@ -539,7 +540,7 @@ redef class AType
                var mod = v.module
                var cla = v.local_class
 
-               if (cla.formal_dict != null and cla.formal_dict.has_key(name)) or (cla.global_properties != null and cla.has_global_property_by_name(name)) then
+               if cla.formal_dict.has_key(name) or cla.has_global_property_by_name(name) then
                        v.error(n_id, "Type error: {name} is a formal type")
                        _stype_cached = true
                        return null
@@ -564,7 +565,7 @@ redef class AType
                var name = n_id.to_symbol
                var mod = v.module
                var cla = v.local_class
-               var t: MMType
+               var t: nullable MMType
 
                if cla.formal_dict.has_key(name) then
                        if n_types.length > 0 then
@@ -577,7 +578,7 @@ redef class AType
                        return t
                end
 
-               if cla.global_properties != null and cla.has_global_property_by_name(name) then
+               if cla.has_global_property_by_name(name) then
                        if n_types.length > 0 then
                                v.error(self, "Type error: formal type {name} cannot have formal parameters.")
                                return null
@@ -604,7 +605,9 @@ redef class AType
                if arity > 0 then
                        var tab = new Array[MMType]
                        for p in n_types do
-                               tab.add(p.get_unchecked_stype(v))
+                               var t2 = p.get_unchecked_stype(v)
+                               if t2 == null then return null
+                               tab.add(t2)
                        end
                        t = local_class.get_instantiate_type(tab)
                else
@@ -661,33 +664,39 @@ end
 
 redef class AVardeclExpr
        # Assiociated local variable
-       readable writable attr _variable: VarVariable
+       meth variable: VarVariable is abstract
+       #readable writable attr _variable: nullable VarVariable
 end
 
 redef class AForExpr
        # Associated automatic local variable
-       readable writable attr _variable: AutoVariable
+       meth variable: AutoVariable is abstract
+       #readable writable attr _variable: nullable AutoVariable
 end
 
 redef class ASelfExpr
        # Associated local variable
-       readable writable attr _variable: ParamVariable 
+       meth variable: ParamVariable is abstract
+       #readable writable attr _variable: nullable ParamVariable
 end
 
 redef class AVarFormExpr
        # Associated local variable
-       readable writable attr _variable: Variable 
+       meth variable: Variable is abstract
+       #readable writable attr _variable: nullable Variable
 end
 
 redef class AClosureCallExpr
        # Associated closure variable
-       readable writable attr _variable: ClosureVariable
+       meth variable: ClosureVariable is abstract
+       #readable writable attr _variable: nullable ClosureVariable
 end
 
 redef class PClosureDef
        # Associated closure
-       readable writable attr _closure: MMClosure
+       #readable writable attr _closure: nullable MMClosure
+       meth closure: MMClosure is abstract
 
        # Automatic variables
-       readable writable attr _variables: Array[AutoVariable]
+       readable writable attr _variables: nullable Array[AutoVariable]
 end
index 6717511..878de83 100644 (file)
@@ -44,25 +44,28 @@ special AbsSyntaxVisitor
        end
 
        # Current knowledge about variables names and types
-       readable writable attr _variable_ctx: VariableContext
+       meth variable_ctx: VariableContext do return _variable_ctx.as(not null)
+       writable attr _variable_ctx: nullable VariableContext
 
        # Non-bypassable knowledge about variables names and types
-       readable writable attr _base_variable_ctx: VariableContext
+       meth base_variable_ctx: VariableContext do return _base_variable_ctx.as(not null)
+       writable attr _base_variable_ctx: nullable VariableContext
 
        # Current knowledge about escapable blocks
        readable writable attr _escapable_ctx: EscapableContext = new EscapableContext(self)
 
        # The current reciever
-       readable writable attr _self_var: ParamVariable
+       meth self_var: ParamVariable do return _self_var.as(not null)
+       writable attr _self_var: nullable ParamVariable
 
        # Block of the current method
-       readable writable attr _top_block: PExpr
+       readable writable attr _top_block: nullable PExpr
 
        # List of explicit invocation of constructors of super-classes
-       readable writable attr _explicit_super_init_calls: Array[MMMethod]
+       readable writable attr _explicit_super_init_calls: nullable Array[MMMethod]
 
        # Is a other constructor of the same class invoked
-       readable writable attr _explicit_other_init_call: Bool
+       readable writable attr _explicit_other_init_call: Bool = false
 
        # Make the if_true_variable_ctx of the expression effective
        private meth use_if_true_variable_ctx(e: PExpr)
@@ -83,7 +86,7 @@ special AbsSyntaxVisitor
 
        init(tc, module) do super
 
-       private meth get_default_constructor_for(n: PNode, c: MMLocalClass, prop: MMSrcMethod): MMMethod
+       private meth get_default_constructor_for(n: PNode, c: MMLocalClass, prop: MMSrcMethod): nullable MMMethod
        do
                var v = self
                #var prop = v.local_property
@@ -97,7 +100,7 @@ special AbsSyntaxVisitor
                        var gps = gp.signature_for(c.get_type)
                        assert gp isa MMSrcMethod
                        var garity = gps.arity
-                       if prop != null and gp.name == prop.name then
+                       if gp.name == prop.name then
                                if garity == 0 or (parity == garity and prop.signature < gps) then
                                        return gp
                                else
@@ -159,13 +162,14 @@ redef class AAttrPropdef
        do
                super
                if n_expr != null then
-                       v.check_conform_expr(n_expr, prop.signature.return_type)
+                       v.check_conform_expr(n_expr.as(not null), prop.signature.return_type.as(not null))
                end
        end
 end
 
 redef class AMethPropdef
-       redef readable attr _self_var: ParamVariable
+       redef meth self_var do return _self_var.as(not null)
+       attr _self_var: nullable ParamVariable
        redef meth accept_typing(v)
        do
                v.variable_ctx = new RootVariableContext(v, self)
@@ -199,8 +203,8 @@ redef class AConcreteInitPropdef
                else 
                        var i = 0
                        var l = explicit_super_init_calls.length
-                       var cur_m: MMMethod = null
-                       var cur_c: MMLocalClass = null
+                       var cur_m: nullable MMMethod = null
+                       var cur_c: nullable MMLocalClass = null
                        if i < l then
                                cur_m = explicit_super_init_calls[i]
                                cur_c = cur_m.global.intro.local_class.for_module(v.module)
@@ -212,7 +216,7 @@ redef class AConcreteInitPropdef
                                        j += 1
                                else if cur_c != null and (c.cshe <= cur_c or cur_c.global.is_mixin) then
                                        if c == cur_c then j += 1
-                                       super_init_calls.add(cur_m)
+                                       super_init_calls.add(cur_m.as(not null))
                                        i += 1
                                        if i < l then
                                                cur_m = explicit_super_init_calls[i]
@@ -236,16 +240,13 @@ end
 redef class PParam
        redef meth after_typing(v)
        do
-               # TODO: why the test?
-               if v.variable_ctx != null then
-                       v.variable_ctx.add(variable)
-               end
+               v.variable_ctx.add(variable)
        end
 end
 
 redef class AClosureDecl
        # The corresponding escapable object
-       readable attr _escapable: EscapableBlock
+       readable attr _escapable: nullable EscapableBlock
 
        redef meth accept_typing(v)
        do
@@ -257,8 +258,9 @@ redef class AClosureDecl
                v.base_variable_ctx = v.variable_ctx
                v.variable_ctx = v.variable_ctx.sub(self)
 
-               _escapable = new EscapableClosure(self, variable.closure, null)
-               v.escapable_ctx.push(_escapable)
+               var escapable = new EscapableClosure(self, variable.closure, null)
+               _escapable = escapable
+               v.escapable_ctx.push(escapable)
 
                super
 
@@ -280,7 +282,9 @@ redef class AClosureDecl
 end
 
 redef class PType
-       readable attr _stype: MMType
+       meth stype: MMType do return _stype.as(not null)
+       attr _stype: nullable MMType
+
        redef meth after_typing(v)
        do
                _stype = get_stype(v)
@@ -300,9 +304,9 @@ redef class PExpr
                        print "{locate}: is_statement"
                        abort
                end
-               return _stype
+               return _stype.as(not null)
        end
-       attr _stype: MMType
+       attr _stype: nullable MMType
 
        # Is the expression the implicit receiver
        meth is_implicit_self: Bool do return false
@@ -311,30 +315,33 @@ redef class PExpr
        meth is_self: Bool do return false
 
        # The variable accessed is any
-       meth its_variable: Variable do return null
+       meth its_variable: nullable Variable do return null
 
        # The variable type information if current boolean expression is true
-       readable private attr _if_true_variable_ctx: VariableContext
+       readable private attr _if_true_variable_ctx: nullable VariableContext
 
        # The variable type information if current boolean expression is false
-       readable private attr _if_false_variable_ctx: VariableContext
+       readable private attr _if_false_variable_ctx: nullable VariableContext
 end
 
 redef class AVardeclExpr
+       attr _variable: nullable VarVariable
+       redef meth variable do return _variable.as(not null)
+
        redef meth after_typing(v)
        do
                var va = new VarVariable(n_id.to_symbol, self)
-               variable = va
+               _variable = va
                v.variable_ctx.add(va)
                if n_expr != null then v.variable_ctx.mark_is_set(va)
 
                if n_type != null then
                        va.stype = n_type.stype
                        if n_expr != null then
-                               v.check_conform_expr(n_expr, va.stype)
+                               v.check_conform_expr(n_expr.as(not null), va.stype)
                        end
                else
-                       if not v.check_expr(n_expr) then return
+                       if not v.check_expr(n_expr.as(not null)) then return
                        va.stype = n_expr.stype
                end
                _is_typed = true
@@ -366,12 +373,13 @@ redef class AReturnExpr
        do
                v.variable_ctx.unreash = true
                var t = v.local_property.signature.return_type
-               if n_expr == null and t != null then
+               var e = n_expr
+               if e == null and t != null then
                        v.error(self, "Error: Return without value in a function.")
-               else if n_expr != null and t == null then
+               else if e != null and t == null then
                        v.error(self, "Error: Return with value in a procedure.")
-               else if n_expr != null and t != null then
-                       v.check_conform_expr(n_expr, t)
+               else if e != null and t != null then
+                       v.check_conform_expr(e, t)
                end
                _is_typed = true
        end
@@ -395,7 +403,7 @@ redef class AContinueExpr
                else if n_expr != null and t == null then
                        v.error(self, "Error: continue without value required in this block.")
                else if n_expr != null and t != null then
-                       v.check_conform_expr(n_expr, t)
+                       v.check_conform_expr(n_expr.as(not null), t)
                end
                _is_typed = true
        end
@@ -415,7 +423,7 @@ redef class ABreakExpr
                        v.error(self, "Error: break without value required in this block.")
                else if n_expr != null and bl != null then
                        # Typing check can only be done later
-                       bl.add(n_expr)
+                       bl.add(n_expr.as(not null))
                end
                _is_typed = true
        end
@@ -440,7 +448,7 @@ redef class AIfExpr
 
                # Process the 'then'
                if n_then != null then
-                       v.variable_ctx = v.variable_ctx.sub(n_then)
+                       v.variable_ctx = v.variable_ctx.sub(n_then.as(not null))
                        v.visit(n_then)
                end
 
@@ -453,7 +461,7 @@ redef class AIfExpr
 
                # Process the 'else'
                if n_else != null then
-                       v.variable_ctx = v.variable_ctx.sub(n_else)
+                       v.variable_ctx = v.variable_ctx.sub(n_else.as(not null))
                        v.visit(n_else)
                end
 
@@ -466,12 +474,13 @@ end
 
 redef class AWhileExpr
        # The corresponding escapable block
-       readable attr _escapable: EscapableBlock
+       readable attr _escapable: nullable EscapableBlock
 
        redef meth accept_typing(v)
        do
-               _escapable = new EscapableBlock(self)
-               v.escapable_ctx.push(_escapable)
+               var escapable = new EscapableBlock(self)
+               _escapable = escapable
+               v.escapable_ctx.push(escapable)
                var old_var_ctx = v.variable_ctx
                var old_base_var_ctx = v.base_variable_ctx
                v.base_variable_ctx = v.variable_ctx
@@ -486,7 +495,7 @@ redef class AWhileExpr
 
                # Process inside
                if n_block != null then
-                       v.variable_ctx = v.variable_ctx.sub(n_block)
+                       v.variable_ctx = v.variable_ctx.sub(n_block.as(not null))
                        v.visit(n_block)
                end
 
@@ -498,36 +507,45 @@ redef class AWhileExpr
 end
 
 redef class AForExpr
-       # The corresponding escapable block
-       readable attr _escapable: EscapableBlock
+       attr _variable: nullable AutoVariable
+       redef meth variable do return _variable.as(not null)
 
-       readable attr _meth_iterator: MMMethod
-       readable attr _meth_is_ok: MMMethod
-       readable attr _meth_item: MMMethod
-       readable attr _meth_next: MMMethod
+       # The corresponding escapable block
+       readable attr _escapable: nullable EscapableBlock
+
+       attr _meth_iterator: nullable MMMethod
+       meth meth_iterator: MMMethod do return _meth_iterator.as(not null)
+       attr _meth_is_ok: nullable MMMethod
+       meth meth_is_ok: MMMethod do return _meth_is_ok.as(not null)
+       attr _meth_item: nullable MMMethod
+       meth meth_item: MMMethod do return _meth_item.as(not null)
+       attr _meth_next: nullable MMMethod
+       meth meth_next: MMMethod do return _meth_next.as(not null)
        redef meth accept_typing(v)
        do
-               _escapable = new EscapableBlock(self)
-               v.escapable_ctx.push(_escapable)
+               var escapable = new EscapableBlock(self)
+               _escapable = escapable
+               v.escapable_ctx.push(escapable)
 
                var old_var_ctx = v.variable_ctx
                var old_base_var_ctx = v.base_variable_ctx
                v.base_variable_ctx = v.variable_ctx
                v.variable_ctx = v.variable_ctx.sub(self)
                var va = new AutoVariable(n_id.to_symbol, self)
-               variable = va
+               _variable = va
                v.variable_ctx.add(va)
 
                v.visit(n_expr)
 
                if not v.check_conform_expr(n_expr, v.type_collection) then return
                var expr_type = n_expr.stype
+
                _meth_iterator = expr_type.local_class.select_method(once ("iterator".to_symbol))
                if _meth_iterator == null then
                        v.error(self, "Error: Collection MUST have an iterate method")
                        return
                end
-               var iter_type = _meth_iterator.signature_for(expr_type).return_type
+               var iter_type = _meth_iterator.signature_for(expr_type).return_type.as(not null)
                _meth_is_ok = iter_type.local_class.select_method(once ("is_ok".to_symbol))
                if _meth_is_ok == null then
                        v.error(self, "Error: {iter_type} MUST have an is_ok method")
@@ -566,6 +584,11 @@ redef class AAssertExpr
        end
 end
 
+redef class AVarFormExpr
+       attr _variable: nullable Variable
+       redef meth variable do return _variable.as(not null)
+end
+
 redef class AVarExpr
        redef meth its_variable do return variable
 
@@ -598,7 +621,7 @@ redef class AReassignFormExpr
        # Compute and check method used through the reassigment operator
        # On success return the static type of the result of the reassigment operator
        # Else display an error and return null
-       private meth do_rvalue_typing(v: TypingVisitor, type_lvalue: MMType): MMType
+       private meth do_rvalue_typing(v: TypingVisitor, type_lvalue: nullable MMType): nullable MMType
        do
                if type_lvalue == null then
                        return null
@@ -618,7 +641,7 @@ redef class AReassignFormExpr
        end
 
        # Method used through the reassigment operator (once computed)
-       readable attr _assign_method: MMMethod
+       readable attr _assign_method: nullable MMMethod
 end
 
 redef class AVarReassignExpr
@@ -652,11 +675,14 @@ redef class AMinusAssignOp
 end
 
 redef class ASelfExpr
+       attr _variable: nullable ParamVariable
+       redef meth variable do return _variable.as(not null)
+
        redef meth its_variable do return variable
 
        redef meth after_typing(v)
        do
-               variable = v.self_var
+               _variable = v.self_var
                _stype = v.variable_ctx.stype(variable)
                _is_typed = true
        end
@@ -782,7 +808,8 @@ redef class ACharExpr
 end
 
 redef class AStringFormExpr
-       readable attr _meth_with_native: MMMethod
+       attr _meth_with_native: nullable MMMethod
+       meth meth_with_native: MMMethod do return _meth_with_native.as(not null)
        redef meth after_typing(v)
        do
                _stype = v.type_string
@@ -793,17 +820,22 @@ redef class AStringFormExpr
 end
 
 redef class ASuperstringExpr
-       readable attr _meth_with_capacity: MMMethod
-       readable attr _meth_add: MMMethod
-       readable attr _meth_to_s: MMMethod
-       readable attr _atype: MMType
+       meth meth_with_capacity: MMMethod do return _meth_with_capacity.as(not null)
+       attr _meth_with_capacity: nullable MMMethod
+       meth meth_add: MMMethod do return _meth_add.as(not null)
+       attr _meth_add: nullable MMMethod
+       meth meth_to_s: MMMethod do return _meth_to_s.as(not null)
+       attr _meth_to_s: nullable MMMethod
+       readable attr _atype: nullable MMType
        redef meth after_typing(v)
        do
-               _stype = v.type_string
-               _atype = v.type_array(_stype)
-               _meth_with_capacity = _atype.local_class.select_method(once "with_capacity".to_symbol)
+               var stype = v.type_string
+               _stype = stype
+               var atype = v.type_array(stype)
+               _atype = atype
+               _meth_with_capacity = atype.local_class.select_method(once "with_capacity".to_symbol)
                if _meth_with_capacity == null then v.error(self, "{_atype} MUST have a with_capacity method.")
-               _meth_add = _atype.local_class.select_method(once "add".to_symbol)
+               _meth_add = atype.local_class.select_method(once "add".to_symbol)
                if _meth_add == null then v.error(self, "{_atype} MUST have an add method.")
                _meth_to_s = v.type_object.local_class.select_method(once "to_s".to_symbol)
                if _meth_to_s == null then v.error(self, "Object MUST have a to_s method.")
@@ -820,14 +852,15 @@ redef class ANullExpr
 end
 
 redef class AArrayExpr
-       readable attr _meth_with_capacity: MMMethod
-       readable attr _meth_add: MMMethod
+       meth meth_with_capacity: MMMethod do return _meth_with_capacity.as(not null)
+       attr _meth_with_capacity: nullable MMMethod
+       meth meth_add: MMMethod do return _meth_add.as(not null)
+       attr _meth_add: nullable MMMethod
 
        redef meth after_typing(v)
        do
                var stype = v.check_conform_multiexpr(null, n_exprs)
-               if stype == null then return
-               do_typing(v, stype)
+               if stype != null then do_typing(v, stype)
        end
 
        private meth do_typing(v: TypingVisitor, element_type: MMType)
@@ -844,7 +877,8 @@ redef class AArrayExpr
 end
 
 redef class ARangeExpr
-       readable attr _meth_init: MMMethod
+       meth meth_init: MMMethod do return _meth_init.as(not null)
+       attr _meth_init: nullable MMMethod
        redef meth after_typing(v)
        do
                if not v.check_expr(n_expr) or not v.check_expr(n_expr2) then return
@@ -882,7 +916,7 @@ end
 redef class ASuperExpr
 special ASuperInitCall
        # readable attr _prop: MMSrcMethod
-       readable attr _init_in_superclass: MMMethod
+       readable attr _init_in_superclass: nullable MMMethod
        redef meth after_typing(v)
        do
                var precs: Array[MMLocalProperty] = v.local_property.prhe.direct_greaters
@@ -909,7 +943,7 @@ special ASuperInitCall
                        _init_in_superclass = p
                        register_super_init_call(v, p)
                        if n_args.length > 0 then
-                               var signature = get_signature(v, v.self_var.stype, p, true)
+                               var signature = get_signature(v, v.self_var.stype.as(not null), p, true)
                                _arguments = process_signature(v, signature, p.name, n_args.to_a)
                        end
                else
@@ -917,19 +951,19 @@ special ASuperInitCall
                        return
                end
 
-               if precs.first.signature_for(v.self_var.stype).return_type != null then
+               if precs.first.signature_for(v.self_var.stype.as(not null)).return_type != null then
                        var stypes = new Array[MMType]
-                       var stype: MMType = null
+                       var stype: nullable MMType = null
                        for prop in precs do
                                assert prop isa MMMethod
-                               var t = prop.signature_for(v.self_var.stype).return_type.for_module(v.module).adapt_to(v.local_property.signature.recv)
+                               var t = prop.signature_for(v.self_var.stype.as(not null)).return_type.for_module(v.module).adapt_to(v.local_property.signature.recv)
                                stypes.add(t)
                                if stype == null or stype < t then
                                        stype = t
                                end
                        end
                        for t in stypes do
-                               v.check_conform(self, t, stype)
+                               v.check_conform(self, t, stype.as(not null))
                        end
                        _stype = stype
                end
@@ -942,10 +976,10 @@ end
 
 redef class AAttrFormExpr
        # Attribute accessed
-       readable attr _prop: MMAttribute
+       readable attr _prop: nullable MMAttribute
 
        # Attribute type of the acceded attribute
-       readable attr _attr_type: MMType
+       readable attr _attr_type: nullable MMType
 
        # Compute the attribute accessed
        private meth do_typing(v: TypingVisitor)
@@ -1017,13 +1051,13 @@ end
 class AAbsAbsSendExpr
 special PExpr
        # The signature of the called property
-       readable attr _prop_signature: MMSignature
+       readable attr _prop_signature: nullable MMSignature
 
        # The real arguments used (after star transformation) (once computed)
-       readable attr _arguments: Array[PExpr]
+       readable attr _arguments: nullable Array[PExpr]
 
        # Check the conformity of a set of arguments `raw_args' to a signature.
-       private meth process_signature(v: TypingVisitor, psig: MMSignature, name: Symbol, raw_args: Array[PExpr]): Array[PExpr]
+       private meth process_signature(v: TypingVisitor, psig: MMSignature, name: Symbol, raw_args: nullable Array[PExpr]): nullable Array[PExpr]
        do
                var par_vararg = psig.vararg_rank
                var par_arity = psig.arity
@@ -1060,7 +1094,7 @@ special PExpr
        end
 
        # Check the conformity of a set of defined closures
-       private meth process_closures(v: TypingVisitor, psig: MMSignature, name: Symbol, cd: Array[PClosureDef]): MMType
+       private meth process_closures(v: TypingVisitor, psig: MMSignature, name: Symbol, cd: nullable Array[PClosureDef]): nullable MMType
        do
                var t = psig.return_type
                var cs = psig.closures # Declared closures
@@ -1075,7 +1109,7 @@ special PExpr
                                v.error(self, "Error: {name} requires {cs.length} blocks, {cd.length} found.")
                        else
                                # Initialize the break list if a value is required for breaks (ie. if the method is a function)
-                               var break_list: Array[ABreakExpr] = null
+                               var break_list: nullable Array[ABreakExpr] = null
                                if t != null then break_list = new Array[ABreakExpr]
 
                                # Process each closure definition
@@ -1103,12 +1137,11 @@ end
 class AAbsSendExpr
 special AAbsAbsSendExpr
        # Compute the called global property
-       private meth do_typing(v: TypingVisitor, type_recv: MMType, is_implicit_self: Bool, recv_is_self: Bool, name: Symbol, raw_args: Array[PExpr], closure_defs: Array[PClosureDef])
+       private meth do_typing(v: TypingVisitor, type_recv: MMType, is_implicit_self: Bool, recv_is_self: Bool, name: Symbol, raw_args: nullable Array[PExpr], closure_defs: nullable Array[PClosureDef])
        do
                var prop = get_property(v, type_recv, is_implicit_self, name)
                if prop == null then return
                var sig = get_signature(v, type_recv, prop, recv_is_self)
-               if sig == null then return
                var args = process_signature(v, sig, prop.name, raw_args)
                if args == null then return
                var rtype = process_closures(v, sig, prop.name, closure_defs)
@@ -1119,11 +1152,10 @@ special AAbsAbsSendExpr
                _return_type = rtype
        end
 
-       private meth get_property(v: TypingVisitor, type_recv: MMType, is_implicit_self: Bool, name: Symbol): MMMethod
+       private meth get_property(v: TypingVisitor, type_recv: MMType, is_implicit_self: Bool, name: Symbol): nullable MMMethod
        do
-               if type_recv == null then return null
                var lc = type_recv.local_class
-               var prop: MMMethod = null
+               var prop: nullable MMMethod = null
                if lc.has_global_property_by_name(name) then prop = lc.select_method(name)
                if prop == null and v.local_property.global.is_init then
                        var props = type_recv.local_class.super_methods_named(name)
@@ -1158,10 +1190,10 @@ special AAbsAbsSendExpr
        end
 
        # The invoked method (once computed)
-       readable attr _prop: MMMethod
+       readable attr _prop: nullable MMMethod
 
        # The return type (if any) (once computed)
-       readable attr _return_type: MMType
+       readable attr _return_type: nullable MMType
 end
 
 # A possible call of constructor in a super class
@@ -1174,9 +1206,10 @@ special AAbsSendExpr
                        v.error(self, "Error: Constructor invocation {property} must not be in nested block.")
                end
                var cla = v.module[property.global.intro.local_class.global]
-               var prev_class: MMLocalClass = null
-               if not v.explicit_super_init_calls.is_empty then
-                       prev_class = v.explicit_super_init_calls.last.global.intro.local_class
+               var prev_class: nullable MMLocalClass = null
+               var esic = v.explicit_super_init_calls.as(not null)
+               if not esic.is_empty then
+                       prev_class = esic.last.global.intro.local_class
                end
                var order = v.local_class.cshe.reverse_linear_extension
                if cla == v.local_class then
@@ -1194,7 +1227,7 @@ special AAbsSendExpr
                                        if not last_is_found then
                                                v.error(self, "Error: Constructor of {c} must be invoked before constructor of {prev_class}")
                                        end
-                                       v.explicit_super_init_calls.add(property)
+                                       esic.add(property)
                                        break
                                end
                        end
@@ -1207,8 +1240,8 @@ redef class ANewExpr
 special AAbsSendExpr
        redef meth after_typing(v)
        do
+               if n_type._stype == null then return
                var t = n_type.stype
-               if t == null then return
                if t.local_class.global.is_abstract then
                        v.error(self, "Error: try to instantiate abstract class {t.local_class}.")
                        return
@@ -1239,10 +1272,10 @@ special ASuperInitCall
        meth name: Symbol is abstract 
 
        # Raw arguments used (withour star transformation)
-       meth raw_arguments: Array[PExpr] is abstract
+       meth raw_arguments: nullable Array[PExpr] is abstract
 
        # Closure definitions
-       meth closure_defs: Array[PClosureDef] do return null
+       meth closure_defs: nullable Array[PClosureDef] do return null
 
        redef meth after_typing(v)
        do
@@ -1253,7 +1286,8 @@ special ASuperInitCall
        do
                if not v.check_expr(n_expr) then return
                do_typing(v, n_expr.stype, n_expr.is_implicit_self, n_expr.is_self, name, raw_arguments, closure_defs)
-               if prop == null then return
+               if _prop == null then return
+               var prop = _prop.as(not null)
 
                if prop.global.is_init then
                        if not v.local_property.global.is_init then
@@ -1273,12 +1307,13 @@ end
 class ASendReassignExpr
 special ASendExpr
 special AReassignFormExpr
-       readable attr _read_prop: MMMethod
+       readable attr _read_prop: nullable MMMethod
        redef meth do_all_typing(v)
        do
                if not v.check_expr(n_expr) then return
                var raw_args = raw_arguments
                do_typing(v, n_expr.stype, n_expr.is_implicit_self, n_expr.is_self, name, raw_args, null)
+               var prop = _prop
                if prop == null then return
                if prop.global.is_init then
                        if not v.local_property.global.is_init then
@@ -1287,7 +1322,7 @@ special AReassignFormExpr
                                v.error(self, "Error: constructor {prop} is not invoken on 'self'.")
                        end
                end
-               var t = prop.signature_for(n_expr.stype).return_type
+               var t = prop.signature_for(n_expr.stype).return_type.as(not null)
                if not n_expr.is_self then t = t.not_for_self
 
                var t2 = do_rvalue_typing(v, t)
@@ -1299,7 +1334,6 @@ special AReassignFormExpr
                raw_args.add(n_value)
 
                do_typing(v, n_expr.stype, n_expr.is_implicit_self, n_expr.is_self, "{name}=".to_symbol, raw_args, null)
-               if prop == null then return
                if prop.global.is_init then
                        if not v.local_property.global.is_init then
                                v.error(self, "Error: try to invoke constructor {prop} in a method.")
@@ -1407,14 +1441,14 @@ end
 redef class ACallFormExpr
        redef meth after_typing(v)
        do
-               if n_expr != null and n_expr.is_implicit_self then
+               if n_expr.is_implicit_self then
                        var name = n_id.to_symbol
                        var variable = v.variable_ctx[name]
                        if variable != null then
                                if variable isa ClosureVariable then
                                        var n = new AClosureCallExpr.init_aclosurecallexpr(n_id, n_args, n_closure_defs)
                                        replace_with(n)
-                                       n.variable = variable
+                                       n._variable = variable
                                        n.after_typing(v)
                                        return
                                else
@@ -1423,7 +1457,7 @@ redef class ACallFormExpr
                                                return
                                        end
                                        var vform = variable_create(variable)
-                                       vform.variable = variable
+                                       vform._variable = variable
                                        replace_with(vform)
                                        vform.after_typing(v)
                                        return
@@ -1436,7 +1470,7 @@ redef class ACallFormExpr
 
        redef meth closure_defs
        do
-               if n_closure_defs == null or n_closure_defs.is_empty then
+               if n_closure_defs.is_empty then
                        return null
                else
                        return n_closure_defs.to_a
@@ -1509,6 +1543,9 @@ end
 
 redef class AClosureCallExpr
 special AAbsAbsSendExpr
+       attr _variable: nullable ClosureVariable
+       redef meth variable do return _variable.as(not null)
+
        redef meth after_typing(v)
        do
                var va = variable
@@ -1527,10 +1564,13 @@ special AAbsAbsSendExpr
 end
 
 redef class PClosureDef
+       attr _closure: nullable MMClosure
+       redef meth closure do return _closure.as(not null)
+
        # The corresponding escapable object
-       readable attr _escapable: EscapableBlock
+       readable attr _escapable: nullable EscapableBlock
 
-       attr _accept_typing2: Bool
+       attr _accept_typing2: Bool = false
        redef meth accept_typing(v)
        do
                # Typing is deferred, wait accept_typing2(v)
@@ -1551,7 +1591,7 @@ redef class AClosureDef
                        return
                end
 
-               closure = esc.closure
+               _closure = esc.closure
 
                var old_var_ctx = v.variable_ctx
                var old_base_var_ctx = v.base_variable_ctx
index 20d0306..0b0a618 100644 (file)
@@ -27,7 +27,7 @@ end
 
 class B
 special A
-       redef meth ==(a: Object): Bool
+       redef meth ==(a: nullable Object): Bool
        do
                if not a isa B then
                        return false
index 7dde9d5..2d48bd9 100644 (file)
@@ -22,7 +22,7 @@ class Foo
                10.output
        end
 
-       redef meth ==(o: Object): Bool
+       redef meth ==(o: nullable Object): Bool
        do
                return true
        end
index c0b974d..2a2a403 100644 (file)
@@ -46,7 +46,7 @@ class A
           5.output
           return self
    end
-   redef meth ==(a: Object): Bool
+   redef meth ==(a: nullable Object): Bool
    do
           7.output
           return true
index eac89d2..3045dd8 100644 (file)
@@ -20,5 +20,5 @@ print('1')
 print("1")
 print(true)
 print(false)
-print(null)
+print("")
 print(["1"])