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
        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 
 
        # 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 
 
        # 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
 
        # Current value of this option
-       readable writable attr _value: VALUE 
+       meth value: VALUE do return _value.as(VALUE)
 
        # Default value of this option
 
        # Default value of this option
-       readable writable attr _default_value: VALUE
+       readable writable attr _default_value: nullable VALUE
 
        # Create a new option
 
        # 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]
        do
                if names == null then
                        _names = new Array[String]
@@ -113,7 +113,6 @@ special Option
 
        redef meth read_param(it)
        do
 
        redef meth read_param(it)
        do
-               assert context != null
                if it.is_ok then
                        value = convert(it.item)
                        it.next
                if it.is_ok then
                        value = convert(it.item)
                        it.next
@@ -127,7 +126,7 @@ end
 
 class OptionString
 special OptionParameter
 
 class OptionString
 special OptionParameter
-       redef type VALUE: String
+       redef type VALUE: nullable String
 
        init(help: String, names: String...) do init_opt(help, null, names)
 
 
        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
 
        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
                _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
        redef meth pretty_default
        do
                if default_value != null then
-                       return " ({_enum[default_value]})"
+                       return " ({_enum[default_value.as(not null)]})"
                else
                        return ""
                end
                else
                        return ""
                end
@@ -246,7 +245,6 @@ class OptionContext
        meth add_option(opts: Option...)
        do
                for opt in opts do
        meth add_option(opts: Option...)
        do
                for opt in opts do
-                       opt.context = self
                        _options.add(opt)
                end
        end
                        _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(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.
 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 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
 
        # 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
 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
 
        redef meth [](key)
        do
@@ -406,7 +406,6 @@ special MapIterator[K, E]
        redef meth next
        do 
                _iter.next
        redef meth next
        do 
                _iter.next
-               while _iter.is_ok and _iter.item == null do _iter.next
        end
 
        attr _iter: Iterator[Couple[K,E]]
        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
        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
                var l = length
                if o.length != l then return false
                var i = 0
@@ -306,7 +305,7 @@ special ArrayCapable[E]
        end
 
        # The internal storage.
        end
 
        # The internal storage.
-       attr _items: NativeArray[E] = null
+       attr _items: nullable NativeArray[E] = null
 
        # The size of `_items'.
        attr _capacity: Int = 0
 
        # The size of `_items'.
        attr _capacity: Int = 0
@@ -325,7 +324,6 @@ special IndexedIterator[E]
 
        init(a: AbstractArrayRead[E])
        do
 
        init(a: AbstractArrayRead[E])
        do
-               assert not_nil: a != null
                _array = a
                _index = 0
        end
                _array = a
                _index = 0
        end
index 72dd195..0bc9783 100644 (file)
@@ -59,7 +59,7 @@ class Process
        end
 
        # Internal code to handle execusion
        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
        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
        # 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
 
                stdout.write("\n")
        end
 
@@ -54,12 +52,11 @@ end
 class FStream
 special IOS
 special NativeFileCapable
 class FStream
 special IOS
 special NativeFileCapable
-       
        # The path of the file.
        # The path of the file.
-       readable attr _path: String = null
+       readable attr _path: nullable String = null
 
        # The FILE *.
 
        # The FILE *.
-       attr _file: NativeFile = null
+       attr _file: nullable NativeFile = null
 
        meth file_stat: FileStat
        do return _file.file_stat end
 
        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]
 # 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
 
        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
 
        # 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
 
        # 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
 
                # 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]
 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]
 end
 
 class HashMap[K, V]
@@ -358,7 +357,7 @@ special MapIterator[K, V]
        attr _map: HashMap[K, V]
 
        # The current node
        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
 
        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 _set: HashSet[E]
 
        # The position in the internal map storage
-       attr _node: HashSetNode[E]
+       attr _node: nullable HashSetNode[E]
 
        init(set: HashSet[E])
        do
 
        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 ==
        # 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 =".
 
        # 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
 
        # 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
        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
 
        # The last node of the list
-       attr _tail: ListNode[E]
+       attr _tail: nullable ListNode[E]
 
        # Get the `i'th node. get `null' otherwise.
 
        # 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
        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
        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
        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'.
        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
        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
 
        # The index of the current node
        redef readable attr _index: Int
@@ -278,8 +278,8 @@ special Container[E]
        end
 
        # The next node.
        end
 
        # The next node.
-       readable writable attr _next: ListNode[E]
+       readable writable attr _next: nullable ListNode[E]
 
        # The previous node.
 
        # The previous node.
-       readable writable attr _prev: ListNode[E]
+       readable writable attr _prev: nullable ListNode[E]
 end
 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
        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
 
        # 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
        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
                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
        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
                var l = length
                if o.length != l then return false
                var i = 0
@@ -589,14 +587,14 @@ class StringCapable
 end
 
 redef class Sys
 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
 
        redef meth args: IndexedCollection[String]
        do
                if _args_cache == null then init_args
-               return _args_cache
+               return _args_cache.as(not null)
        end
        end
-       
+
        # The name of the program as given by the OS
        meth program_name: String
        do
        # 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.
 
        # 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]
 
        # 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
        # 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
                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.
        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.
 
        # 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.
        #
 
        # Search all occurences of p into self.
        #
index 20aa0b5..3fcdf8d 100644 (file)
@@ -21,14 +21,14 @@ import syntax
 private import utils
 
 redef class ToolContext
 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 _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.
 end
 
 # Class used to generate files.
@@ -163,7 +163,7 @@ end
 
 redef class MMLocalClass
        # Cached primitive_info result
 
 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
 
        # 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
        # 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
 
        do
                if _primitive_info_b == true then return _primitive_info_cache
 
@@ -288,15 +288,17 @@ end
 
 redef class MMLocalProperty
        # Cacher result of cname
 
 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
 
        # 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
                end
-               return _cname_cache
+               return cname
        end
 
        # C macro used to get the function for the call of a super property
        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
 
 # 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
 
        # 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
        # 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
        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
                _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 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
 
        init(module: MMSrcModule)
        do
@@ -86,26 +85,27 @@ special ColorContext
        readable attr _local_class: MMLocalClass
 
        # The identifier of the class
        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
 
        # 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
 
        # 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)
 
        # 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)
 
        # 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
 
        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]
 
        # 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))
 
                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
                        clt.add(new TableEltClassInitTable(self))
                end
                for p in src_local_properties do
@@ -318,7 +319,7 @@ redef class MMSrcModule
                return ga
        end
 
                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)
        do
                for j in [0..cmp.length[ do
                        var e = cmp.item(j)
@@ -327,7 +328,7 @@ redef class MMSrcModule
                end
        end
 
                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
        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)
                        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
                                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
                                v.add_instr("G_sys = NEW_Sys();")
                                v.add_instr("{mainm.cname}(G_sys);")
                        end
@@ -627,8 +627,7 @@ special TableEltProp
                                end
                        end
                end
                                end
                        end
                end
-               assert false
-               return null
+               abort
        end
 end
 
        end
 end
 
@@ -874,7 +873,7 @@ redef class MMLocalClass
                        var ctx_old = v.ctx
                        v.ctx = new CContext
 
                        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]
 
                        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
                                        # 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)
                                        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
 
 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} */")
        do
                if n == null then return
                #add_instr("/* Compile stmt {n.locate} */")
@@ -67,9 +67,9 @@ redef class CompilerVisitor
                end
        end
 
                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]
 
        # 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
 
                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
        do
                var n = nmc.method.node
                assert n isa AConcreteInitPropdef
@@ -107,7 +107,7 @@ redef class CompilerVisitor
                        end
                        j += 1
                end
                        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
                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
                        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
                                        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?
        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
 
        # Return the cvariable of a Nit variable
        meth varname(v: Variable): String
@@ -165,7 +165,7 @@ class CFunctionContext
        end
 
        # Return the next available variable
        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
        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
 # 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
 
        # 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
 
        # 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
        # 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
        # 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
 
        # 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
 
        # 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
 
        # 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
        do
                _method = method
        end
@@ -304,7 +304,7 @@ end
 ###############################################################################
 
 redef class ClosureVariable
 ###############################################################################
 
 redef class ClosureVariable
-       readable writable attr _ctypename: String
+       readable writable attr _ctypename: nullable String
 end
 
 redef class MMMethod
 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
        # 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
        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
        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
        do
-               var ve: String = null
+               var ve: String
                var arity = 0
                if clos_defs != null then arity = clos_defs.length
 
                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.
        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
        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
        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
 end
 
 redef class MMReadImplementationMethod
@@ -681,7 +681,7 @@ end
 
 redef class AMethPropdef
        # Compile the method body
 
 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
 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]
                        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} */")
                                # 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]
 
                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
                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
 
                        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}]);")
                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
 
                        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
                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
        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]}"
                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
                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
                        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
        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};")
                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
        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};")
                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
        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
                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)
                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
                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 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
 
        # 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
 
        # 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
 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
                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
 
                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
        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
        # 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
                        cargs.add(v.compile_expr(a))
                end
        end
@@ -1527,14 +1527,14 @@ redef class AAbsAbsSendExpr
 end
 
 redef class ASendExpr
 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)
 
        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
                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)
        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
        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 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
 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
 
        redef meth compile_closure(v, closcn)
        do
@@ -1715,7 +1715,7 @@ redef class AClosureDef
 
                v.add_instr("{v.nmc.continue_label}: while(false);")
 
 
                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
                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
 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
 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
 
                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);")
 
 
                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
                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
 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)
        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
                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)
                        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
                        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
                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;\}")
                        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]
 
        # 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
        meth add_module(module: MMModule, supers: Array[MMModule])
        do
-               assert supers != null
                _module_hierarchy.add(module, _module_hierarchy.select_smallests(supers))
                _module_hierarchy.add(module, _module_hierarchy.select_smallests(supers))
-               assert module.name != null
                _modules.add(module)
                module._mhe = _module_hierarchy[module]
        end
                _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
        # 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
                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
 
        # Parent directory
        # null if none
-       readable attr _parent: MMDirectory
+       readable attr _parent: nullable MMDirectory
 
        # The module that introduces the directory if any
 
        # 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]
 
        # 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
 
                _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
                _name = name
                _path = path
                _parent = parent
@@ -130,7 +124,7 @@ class MMModule
        readable attr _filename: String
 
        # Module dependence hierarchy element
        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]
 
        # 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
                _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
 
                _filename = filename
        end
 
@@ -219,8 +208,6 @@ class MMModule
        # Get the local class associated with a global class 
        meth [](c: MMGlobalClass): MMLocalClass
        do
        # 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
 
                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
        # 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
                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
        # 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
                _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
        # 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)
                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 _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
 
        # 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
 
        # 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
 
        # 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
 
        # 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
 
        # All known global properties
-       readable attr _global_properties: Set[MMGlobalProperty] 
+       readable attr _global_properties: Set[MMGlobalProperty] = new HashSet[MMGlobalProperty]
 
        # Dictionnary of global properties
 
        # 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)
 
        # 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
        # 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)
                _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
        # 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
 
                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
        # 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
                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
        # 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
                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
        # 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
        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
        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]
 
        # 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
        # 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
                _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
        # 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
 
                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)?
        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
 
        # 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 _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
 
        # 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
 
        # 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
        # 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}"
                        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
        # 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
                _global = g
                _local_class.register_local_property(self)
        end
@@ -625,10 +602,11 @@ class MMLocalProperty
        meth new_global
        do
                assert _global == null
        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
        end
-       
+
        redef meth to_s do return name.to_s
 
        # Is the concrete property contain a `super' in the body?
        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)
        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
                else
                        return super
                end
@@ -142,7 +142,6 @@ special MMTypeClass
                        var b = _local_class.for_module(mod)
                        t = b.get_instantiate_type(parms)
                end
                        var b = _local_class.for_module(mod)
                        t = b.get_instantiate_type(parms)
                end
-               assert t != null
                return t
        end
 
                return t
        end
 
@@ -162,8 +161,6 @@ special MMTypeClass
                        return false
                end
                for i in [0..t.length[ do
                        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
                        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
                if module != mod then
                        t = mod[_def_class.global].get_formal(position)
                end
-               assert t != null
                return t
        end
 
                return t
        end
 
@@ -234,7 +230,6 @@ special MMTypeFormal
                #end
                assert old_r isa MMTypeGeneric
                var reduct = old_r.params[position]
                #end
                assert old_r isa MMTypeGeneric
                var reduct = old_r.params[position]
-               assert reduct != null
                return reduct
        end
 
                return reduct
        end
 
@@ -246,7 +241,6 @@ special MMTypeFormal
 
        init(n: Symbol, p: Int, intro: MMLocalClass)
        do
 
        init(n: Symbol, p: Int, intro: MMLocalClass)
        do
-               assert n != null
                super(n, null)
                _position = p
                _def_class = intro
                super(n, null)
                _position = p
                _def_class = intro
index a739844..2b2275b 100644 (file)
@@ -106,14 +106,13 @@ redef class MMLocalClass
                end
        end
 
                end
        end
 
+       attr _are_global_properties_inherited: Bool = false
+
        # Inherit global properties for a class
        meth inherit_global_properties
        do
        # 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
 
                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
        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)
                        for sup in ref.cshe.direct_greaters do
                                var cla = sup.for_module(_module)
-                               assert cla != null
                                supers.add(cla)
                        end
                end
                                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
        private meth compute_super_parents(supers: Array[MMLocalClass])
        do
                for p in supers do
-                       assert p != null
                        p.compute_super_classes
                end
        end
                        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)
        private meth inherit_local_property(glob: MMGlobalProperty): MMLocalProperty
        do
                assert not _local_property_by_global.has_key(glob)
-               assert glob != null
 
                var impl: MMLocalProperty
 
 
                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
        # 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
                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
                        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
 
        init(b: MMLocalClass, anc: MMType)
        do
-               assert b != null
-               assert b.module != null
-               assert anc != null
                inheriter = b.get_type
                stype = anc
        end
                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
        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)
        do
                if c == null then return new Array[E]
                assert has_all(c)
@@ -114,9 +114,9 @@ special Collection[E]
                end
                return res
        end
                end
                return res
        end
-       
+
        # Add a new element inferior of some others
        # 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)
        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
        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]
 
        # 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
                        _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
        end
        
        # Cached value of _order.length to validade smallers_cache
@@ -238,7 +238,7 @@ class PartialOrderElement[E]
        end
 
        # Cached result of linear_extension
        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!
 
        # 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
                        end
                        _linear_extension_cache = res
                end
-               return _linear_extension_cache
+               return _linear_extension_cache.as(not null)
        end
 
        # Cached result of reverse_linear_extension
        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!
 
        # 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
                        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?
        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
 
 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 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
        end
 
        # Register a new ancestor
@@ -40,7 +40,7 @@ redef class MMLocalClass
        end
 
        # Array of ancestor that associate each superclass with the corresponding ancestor
        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
 
        # 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)
 
 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
 
        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]
 
 
                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
 # Signature for local properties
 class MMSignature
        # The type of the reveiver
-       readable attr _recv: MMType 
+       readable attr _recv: MMType
 
        # The parameter types
 
        # The parameter types
-       attr _params: Array[MMType]
+       attr _params: Array[MMType]
 
        # The return type
 
        # The return type
-       readable attr _return_type: MMType 
+       readable attr _return_type: nullable MMType
 
        # The closure parameters
 
        # 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
 
        # 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
                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 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
 
                        return false
                end
 
@@ -124,7 +124,7 @@ class MMSignature
        redef meth to_s
        do
                var s = new Buffer
        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
                        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
                        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
                end
                var rv = _return_type
                if rv != null then
@@ -166,42 +163,36 @@ class MMSignature
                return res
        end
 
                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
 
        # 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 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
                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 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
 
                end
 
+               var res: MMSignature
                if need_for_self then
                        res = new MMSignature(p, rv, _recv)
                        res.closures.add_all(clos)
                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
 
                return res
        end
 
-       init(params: Array[MMType], return_type: MMType, r: MMType)
+       init(params: Array[MMType], return_type: nullable MMType, r: MMType)
        do
        do
-               assert params != null
                _params = params
                _return_type = return_type
                _recv = r
                _params = params
                _return_type = return_type
                _recv = r
@@ -269,10 +259,16 @@ end
 # Inheritance relation between two types
 abstract class MMAncestor
        # The inherited type
 # 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
 
        # 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
 
        meth is_reffinement: Bool do
                return stype.module != stype.module
@@ -287,7 +283,7 @@ abstract class MMAncestor
 
        redef meth to_s
        do
 
        redef meth to_s
        do
-               if stype == null then
+               if _stype == null then
                        return local_class.to_s
                else
                        return stype.to_s
                        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)
        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
 
        # 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
 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
 
        redef meth to_s
        do
@@ -432,14 +428,10 @@ special MMType
 
        redef meth upcast_for(c)
        do
 
        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
                var t: MMType = self
                if _local_class != c then
                        t = _local_class.ancestor(c)
                end
-               assert t != null
                return t
        end
 
                return t
        end
 
@@ -462,7 +454,6 @@ special MMTypeClass
                if module != mod then
                        t = _local_class.for_module(mod).get_type
                end
                if module != mod then
                        t = _local_class.for_module(mod).get_type
                end
-               assert t != null
                return t
        end
 
                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
        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
 
        # 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
        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
 
 
        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
        do
                _name = name
                _bound = bound
index 146784c..8a103b0 100644 (file)
@@ -44,7 +44,7 @@ redef class MMSignature
                return s
        end
 
                return s
        end
 
-       redef init(params: Array[MMType], return_type: MMType, r: MMType)
+       redef init(params, return_type, r)
        do
                super
                _vararg_rank = -1
        do
                super
                _vararg_rank = -1
index 752d57f..12a85d7 100644 (file)
@@ -29,7 +29,7 @@ end
 class MMTypeProperty
 special MMLocalProperty
        # The virtual static type associated
 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
        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]
 
        # 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
        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
 
        redef meth adapt_to(recv)
        do
-               return property.stype_for(recv)
+               return property.stype_for(recv).as(not null)
        end
 end
 
        end
 end
 
@@ -94,15 +94,13 @@ redef class MMLocalClass
                if prop.is_virtual_type then
                        return prop
                end
                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
        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)
                var gp = virtual_type(name)
-               if gp == null then return null
                var res = self[gp]
                assert res isa MMTypeProperty
                return res
                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
        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]
 
        # 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
                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
                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.
        # 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
        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.
 
        # 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
        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
                        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 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
        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
                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
                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
 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)
 
        # 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
                        s.content.add_all(_stage_context.content)
                        s.validate = true
                end
+               assert s != null
                _stage_context = s
        end
 
                _stage_context = s
        end
 
@@ -66,13 +67,13 @@ special AbstractCompiler
        end
 
        # Currently computed module
        end
 
        # Currently computed module
-       readable attr _module: MMSrcModule
+       readable attr _module: nullable MMSrcModule
 
        # Is the current directory module computed as a simple modude ?
 
        # 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 ?
 
        # 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]
 
        # Compued introducing entities (for the index)
        attr _entities: Array[MMEntity] = new Array[MMEntity]
@@ -215,12 +216,13 @@ special AbstractCompiler
                _sorter.sort(array)
        end
 
                _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
 
        # 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
                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
        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
 
        end
 end
 
@@ -263,12 +265,12 @@ class StageContext
        readable attr _content: Array[String] = new Array[String]
 
        # Is a normal string already added?
        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
 
        # 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
 
 
 end
 
 
@@ -314,7 +316,7 @@ class MMEntity
 
        # The doc node from the AST
        # Return null is none
 
        # 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 ""
 
        # 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
        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
                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
                end
                assert n isa PPropdef
                var d = n.n_doc
-               assert d isa ADoc
                if d == null then
                        return null
                end
                if d == null then
                        return null
                end
+               assert d isa ADoc
                if d.n_comment.is_empty then
                        return null
                else
                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 = ""
                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}"
                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 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 
                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
        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
                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
                if d == null then
                        return null
                end
+               assert d isa ADoc
                if d.n_comment.is_empty then
                        return null
                else
                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 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
                                        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
                end
                assert n isa AClassdef
                var d = n.n_doc
-               assert d isa ADoc
                if d == null then
                        return null
                end
                if d == null then
                        return null
                end
+               assert d isa ADoc
                if d.n_comment.is_empty then
                        return null
                else
                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
 # 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
 
        # Lexer current state
        attr _state: Int = 0
@@ -1391,7 +1391,7 @@ class Lexer
                while _token == null do
                        _token = get_token
                end
                while _token == null do
                        _token = get_token
                end
-               return _token
+               return _token.as(not null)
        end
 
        # Give and consume the next token
        end
 
        # Give and consume the next token
@@ -1402,11 +1402,11 @@ class Lexer
                        result = get_token
                end
                _token = null
                        result = get_token
                end
                _token = null
-               return result
+               return result.as(not null)
        end
 
        # Get a token, or null if it is discarded
        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
 
        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 _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
        do
                _state = state
                _nodes = nodes
@@ -67,7 +67,7 @@ special ParserTable
        end
 
        # Push someting in the state stack
        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
        do
                var pos = _stack_pos + 1
                _stack_pos = pos
@@ -87,7 +87,7 @@ special ParserTable
        end
 
        # Pop something from the stack state
        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
        do
                var res = _stack[_stack_pos].nodes
                _stack_pos = _stack_pos -1
@@ -99,7 +99,6 @@ special ParserTable
        do
                push(0, null)
 
        do
                push(0, null)
 
-               var ign: List[Token] = null
                var lexer = _lexer
                while true do
                        var token = lexer.peek
                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
                        var last_line = token.line
 
                        if token isa PError then
-                               assert token isa PError
                                return new Start(null, token)
                        end
 
                                return new Start(null, token)
                        end
 
@@ -152,7 +150,7 @@ special ParserTable
                                return node
                        end
                end
                                return node
                        end
                end
-               return null
+               abort
        end
 
        attr _reduce_table: Array[ReduceAction]
        end
 
        attr _reduce_table: Array[ReduceAction]
@@ -905,11 +903,12 @@ end
 private class SearchTokensVisitor
 special Visitor
        attr _untokenned_nodes: Array[Prod]
 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
        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
                        _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
 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 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
                                                null,
                                                listnode3,
                                                listnode4
@@ -954,13 +953,13 @@ private class ReduceAction1
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                                ppackagedeclnode2,
                                                listnode3,
                                                listnode4
@@ -974,20 +973,20 @@ private class ReduceAction2
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
                                        var listnode5 = new Array[Object]
-                                       var listnode3 = nodearraylist1 
+                                       var listnode3 = nodearraylist1
                                        assert listnode3 isa Array[Object]
                                        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
                                                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
                                                null,
                                                listnode4,
                                                listnode5
@@ -1001,23 +1000,23 @@ private class ReduceAction3
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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]
                                        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
                                                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
                                                ppackagedeclnode2,
                                                listnode4,
                                                listnode5
@@ -1031,20 +1030,20 @@ private class ReduceAction4
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
                                        var listnode5 = new Array[Object]
-                                       var listnode4 = nodearraylist1 
+                                       var listnode4 = nodearraylist1
                                        assert listnode4 isa Array[Object]
                                        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
                                                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
                                                null,
                                                listnode3,
                                                listnode5
@@ -1058,23 +1057,23 @@ private class ReduceAction5
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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]
                                        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
                                                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
                                                ppackagedeclnode2,
                                                listnode3,
                                                listnode5
@@ -1088,30 +1087,30 @@ private class ReduceAction6
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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]
                                        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
                                                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]
                                        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
                                                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
                                                null,
                                                listnode4,
                                                listnode6
@@ -1125,33 +1124,33 @@ private class ReduceAction7
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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]
                                        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
                                                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]
                                        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
                                                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
                                                ppackagedeclnode2,
                                                listnode4,
                                                listnode6
@@ -1165,24 +1164,24 @@ private class ReduceAction8
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                                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
                                                null,
                                                listnode3,
                                                listnode7
@@ -1196,7 +1195,7 @@ private class ReduceAction9
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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
                                        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
                                        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
                                                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
                                                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
                                                null,
                                                listnode3,
                                                listnode8
@@ -1237,27 +1236,27 @@ private class ReduceAction10
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        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
                                                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
                                                ppackagedeclnode2,
                                                listnode3,
                                                listnode7
@@ -1271,7 +1270,7 @@ private class ReduceAction11
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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
                                        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
                                        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
                                        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
                                                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
                                                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
                                                ppackagedeclnode2,
                                                listnode3,
                                                listnode8
@@ -1315,34 +1314,34 @@ private class ReduceAction12
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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]
                                        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
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
+#                                      end
                                        var listnode7 = new Array[Object]
                                        var ppropdefnode6 = nodearraylist2
                                        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
                                        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
                                                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
                                                null,
                                                listnode4,
                                                listnode8
@@ -1356,44 +1355,44 @@ private class ReduceAction13
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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]
                                        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
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
+#                                      end
                                        var listnode8 = new Array[Object]
                                        var ppropdefnode6 = nodearraylist2
                                        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
                                        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
                                                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
                                                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
                                                null,
                                                listnode4,
                                                listnode9
@@ -1407,7 +1406,7 @@ private class ReduceAction14
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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
                                        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]
                                        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
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
+#                                      end
                                        var listnode7 = new Array[Object]
                                        var ppropdefnode6 = nodearraylist3
                                        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
                                        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
                                                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
                                                ppackagedeclnode2,
                                                listnode4,
                                                listnode8
@@ -1451,7 +1450,7 @@ private class ReduceAction15
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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
                                        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]
                                        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
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
+#                                      end
                                        var listnode8 = new Array[Object]
                                        var ppropdefnode6 = nodearraylist3
                                        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
                                        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
                                                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
                                                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
                                                ppackagedeclnode2,
                                                listnode4,
                                                listnode9
@@ -1505,34 +1504,34 @@ private class ReduceAction16
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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 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
                                        if ppropdefnode6 != null then
                                                listnode7.add(ppropdefnode6)
                                        end
-                                       var pclassdefnode5 = new ATopClassdef.init_atopclassdef(
+                                       var pclassdefnode5: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
                                                listnode7
                                        )
                                                listnode7
                                        )
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode8.is_empty then
                                                        listnode8 = listnode4
                                                else
                                                        listnode8.append(listnode4)
                                                end
                                                if listnode8.is_empty then
                                                        listnode8 = listnode4
                                                else
                                                        listnode8.append(listnode4)
                                                end
-                                       end
+#                                      end
                                        if pclassdefnode5 != null then
                                                listnode8.add(pclassdefnode5)
                                        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
                                                null,
                                                listnode3,
                                                listnode8
@@ -1546,44 +1545,44 @@ private class ReduceAction17
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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 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
                                        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
                                                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
                                        )
                                                listnode8
                                        )
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode9.is_empty then
                                                        listnode9 = listnode4
                                                else
                                                        listnode9.append(listnode4)
                                                end
                                                if listnode9.is_empty then
                                                        listnode9 = listnode4
                                                else
                                                        listnode9.append(listnode4)
                                                end
-                                       end
+#                                      end
                                        if pclassdefnode5 != null then
                                                listnode9.add(pclassdefnode5)
                                        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
                                                null,
                                                listnode3,
                                                listnode9
@@ -1597,7 +1596,7 @@ private class ReduceAction18
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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
                                        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 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
                                        if ppropdefnode6 != null then
                                                listnode7.add(ppropdefnode6)
                                        end
-                                       var pclassdefnode5 = new ATopClassdef.init_atopclassdef(
+                                       var pclassdefnode5: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
                                                listnode7
                                        )
                                                listnode7
                                        )
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode8.is_empty then
                                                        listnode8 = listnode4
                                                else
                                                        listnode8.append(listnode4)
                                                end
                                                if listnode8.is_empty then
                                                        listnode8 = listnode4
                                                else
                                                        listnode8.append(listnode4)
                                                end
-                                       end
+#                                      end
                                        if pclassdefnode5 != null then
                                                listnode8.add(pclassdefnode5)
                                        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
                                                ppackagedeclnode2,
                                                listnode3,
                                                listnode8
@@ -1641,7 +1640,7 @@ private class ReduceAction19
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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
                                        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 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
                                        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
                                                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
                                        )
                                                listnode8
                                        )
-                                       if listnode4 != null then
+#                                      if listnode4 != null then
                                                if listnode9.is_empty then
                                                        listnode9 = listnode4
                                                else
                                                        listnode9.append(listnode4)
                                                end
                                                if listnode9.is_empty then
                                                        listnode9 = listnode4
                                                else
                                                        listnode9.append(listnode4)
                                                end
-                                       end
+#                                      end
                                        if pclassdefnode5 != null then
                                                listnode9.add(pclassdefnode5)
                                        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
                                                ppackagedeclnode2,
                                                listnode3,
                                                listnode9
@@ -1695,44 +1694,44 @@ private class ReduceAction20
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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]
                                        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
                                                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 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
                                        if ppropdefnode7 != null then
                                                listnode8.add(ppropdefnode7)
                                        end
-                                       var pclassdefnode6 = new ATopClassdef.init_atopclassdef(
+                                       var pclassdefnode6: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
                                                listnode8
                                        )
                                                listnode8
                                        )
-                                       if listnode5 != null then
+#                                      if listnode5 != null then
                                                if listnode9.is_empty then
                                                        listnode9 = listnode5
                                                else
                                                        listnode9.append(listnode5)
                                                end
                                                if listnode9.is_empty then
                                                        listnode9 = listnode5
                                                else
                                                        listnode9.append(listnode5)
                                                end
-                                       end
+#                                      end
                                        if pclassdefnode6 != null then
                                                listnode9.add(pclassdefnode6)
                                        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
                                                null,
                                                listnode4,
                                                listnode9
@@ -1746,7 +1745,7 @@ private class ReduceAction21
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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 nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
                                        var listnode10 = new Array[Object]
-                                       var listnode3 = nodearraylist1 
+                                       var listnode3 = nodearraylist1
                                        assert listnode3 isa Array[Object]
                                        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
                                                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 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
                                        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
                                                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
                                        )
                                                listnode9
                                        )
-                                       if listnode5 != null then
+#                                      if listnode5 != null then
                                                if listnode10.is_empty then
                                                        listnode10 = listnode5
                                                else
                                                        listnode10.append(listnode5)
                                                end
                                                if listnode10.is_empty then
                                                        listnode10 = listnode5
                                                else
                                                        listnode10.append(listnode5)
                                                end
-                                       end
+#                                      end
                                        if pclassdefnode6 != null then
                                                listnode10.add(pclassdefnode6)
                                        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
                                                null,
                                                listnode4,
                                                listnode10
@@ -1807,7 +1806,7 @@ private class ReduceAction22
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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
                                        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]
                                        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
                                                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 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
                                        if ppropdefnode7 != null then
                                                listnode8.add(ppropdefnode7)
                                        end
-                                       var pclassdefnode6 = new ATopClassdef.init_atopclassdef(
+                                       var pclassdefnode6: nullable ATopClassdef = new ATopClassdef.init_atopclassdef(
                                                listnode8
                                        )
                                                listnode8
                                        )
-                                       if listnode5 != null then
+#                                      if listnode5 != null then
                                                if listnode9.is_empty then
                                                        listnode9 = listnode5
                                                else
                                                        listnode9.append(listnode5)
                                                end
                                                if listnode9.is_empty then
                                                        listnode9 = listnode5
                                                else
                                                        listnode9.append(listnode5)
                                                end
-                                       end
+#                                      end
                                        if pclassdefnode6 != null then
                                                listnode9.add(pclassdefnode6)
                                        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
                                                ppackagedeclnode2,
                                                listnode4,
                                                listnode9
@@ -1861,7 +1860,7 @@ private class ReduceAction23
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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]
                                        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
                                                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 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
                                        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
                                                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
                                        )
                                                listnode9
                                        )
-                                       if listnode5 != null then
+#                                      if listnode5 != null then
                                                if listnode10.is_empty then
                                                        listnode10 = listnode5
                                                else
                                                        listnode10.append(listnode5)
                                                end
                                                if listnode10.is_empty then
                                                        listnode10 = listnode5
                                                else
                                                        listnode10.append(listnode5)
                                                end
-                                       end
+#                                      end
                                        if pclassdefnode6 != null then
                                                listnode10.add(pclassdefnode6)
                                        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
                                                ppackagedeclnode2,
                                                listnode4,
                                                listnode10
@@ -1925,16 +1924,16 @@ private class ReduceAction24
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                                null,
                                                listnode3,
                                                listnode5
@@ -1948,19 +1947,19 @@ private class ReduceAction25
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var pclassdefnode4 = nodearraylist2
-                                       assert pclassdefnode4 isa PClassdef
+                                       assert pclassdefnode4 isa nullable PClassdef
                                        if pclassdefnode4 != null then
                                                listnode5.add(pclassdefnode4)
                                        end
                                        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
                                                ppackagedeclnode2,
                                                listnode3,
                                                listnode5
@@ -1974,26 +1973,26 @@ private class ReduceAction26
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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]
                                        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
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
+#                                      end
                                        var pclassdefnode5 = nodearraylist2
                                        var pclassdefnode5 = nodearraylist2
-                                       assert pclassdefnode5 isa PClassdef
+                                       assert pclassdefnode5 isa nullable PClassdef
                                        if pclassdefnode5 != null then
                                                listnode6.add(pclassdefnode5)
                                        end
                                        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
                                                null,
                                                listnode4,
                                                listnode6
@@ -2007,29 +2006,29 @@ private class ReduceAction27
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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]
                                        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
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
+#                                      end
                                        var pclassdefnode5 = nodearraylist3
                                        var pclassdefnode5 = nodearraylist3
-                                       assert pclassdefnode5 isa PClassdef
+                                       assert pclassdefnode5 isa nullable PClassdef
                                        if pclassdefnode5 != null then
                                                listnode6.add(pclassdefnode5)
                                        end
                                        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
                                                ppackagedeclnode2,
                                                listnode4,
                                                listnode6
@@ -2043,26 +2042,26 @@ private class ReduceAction28
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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 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
                                                if listnode6.is_empty then
                                                        listnode6 = listnode4
                                                else
                                                        listnode6.append(listnode4)
                                                end
-                                       end
+#                                      end
                                        if pclassdefnode5 != null then
                                                listnode6.add(pclassdefnode5)
                                        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
                                                null,
                                                listnode3,
                                                listnode6
@@ -2076,29 +2075,29 @@ private class ReduceAction29
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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 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
                                                if listnode6.is_empty then
                                                        listnode6 = listnode4
                                                else
                                                        listnode6.append(listnode4)
                                                end
-                                       end
+#                                      end
                                        if pclassdefnode5 != null then
                                                listnode6.add(pclassdefnode5)
                                        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
                                                ppackagedeclnode2,
                                                listnode3,
                                                listnode6
@@ -2112,36 +2111,36 @@ private class ReduceAction30
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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]
                                        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
                                                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 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
                                                if listnode7.is_empty then
                                                        listnode7 = listnode5
                                                else
                                                        listnode7.append(listnode5)
                                                end
-                                       end
+#                                      end
                                        if pclassdefnode6 != null then
                                                listnode7.add(pclassdefnode6)
                                        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
                                                null,
                                                listnode4,
                                                listnode7
@@ -2155,7 +2154,7 @@ private class ReduceAction31
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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
                                        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]
                                        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
                                                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 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
                                                if listnode7.is_empty then
                                                        listnode7 = listnode5
                                                else
                                                        listnode7.append(listnode5)
                                                end
-                                       end
+#                                      end
                                        if pclassdefnode6 != null then
                                                listnode7.add(pclassdefnode6)
                                        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
                                                ppackagedeclnode2,
                                                listnode4,
                                                listnode7
@@ -2201,7 +2200,7 @@ private class ReduceAction32
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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
                                        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
                                        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
                                                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
                                        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
                                                null,
                                                listnode3,
                                                listnode8
@@ -2238,7 +2237,7 @@ private class ReduceAction33
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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
                                        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
                                        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
                                                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
                                                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
                                        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
                                                null,
                                                listnode3,
                                                listnode9
@@ -2285,7 +2284,7 @@ private class ReduceAction34
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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
                                        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
                                        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
                                        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
                                                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
                                        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
                                                ppackagedeclnode2,
                                                listnode3,
                                                listnode8
@@ -2325,7 +2324,7 @@ private class ReduceAction35
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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
                                        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
                                        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
                                        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
                                                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
                                                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
                                        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
                                                ppackagedeclnode2,
                                                listnode3,
                                                listnode9
@@ -2375,40 +2374,40 @@ private class ReduceAction36
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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]
                                        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
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
+#                                      end
                                        var listnode7 = new Array[Object]
                                        var ppropdefnode6 = nodearraylist2
                                        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
                                        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
                                                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
                                        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
                                                null,
                                                listnode4,
                                                listnode9
@@ -2422,7 +2421,7 @@ private class ReduceAction37
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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 nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
                                        var listnode10 = new Array[Object]
-                                       var listnode3 = nodearraylist1 
+                                       var listnode3 = nodearraylist1
                                        assert listnode3 isa Array[Object]
                                        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
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
+#                                      end
                                        var listnode8 = new Array[Object]
                                        var ppropdefnode6 = nodearraylist2
                                        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
                                        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
                                                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
                                                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
                                        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
                                                null,
                                                listnode4,
                                                listnode10
@@ -2479,7 +2478,7 @@ private class ReduceAction38
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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
                                        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]
                                        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
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
+#                                      end
                                        var listnode7 = new Array[Object]
                                        var ppropdefnode6 = nodearraylist3
                                        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
                                        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
                                                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
                                        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
                                                ppackagedeclnode2,
                                                listnode4,
                                                listnode9
@@ -2529,7 +2528,7 @@ private class ReduceAction39
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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]
                                        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
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
+#                                      end
                                        var listnode8 = new Array[Object]
                                        var ppropdefnode6 = nodearraylist3
                                        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
                                        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
                                                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
                                                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
                                        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
                                                ppackagedeclnode2,
                                                listnode4,
                                                listnode10
@@ -2589,40 +2588,40 @@ private class ReduceAction40
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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 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
                                        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
                                                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
                                                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
                                        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
                                                null,
                                                listnode3,
                                                listnode9
@@ -2636,7 +2635,7 @@ private class ReduceAction41
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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 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 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
                                        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
                                                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
                                                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
                                                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
                                        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
                                                null,
                                                listnode3,
                                                listnode10
@@ -2693,7 +2692,7 @@ private class ReduceAction42
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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
                                        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 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
                                        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
                                                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
                                                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
                                        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
                                                ppackagedeclnode2,
                                                listnode3,
                                                listnode9
@@ -2743,7 +2742,7 @@ private class ReduceAction43
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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 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
                                        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
                                                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
                                                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
                                                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
                                        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
                                                ppackagedeclnode2,
                                                listnode3,
                                                listnode10
@@ -2803,7 +2802,7 @@ private class ReduceAction44
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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 nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
                                        var listnode10 = new Array[Object]
-                                       var listnode3 = nodearraylist1 
+                                       var listnode3 = nodearraylist1
                                        assert listnode3 isa Array[Object]
                                        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
                                                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 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
                                        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
                                                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
                                                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
                                        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
                                                null,
                                                listnode4,
                                                listnode10
@@ -2860,7 +2859,7 @@ private class ReduceAction45
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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 nodearraylist1 = p.pop
                                        var listnode4 = new Array[Object]
                                        var listnode11 = new Array[Object]
-                                       var listnode3 = nodearraylist1 
+                                       var listnode3 = nodearraylist1
                                        assert listnode3 isa Array[Object]
                                        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
                                                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 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
                                        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
                                                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
                                                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
                                                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
                                        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
                                                null,
                                                listnode4,
                                                listnode11
@@ -2927,7 +2926,7 @@ private class ReduceAction46
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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]
                                        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
                                                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 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
                                        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
                                                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
                                                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
                                        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
                                                ppackagedeclnode2,
                                                listnode4,
                                                listnode10
@@ -2987,7 +2986,7 @@ private class ReduceAction47
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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]
                                        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
                                                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 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
                                        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
                                                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
                                                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
                                                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
                                        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
                                                ppackagedeclnode2,
                                                listnode4,
                                                listnode11
@@ -3057,19 +3056,19 @@ private class ReduceAction48
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var tkwpackagenode3 = nodearraylist2
-                                       assert tkwpackagenode3 isa TKwpackage
+                                       assert tkwpackagenode3 isa nullable TKwpackage
                                        var tidnode4 = nodearraylist4
                                        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
                                                pdocnode2,
                                                tkwpackagenode3,
                                                tidnode4
@@ -3083,7 +3082,7 @@ private class ReduceAction49
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pvisibilitynode2 = nodearraylist2
-                                       assert pvisibilitynode2 isa PVisibility
+                                       assert pvisibilitynode2 isa nullable PVisibility
                                        var tkwimportnode3 = nodearraylist3
                                        var tkwimportnode3 = nodearraylist3
-                                       assert tkwimportnode3 isa TKwimport
+                                       assert tkwimportnode3 isa nullable TKwimport
                                        var tidnode4 = nodearraylist5
                                        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
                                                pvisibilitynode2,
                                                tkwimportnode3,
                                                tidnode4
@@ -3110,7 +3109,7 @@ private class ReduceAction50
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pvisibilitynode2 = nodearraylist2
-                                       assert pvisibilitynode2 isa PVisibility
+                                       assert pvisibilitynode2 isa nullable PVisibility
                                        var tkwimportnode3 = nodearraylist3
                                        var tkwimportnode3 = nodearraylist3
-                                       assert tkwimportnode3 isa TKwimport
+                                       assert tkwimportnode3 isa nullable TKwimport
                                        var tkwendnode4 = nodearraylist5
                                        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
                                                pvisibilitynode2,
                                                tkwimportnode3,
                                                tkwendnode4
@@ -3137,15 +3136,15 @@ private class ReduceAction51
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                                listnode3
                                        )
                                        node_list = pclassdefnode1
@@ -3157,7 +3156,7 @@ private class ReduceAction52
 special ReduceAction
        redef meth action(p: Parser)
        do
 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)
                                        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
 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
                                        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
                                        if pexprnode4 != null then
                                                listnode5.add(pexprnode4)
                                        end
-                                       var pexprnode3 = new ABlockExpr.init_ablockexpr(
+                                       var pexprnode3: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
                                                listnode5
                                        )
                                                listnode5
                                        )
-                                       var ppropdefnode1 = new AMainMethPropdef.init_amainmethpropdef(
+                                       var ppropdefnode1: nullable AMainMethPropdef = new AMainMethPropdef.init_amainmethpropdef(
                                                null,
                                                pexprnode3
                                        )
                                                null,
                                                pexprnode3
                                        )
@@ -3194,30 +3193,30 @@ private class ReduceAction54
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                                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
                                        )
                                                listnode6
                                        )
-                                       var ppropdefnode1 = new AMainMethPropdef.init_amainmethpropdef(
+                                       var ppropdefnode1: nullable AMainMethPropdef = new AMainMethPropdef.init_amainmethpropdef(
                                                null,
                                                pexprnode3
                                        )
                                                null,
                                                pexprnode3
                                        )
@@ -3230,7 +3229,7 @@ private class ReduceAction55
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist3
                                        var pclasskindnode5 = nodearraylist3
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist5
                                        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,
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -3268,7 +3267,7 @@ private class ReduceAction56
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist4
                                        var pclasskindnode5 = nodearraylist4
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist6
                                        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,
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -3309,7 +3308,7 @@ private class ReduceAction57
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist3
                                        var pclasskindnode5 = nodearraylist3
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist5
                                        var tclassidnode6 = nodearraylist5
-                                       assert tclassidnode6 isa TClassid
-                                       var listnode7 = nodearraylist6 
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode7 = nodearraylist6
                                        assert listnode7 isa Array[Object]
                                        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
                                                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,
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -3357,7 +3356,7 @@ private class ReduceAction58
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist4
                                        var pclasskindnode5 = nodearraylist4
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist6
                                        var tclassidnode6 = nodearraylist6
-                                       assert tclassidnode6 isa TClassid
-                                       var listnode7 = nodearraylist7 
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode7 = nodearraylist7
                                        assert listnode7 isa Array[Object]
                                        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
                                                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,
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -3408,7 +3407,7 @@ private class ReduceAction59
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist3
                                        var pclasskindnode5 = nodearraylist3
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist5
                                        var tclassidnode6 = nodearraylist5
-                                       assert tclassidnode6 isa TClassid
-                                       var listnode8 = nodearraylist6 
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode8 = nodearraylist6
                                        assert listnode8 isa Array[Object]
                                        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
                                                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,
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -3456,7 +3455,7 @@ private class ReduceAction60
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist4
                                        var pclasskindnode5 = nodearraylist4
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist6
                                        var tclassidnode6 = nodearraylist6
-                                       assert tclassidnode6 isa TClassid
-                                       var listnode8 = nodearraylist7 
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode8 = nodearraylist7
                                        assert listnode8 isa Array[Object]
                                        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
                                                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,
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -3507,7 +3506,7 @@ private class ReduceAction61
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist3
                                        var pclasskindnode5 = nodearraylist3
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist5
                                        var tclassidnode6 = nodearraylist5
-                                       assert tclassidnode6 isa TClassid
-                                       var listnode7 = nodearraylist6 
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode7 = nodearraylist6
                                        assert listnode7 isa Array[Object]
                                        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
                                                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]
                                        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
                                                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,
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -3565,7 +3564,7 @@ private class ReduceAction62
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist4
                                        var pclasskindnode5 = nodearraylist4
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist6
                                        var tclassidnode6 = nodearraylist6
-                                       assert tclassidnode6 isa TClassid
-                                       var listnode7 = nodearraylist7 
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode7 = nodearraylist7
                                        assert listnode7 isa Array[Object]
                                        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
                                                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]
                                        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
                                                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,
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -3626,7 +3625,7 @@ private class ReduceAction63
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist3
                                        var pclasskindnode5 = nodearraylist3
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist5
                                        var tclassidnode6 = nodearraylist5
-                                       assert tclassidnode6 isa TClassid
+                                       assert tclassidnode6 isa nullable TClassid
                                        var ppropdefnode9 = nodearraylist6
                                        var ppropdefnode9 = nodearraylist6
-                                       assert ppropdefnode9 isa PPropdef
+                                       assert ppropdefnode9 isa nullable PPropdef
                                        if ppropdefnode9 != null then
                                                listnode10.add(ppropdefnode9)
                                        end
                                        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,
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -3671,7 +3670,7 @@ private class ReduceAction64
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist3
                                        var pclasskindnode5 = nodearraylist3
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist5
                                        var tclassidnode6 = nodearraylist5
-                                       assert tclassidnode6 isa TClassid
+                                       assert tclassidnode6 isa nullable TClassid
                                        var ppropdefnode9 = nodearraylist6
                                        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
                                        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
                                                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,
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -3726,7 +3725,7 @@ private class ReduceAction65
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist4
                                        var pclasskindnode5 = nodearraylist4
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist6
                                        var tclassidnode6 = nodearraylist6
-                                       assert tclassidnode6 isa TClassid
+                                       assert tclassidnode6 isa nullable TClassid
                                        var ppropdefnode9 = nodearraylist7
                                        var ppropdefnode9 = nodearraylist7
-                                       assert ppropdefnode9 isa PPropdef
+                                       assert ppropdefnode9 isa nullable PPropdef
                                        if ppropdefnode9 != null then
                                                listnode10.add(ppropdefnode9)
                                        end
                                        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,
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -3774,7 +3773,7 @@ private class ReduceAction66
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist4
                                        var pclasskindnode5 = nodearraylist4
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist6
                                        var tclassidnode6 = nodearraylist6
-                                       assert tclassidnode6 isa TClassid
+                                       assert tclassidnode6 isa nullable TClassid
                                        var ppropdefnode9 = nodearraylist7
                                        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
                                        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
                                                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,
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -3832,7 +3831,7 @@ private class ReduceAction67
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist3
                                        var pclasskindnode5 = nodearraylist3
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist5
                                        var tclassidnode6 = nodearraylist5
-                                       assert tclassidnode6 isa TClassid
-                                       var listnode7 = nodearraylist6 
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode7 = nodearraylist6
                                        assert listnode7 isa Array[Object]
                                        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
                                                if listnode8.is_empty then
                                                        listnode8 = listnode7
                                                else
                                                        listnode8.append(listnode7)
                                                end
-                                       end
+#                                      end
                                        var ppropdefnode10 = nodearraylist7
                                        var ppropdefnode10 = nodearraylist7
-                                       assert ppropdefnode10 isa PPropdef
+                                       assert ppropdefnode10 isa nullable PPropdef
                                        if ppropdefnode10 != null then
                                                listnode11.add(ppropdefnode10)
                                        end
                                        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,
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -3887,7 +3886,7 @@ private class ReduceAction68
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist3
                                        var pclasskindnode5 = nodearraylist3
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist5
                                        var tclassidnode6 = nodearraylist5
-                                       assert tclassidnode6 isa TClassid
-                                       var listnode7 = nodearraylist6 
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode7 = nodearraylist6
                                        assert listnode7 isa Array[Object]
                                        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
                                                if listnode8.is_empty then
                                                        listnode8 = listnode7
                                                else
                                                        listnode8.append(listnode7)
                                                end
-                                       end
+#                                      end
                                        var ppropdefnode10 = nodearraylist7
                                        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
                                        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
                                                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,
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -3952,7 +3951,7 @@ private class ReduceAction69
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist4
                                        var pclasskindnode5 = nodearraylist4
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist6
                                        var tclassidnode6 = nodearraylist6
-                                       assert tclassidnode6 isa TClassid
-                                       var listnode7 = nodearraylist7 
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode7 = nodearraylist7
                                        assert listnode7 isa Array[Object]
                                        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
                                                if listnode8.is_empty then
                                                        listnode8 = listnode7
                                                else
                                                        listnode8.append(listnode7)
                                                end
-                                       end
+#                                      end
                                        var ppropdefnode10 = nodearraylist8
                                        var ppropdefnode10 = nodearraylist8
-                                       assert ppropdefnode10 isa PPropdef
+                                       assert ppropdefnode10 isa nullable PPropdef
                                        if ppropdefnode10 != null then
                                                listnode11.add(ppropdefnode10)
                                        end
                                        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,
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -4010,7 +4009,7 @@ private class ReduceAction70
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist4
                                        var pclasskindnode5 = nodearraylist4
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist6
                                        var tclassidnode6 = nodearraylist6
-                                       assert tclassidnode6 isa TClassid
-                                       var listnode7 = nodearraylist7 
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode7 = nodearraylist7
                                        assert listnode7 isa Array[Object]
                                        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
                                                if listnode8.is_empty then
                                                        listnode8 = listnode7
                                                else
                                                        listnode8.append(listnode7)
                                                end
-                                       end
+#                                      end
                                        var ppropdefnode10 = nodearraylist8
                                        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
                                        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
                                                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,
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -4078,7 +4077,7 @@ private class ReduceAction71
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist3
                                        var pclasskindnode5 = nodearraylist3
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist5
                                        var tclassidnode6 = nodearraylist5
-                                       assert tclassidnode6 isa TClassid
-                                       var listnode8 = nodearraylist6 
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode8 = nodearraylist6
                                        assert listnode8 isa Array[Object]
                                        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
                                                if listnode9.is_empty then
                                                        listnode9 = listnode8
                                                else
                                                        listnode9.append(listnode8)
                                                end
-                                       end
+#                                      end
                                        var ppropdefnode10 = nodearraylist7
                                        var ppropdefnode10 = nodearraylist7
-                                       assert ppropdefnode10 isa PPropdef
+                                       assert ppropdefnode10 isa nullable PPropdef
                                        if ppropdefnode10 != null then
                                                listnode11.add(ppropdefnode10)
                                        end
                                        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,
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -4133,7 +4132,7 @@ private class ReduceAction72
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist3
                                        var pclasskindnode5 = nodearraylist3
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist5
                                        var tclassidnode6 = nodearraylist5
-                                       assert tclassidnode6 isa TClassid
-                                       var listnode8 = nodearraylist6 
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode8 = nodearraylist6
                                        assert listnode8 isa Array[Object]
                                        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
                                                if listnode9.is_empty then
                                                        listnode9 = listnode8
                                                else
                                                        listnode9.append(listnode8)
                                                end
-                                       end
+#                                      end
                                        var ppropdefnode10 = nodearraylist7
                                        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
                                        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
                                                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,
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -4198,7 +4197,7 @@ private class ReduceAction73
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist4
                                        var pclasskindnode5 = nodearraylist4
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist6
                                        var tclassidnode6 = nodearraylist6
-                                       assert tclassidnode6 isa TClassid
-                                       var listnode8 = nodearraylist7 
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode8 = nodearraylist7
                                        assert listnode8 isa Array[Object]
                                        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
                                                if listnode9.is_empty then
                                                        listnode9 = listnode8
                                                else
                                                        listnode9.append(listnode8)
                                                end
-                                       end
+#                                      end
                                        var ppropdefnode10 = nodearraylist8
                                        var ppropdefnode10 = nodearraylist8
-                                       assert ppropdefnode10 isa PPropdef
+                                       assert ppropdefnode10 isa nullable PPropdef
                                        if ppropdefnode10 != null then
                                                listnode11.add(ppropdefnode10)
                                        end
                                        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,
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -4256,7 +4255,7 @@ private class ReduceAction74
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist4
                                        var pclasskindnode5 = nodearraylist4
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist6
                                        var tclassidnode6 = nodearraylist6
-                                       assert tclassidnode6 isa TClassid
-                                       var listnode8 = nodearraylist7 
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode8 = nodearraylist7
                                        assert listnode8 isa Array[Object]
                                        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
                                                if listnode9.is_empty then
                                                        listnode9 = listnode8
                                                else
                                                        listnode9.append(listnode8)
                                                end
-                                       end
+#                                      end
                                        var ppropdefnode10 = nodearraylist8
                                        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
                                        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
                                                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,
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -4324,7 +4323,7 @@ private class ReduceAction75
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist3
                                        var pclasskindnode5 = nodearraylist3
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist5
                                        var tclassidnode6 = nodearraylist5
-                                       assert tclassidnode6 isa TClassid
-                                       var listnode7 = nodearraylist6 
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode7 = nodearraylist6
                                        assert listnode7 isa Array[Object]
                                        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
                                                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]
                                        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
                                                if listnode10.is_empty then
                                                        listnode10 = listnode9
                                                else
                                                        listnode10.append(listnode9)
                                                end
-                                       end
+#                                      end
                                        var ppropdefnode11 = nodearraylist8
                                        var ppropdefnode11 = nodearraylist8
-                                       assert ppropdefnode11 isa PPropdef
+                                       assert ppropdefnode11 isa nullable PPropdef
                                        if ppropdefnode11 != null then
                                                listnode12.add(ppropdefnode11)
                                        end
                                        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,
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -4389,7 +4388,7 @@ private class ReduceAction76
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist3
                                        var pclasskindnode5 = nodearraylist3
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist5
                                        var tclassidnode6 = nodearraylist5
-                                       assert tclassidnode6 isa TClassid
-                                       var listnode7 = nodearraylist6 
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode7 = nodearraylist6
                                        assert listnode7 isa Array[Object]
                                        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
                                                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]
                                        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
                                                if listnode10.is_empty then
                                                        listnode10 = listnode9
                                                else
                                                        listnode10.append(listnode9)
                                                end
-                                       end
+#                                      end
                                        var ppropdefnode11 = nodearraylist8
                                        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
                                        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
                                                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,
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -4464,7 +4463,7 @@ private class ReduceAction77
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist4
                                        var pclasskindnode5 = nodearraylist4
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist6
                                        var tclassidnode6 = nodearraylist6
-                                       assert tclassidnode6 isa TClassid
-                                       var listnode7 = nodearraylist7 
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode7 = nodearraylist7
                                        assert listnode7 isa Array[Object]
                                        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
                                                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]
                                        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
                                                if listnode10.is_empty then
                                                        listnode10 = listnode9
                                                else
                                                        listnode10.append(listnode9)
                                                end
-                                       end
+#                                      end
                                        var ppropdefnode11 = nodearraylist9
                                        var ppropdefnode11 = nodearraylist9
-                                       assert ppropdefnode11 isa PPropdef
+                                       assert ppropdefnode11 isa nullable PPropdef
                                        if ppropdefnode11 != null then
                                                listnode12.add(ppropdefnode11)
                                        end
                                        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,
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -4532,7 +4531,7 @@ private class ReduceAction78
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var pclasskindnode5 = nodearraylist4
                                        var pclasskindnode5 = nodearraylist4
-                                       assert pclasskindnode5 isa PClasskind
+                                       assert pclasskindnode5 isa nullable PClasskind
                                        var tclassidnode6 = nodearraylist6
                                        var tclassidnode6 = nodearraylist6
-                                       assert tclassidnode6 isa TClassid
-                                       var listnode7 = nodearraylist7 
+                                       assert tclassidnode6 isa nullable TClassid
+                                       var listnode7 = nodearraylist7
                                        assert listnode7 isa Array[Object]
                                        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
                                                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]
                                        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
                                                if listnode10.is_empty then
                                                        listnode10 = listnode9
                                                else
                                                        listnode10.append(listnode9)
                                                end
-                                       end
+#                                      end
                                        var ppropdefnode11 = nodearraylist9
                                        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
                                        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
                                                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,
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -4610,11 +4609,11 @@ private class ReduceAction79
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                                tkwclassnode2
                                        )
                                        node_list = pclasskindnode1
@@ -4626,14 +4625,14 @@ private class ReduceAction80
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwabstractnode2 = nodearraylist1
-                                       assert tkwabstractnode2 isa TKwabstract
+                                       assert tkwabstractnode2 isa nullable TKwabstract
                                        var tkwclassnode3 = nodearraylist2
                                        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
                                        )
                                                tkwabstractnode2,
                                                tkwclassnode3
                                        )
@@ -4646,11 +4645,11 @@ private class ReduceAction81
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                                tkwinterfacenode2
                                        )
                                        node_list = pclasskindnode1
@@ -4662,11 +4661,11 @@ private class ReduceAction82
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                                tkwuniversalnode2
                                        )
                                        node_list = pclasskindnode1
@@ -4678,7 +4677,7 @@ private class ReduceAction83
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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
                                        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
                                        if pformaldefnode1 != null then
                                                listnode2.add(pformaldefnode1)
                                        end
@@ -4699,7 +4698,7 @@ private class ReduceAction84
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        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
                                                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
                                        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
 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
                                        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
                                        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
 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
                                        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
                                        )
                                                tclassidnode2,
                                                null
                                        )
@@ -4762,14 +4761,14 @@ private class ReduceAction87
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tclassidnode2 = nodearraylist1
-                                       assert tclassidnode2 isa TClassid
+                                       assert tclassidnode2 isa nullable TClassid
                                        var ptypenode3 = nodearraylist2
                                        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
                                        )
                                                tclassidnode2,
                                                ptypenode3
                                        )
@@ -4782,16 +4781,16 @@ private class ReduceAction88
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        )
                                                tkwspecialnode2,
                                                ptypenode3
                                        )
@@ -4804,11 +4803,11 @@ private class ReduceAction89
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var pvisibilitynode4 = nodearraylist2
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var tkwmethnode5 = nodearraylist3
                                        var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
+                                       assert tkwmethnode5 isa nullable TKwmeth
                                        var pmethidnode6 = nodearraylist4
                                        var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
+                                       assert pmethidnode6 isa nullable PMethid
                                        var psignaturenode7 = nodearraylist5
                                        var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa PSignature
+                                       assert psignaturenode7 isa nullable PSignature
                                        var pexprnode8 = nodearraylist7
                                        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,
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -4856,7 +4855,7 @@ private class ReduceAction91
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode3 = nodearraylist2
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var tkwmethnode5 = nodearraylist4
                                        var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
+                                       assert tkwmethnode5 isa nullable TKwmeth
                                        var pmethidnode6 = nodearraylist5
                                        var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
+                                       assert pmethidnode6 isa nullable PMethid
                                        var psignaturenode7 = nodearraylist6
                                        var psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa PSignature
+                                       assert psignaturenode7 isa nullable PSignature
                                        var pexprnode8 = nodearraylist8
                                        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,
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -4897,7 +4896,7 @@ private class ReduceAction92
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var pvisibilitynode4 = nodearraylist2
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var tkwmethnode5 = nodearraylist3
                                        var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
+                                       assert tkwmethnode5 isa nullable TKwmeth
                                        var pmethidnode6 = nodearraylist4
                                        var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
+                                       assert pmethidnode6 isa nullable PMethid
                                        var psignaturenode7 = nodearraylist5
                                        var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa PSignature
+                                       assert psignaturenode7 isa nullable PSignature
                                        var pexprnode8 = nodearraylist7
                                        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,
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -4936,7 +4935,7 @@ private class ReduceAction93
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode3 = nodearraylist2
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var tkwmethnode5 = nodearraylist4
                                        var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
+                                       assert tkwmethnode5 isa nullable TKwmeth
                                        var pmethidnode6 = nodearraylist5
                                        var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
+                                       assert pmethidnode6 isa nullable PMethid
                                        var psignaturenode7 = nodearraylist6
                                        var psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa PSignature
+                                       assert psignaturenode7 isa nullable PSignature
                                        var pexprnode8 = nodearraylist8
                                        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,
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -4978,7 +4977,7 @@ private class ReduceAction94
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var pvisibilitynode4 = nodearraylist2
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var tkwmethnode5 = nodearraylist3
                                        var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
+                                       assert tkwmethnode5 isa nullable TKwmeth
                                        var pmethidnode6 = nodearraylist4
                                        var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
+                                       assert pmethidnode6 isa nullable PMethid
                                        var psignaturenode7 = nodearraylist5
                                        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,
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -5013,7 +5012,7 @@ private class ReduceAction95
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode3 = nodearraylist2
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var tkwmethnode5 = nodearraylist4
                                        var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
+                                       assert tkwmethnode5 isa nullable TKwmeth
                                        var pmethidnode6 = nodearraylist5
                                        var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
+                                       assert pmethidnode6 isa nullable PMethid
                                        var psignaturenode7 = nodearraylist6
                                        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,
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -5051,7 +5050,7 @@ private class ReduceAction96
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var pvisibilitynode4 = nodearraylist2
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var tkwmethnode5 = nodearraylist3
                                        var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
+                                       assert tkwmethnode5 isa nullable TKwmeth
                                        var pmethidnode6 = nodearraylist4
                                        var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
+                                       assert pmethidnode6 isa nullable PMethid
                                        var psignaturenode7 = nodearraylist5
                                        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,
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -5086,7 +5085,7 @@ private class ReduceAction97
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode3 = nodearraylist2
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var tkwmethnode5 = nodearraylist4
                                        var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
+                                       assert tkwmethnode5 isa nullable TKwmeth
                                        var pmethidnode6 = nodearraylist5
                                        var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
+                                       assert pmethidnode6 isa nullable PMethid
                                        var psignaturenode7 = nodearraylist6
                                        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,
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -5124,7 +5123,7 @@ private class ReduceAction98
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var pvisibilitynode4 = nodearraylist2
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var tkwmethnode5 = nodearraylist3
                                        var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
+                                       assert tkwmethnode5 isa nullable TKwmeth
                                        var pmethidnode6 = nodearraylist4
                                        var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
+                                       assert pmethidnode6 isa nullable PMethid
                                        var psignaturenode7 = nodearraylist5
                                        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,
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -5160,7 +5159,7 @@ private class ReduceAction99
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode3 = nodearraylist2
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var tkwmethnode5 = nodearraylist4
                                        var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
+                                       assert tkwmethnode5 isa nullable TKwmeth
                                        var pmethidnode6 = nodearraylist5
                                        var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
+                                       assert pmethidnode6 isa nullable PMethid
                                        var psignaturenode7 = nodearraylist6
                                        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,
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -5199,7 +5198,7 @@ private class ReduceAction100
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var pvisibilitynode4 = nodearraylist2
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var tkwmethnode5 = nodearraylist3
                                        var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
+                                       assert tkwmethnode5 isa nullable TKwmeth
                                        var pmethidnode6 = nodearraylist4
                                        var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
+                                       assert pmethidnode6 isa nullable PMethid
                                        var psignaturenode7 = nodearraylist5
                                        var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa PSignature
+                                       assert psignaturenode7 isa nullable PSignature
                                        var tstringnode8 = nodearraylist8
                                        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,
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -5238,7 +5237,7 @@ private class ReduceAction101
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode3 = nodearraylist2
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var tkwmethnode5 = nodearraylist4
                                        var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
+                                       assert tkwmethnode5 isa nullable TKwmeth
                                        var pmethidnode6 = nodearraylist5
                                        var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
+                                       assert pmethidnode6 isa nullable PMethid
                                        var psignaturenode7 = nodearraylist6
                                        var psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa PSignature
+                                       assert psignaturenode7 isa nullable PSignature
                                        var tstringnode8 = nodearraylist9
                                        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,
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -5280,7 +5279,7 @@ private class ReduceAction102
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
                                        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
                                                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
                                                null,
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist4
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwattrnode11 = nodearraylist5
                                        var tkwattrnode11 = nodearraylist5
-                                       assert tkwattrnode11 isa TKwattr
+                                       assert tkwattrnode11 isa nullable TKwattr
                                        var tattridnode13 = nodearraylist6
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -5328,7 +5327,7 @@ private class ReduceAction103
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
                                        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
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist4
                                        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
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwattrnode11 = nodearraylist6
                                        var tkwattrnode11 = nodearraylist6
-                                       assert tkwattrnode11 isa TKwattr
+                                       assert tkwattrnode11 isa nullable TKwattr
                                        var tattridnode13 = nodearraylist7
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -5379,27 +5378,27 @@ private class ReduceAction104
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                                null,
                                                tkwreadablenode5
                                        )
                                        var pvisibilitynode8 = nodearraylist3
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwattrnode9 = nodearraylist4
                                        var tkwattrnode9 = nodearraylist4
-                                       assert tkwattrnode9 isa TKwattr
+                                       assert tkwattrnode9 isa nullable TKwattr
                                        var tattridnode11 = nodearraylist5
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                null,
@@ -5420,7 +5419,7 @@ private class ReduceAction105
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
                                        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
                                                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
                                                null,
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwattrnode11 = nodearraylist6
                                        var tkwattrnode11 = nodearraylist6
-                                       assert tkwattrnode11 isa TKwattr
+                                       assert tkwattrnode11 isa nullable TKwattr
                                        var tattridnode13 = nodearraylist7
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -5471,7 +5470,7 @@ private class ReduceAction106
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
                                        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
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist5
                                        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
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwattrnode11 = nodearraylist7
                                        var tkwattrnode11 = nodearraylist7
-                                       assert tkwattrnode11 isa TKwattr
+                                       assert tkwattrnode11 isa nullable TKwattr
                                        var tattridnode13 = nodearraylist8
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -5525,7 +5524,7 @@ private class ReduceAction107
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
                                        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
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwattrnode9 = nodearraylist5
                                        var tkwattrnode9 = nodearraylist5
-                                       assert tkwattrnode9 isa TKwattr
+                                       assert tkwattrnode9 isa nullable TKwattr
                                        var tattridnode11 = nodearraylist6
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                null,
@@ -5569,27 +5568,27 @@ private class ReduceAction108
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                                null,
                                                tkwwritablenode6
                                        )
                                        var pvisibilitynode8 = nodearraylist3
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwattrnode9 = nodearraylist4
                                        var tkwattrnode9 = nodearraylist4
-                                       assert tkwattrnode9 isa TKwattr
+                                       assert tkwattrnode9 isa nullable TKwattr
                                        var tattridnode11 = nodearraylist5
                                        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,
                                                pdocnode2,
                                                null,
                                                pablenode4,
@@ -5610,7 +5609,7 @@ private class ReduceAction109
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode5 = nodearraylist2
                                        var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa TKwredef
+                                       assert tkwredefnode5 isa nullable TKwredef
                                        var tkwwritablenode6 = nodearraylist3
                                        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
                                                tkwredefnode5,
                                                tkwwritablenode6
                                        )
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwattrnode9 = nodearraylist5
                                        var tkwattrnode9 = nodearraylist5
-                                       assert tkwattrnode9 isa TKwattr
+                                       assert tkwattrnode9 isa nullable TKwattr
                                        var tattridnode11 = nodearraylist6
                                        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,
                                                pdocnode2,
                                                null,
                                                pablenode4,
@@ -5654,20 +5653,20 @@ private class ReduceAction110
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var pvisibilitynode6 = nodearraylist2
-                                       assert pvisibilitynode6 isa PVisibility
+                                       assert pvisibilitynode6 isa nullable PVisibility
                                        var tkwattrnode7 = nodearraylist3
                                        var tkwattrnode7 = nodearraylist3
-                                       assert tkwattrnode7 isa TKwattr
+                                       assert tkwattrnode7 isa nullable TKwattr
                                        var tattridnode9 = nodearraylist4
                                        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,
                                                pdocnode2,
                                                null,
                                                null,
@@ -5688,7 +5687,7 @@ private class ReduceAction111
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
                                        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
                                                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
                                                null,
                                                tkwwritablenode8
                                        )
                                        var tkwredefnode9 = nodearraylist4
-                                       assert tkwredefnode9 isa TKwredef
+                                       assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist5
                                        var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwattrnode11 = nodearraylist6
                                        var tkwattrnode11 = nodearraylist6
-                                       assert tkwattrnode11 isa TKwattr
+                                       assert tkwattrnode11 isa nullable TKwattr
                                        var tattridnode13 = nodearraylist7
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -5739,7 +5738,7 @@ private class ReduceAction112
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
                                        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
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist4
                                        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
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
                                        var tkwredefnode9 = nodearraylist5
-                                       assert tkwredefnode9 isa TKwredef
+                                       assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist6
                                        var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwattrnode11 = nodearraylist7
                                        var tkwattrnode11 = nodearraylist7
-                                       assert tkwattrnode11 isa TKwattr
+                                       assert tkwattrnode11 isa nullable TKwattr
                                        var tattridnode13 = nodearraylist8
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -5793,7 +5792,7 @@ private class ReduceAction113
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
                                        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
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist4
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwattrnode9 = nodearraylist5
                                        var tkwattrnode9 = nodearraylist5
-                                       assert tkwattrnode9 isa TKwattr
+                                       assert tkwattrnode9 isa nullable TKwattr
                                        var tattridnode11 = nodearraylist6
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                null,
@@ -5837,7 +5836,7 @@ private class ReduceAction114
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
                                        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
                                                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
                                                null,
                                                tkwwritablenode8
                                        )
                                        var tkwredefnode9 = nodearraylist5
-                                       assert tkwredefnode9 isa TKwredef
+                                       assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist6
                                        var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwattrnode11 = nodearraylist7
                                        var tkwattrnode11 = nodearraylist7
-                                       assert tkwattrnode11 isa TKwattr
+                                       assert tkwattrnode11 isa nullable TKwattr
                                        var tattridnode13 = nodearraylist8
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -5891,7 +5890,7 @@ private class ReduceAction115
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
                                        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
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist5
                                        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
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
                                        var tkwredefnode9 = nodearraylist6
-                                       assert tkwredefnode9 isa TKwredef
+                                       assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist7
                                        var pvisibilitynode10 = nodearraylist7
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwattrnode11 = nodearraylist8
                                        var tkwattrnode11 = nodearraylist8
-                                       assert tkwattrnode11 isa TKwattr
+                                       assert tkwattrnode11 isa nullable TKwattr
                                        var tattridnode13 = nodearraylist9
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -5948,7 +5947,7 @@ private class ReduceAction116
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
                                        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
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist5
                                        var pvisibilitynode8 = nodearraylist5
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwattrnode9 = nodearraylist6
                                        var tkwattrnode9 = nodearraylist6
-                                       assert tkwattrnode9 isa TKwattr
+                                       assert tkwattrnode9 isa nullable TKwattr
                                        var tattridnode11 = nodearraylist7
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                null,
@@ -5995,7 +5994,7 @@ private class ReduceAction117
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwwritablenode6 = nodearraylist2
                                        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
                                                null,
                                                tkwwritablenode6
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist4
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwattrnode9 = nodearraylist5
                                        var tkwattrnode9 = nodearraylist5
-                                       assert tkwattrnode9 isa TKwattr
+                                       assert tkwattrnode9 isa nullable TKwattr
                                        var tattridnode11 = nodearraylist6
                                        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,
                                                pdocnode2,
                                                null,
                                                pablenode4,
@@ -6039,7 +6038,7 @@ private class ReduceAction118
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode5 = nodearraylist2
                                        var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa TKwredef
+                                       assert tkwredefnode5 isa nullable TKwredef
                                        var tkwwritablenode6 = nodearraylist3
                                        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
                                                tkwredefnode5,
                                                tkwwritablenode6
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist5
                                        var pvisibilitynode8 = nodearraylist5
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwattrnode9 = nodearraylist6
                                        var tkwattrnode9 = nodearraylist6
-                                       assert tkwattrnode9 isa TKwattr
+                                       assert tkwattrnode9 isa nullable TKwattr
                                        var tattridnode11 = nodearraylist7
                                        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,
                                                pdocnode2,
                                                null,
                                                pablenode4,
@@ -6086,23 +6085,23 @@ private class ReduceAction119
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa TKwredef
+                                       assert tkwredefnode5 isa nullable TKwredef
                                        var pvisibilitynode6 = nodearraylist3
                                        var pvisibilitynode6 = nodearraylist3
-                                       assert pvisibilitynode6 isa PVisibility
+                                       assert pvisibilitynode6 isa nullable PVisibility
                                        var tkwattrnode7 = nodearraylist4
                                        var tkwattrnode7 = nodearraylist4
-                                       assert tkwattrnode7 isa TKwattr
+                                       assert tkwattrnode7 isa nullable TKwattr
                                        var tattridnode9 = nodearraylist5
                                        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,
                                                pdocnode2,
                                                null,
                                                null,
@@ -6123,7 +6122,7 @@ private class ReduceAction120
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
                                        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
                                                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
                                                null,
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist4
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwattrnode11 = nodearraylist5
                                        var tkwattrnode11 = nodearraylist5
-                                       assert tkwattrnode11 isa TKwattr
+                                       assert tkwattrnode11 isa nullable TKwattr
                                        var tattridnode13 = nodearraylist6
                                        var tattridnode13 = nodearraylist6
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var ptypenode14 = nodearraylist7
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -6174,7 +6173,7 @@ private class ReduceAction121
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
                                        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
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist4
                                        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
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwattrnode11 = nodearraylist6
                                        var tkwattrnode11 = nodearraylist6
-                                       assert tkwattrnode11 isa TKwattr
+                                       assert tkwattrnode11 isa nullable TKwattr
                                        var tattridnode13 = nodearraylist7
                                        var tattridnode13 = nodearraylist7
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var ptypenode14 = nodearraylist8
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -6228,7 +6227,7 @@ private class ReduceAction122
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
                                        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
                                                null,
                                                tkwreadablenode5
                                        )
                                        var pvisibilitynode8 = nodearraylist3
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwattrnode9 = nodearraylist4
                                        var tkwattrnode9 = nodearraylist4
-                                       assert tkwattrnode9 isa TKwattr
+                                       assert tkwattrnode9 isa nullable TKwattr
                                        var tattridnode11 = nodearraylist5
                                        var tattridnode11 = nodearraylist5
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var ptypenode12 = nodearraylist6
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                null,
@@ -6272,7 +6271,7 @@ private class ReduceAction123
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
                                        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
                                                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
                                                null,
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwattrnode11 = nodearraylist6
                                        var tkwattrnode11 = nodearraylist6
-                                       assert tkwattrnode11 isa TKwattr
+                                       assert tkwattrnode11 isa nullable TKwattr
                                        var tattridnode13 = nodearraylist7
                                        var tattridnode13 = nodearraylist7
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var ptypenode14 = nodearraylist8
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -6326,7 +6325,7 @@ private class ReduceAction124
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
                                        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
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist5
                                        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
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwattrnode11 = nodearraylist7
                                        var tkwattrnode11 = nodearraylist7
-                                       assert tkwattrnode11 isa TKwattr
+                                       assert tkwattrnode11 isa nullable TKwattr
                                        var tattridnode13 = nodearraylist8
                                        var tattridnode13 = nodearraylist8
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var ptypenode14 = nodearraylist9
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -6383,7 +6382,7 @@ private class ReduceAction125
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
                                        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
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwattrnode9 = nodearraylist5
                                        var tkwattrnode9 = nodearraylist5
-                                       assert tkwattrnode9 isa TKwattr
+                                       assert tkwattrnode9 isa nullable TKwattr
                                        var tattridnode11 = nodearraylist6
                                        var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var ptypenode12 = nodearraylist7
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                null,
@@ -6430,7 +6429,7 @@ private class ReduceAction126
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwwritablenode6 = nodearraylist2
                                        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
                                                null,
                                                tkwwritablenode6
                                        )
                                        var pvisibilitynode8 = nodearraylist3
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwattrnode9 = nodearraylist4
                                        var tkwattrnode9 = nodearraylist4
-                                       assert tkwattrnode9 isa TKwattr
+                                       assert tkwattrnode9 isa nullable TKwattr
                                        var tattridnode11 = nodearraylist5
                                        var tattridnode11 = nodearraylist5
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var ptypenode12 = nodearraylist6
                                        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,
                                                pdocnode2,
                                                null,
                                                pablenode4,
@@ -6474,7 +6473,7 @@ private class ReduceAction127
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode5 = nodearraylist2
                                        var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa TKwredef
+                                       assert tkwredefnode5 isa nullable TKwredef
                                        var tkwwritablenode6 = nodearraylist3
                                        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
                                                tkwredefnode5,
                                                tkwwritablenode6
                                        )
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwattrnode9 = nodearraylist5
                                        var tkwattrnode9 = nodearraylist5
-                                       assert tkwattrnode9 isa TKwattr
+                                       assert tkwattrnode9 isa nullable TKwattr
                                        var tattridnode11 = nodearraylist6
                                        var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var ptypenode12 = nodearraylist7
                                        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,
                                                pdocnode2,
                                                null,
                                                pablenode4,
@@ -6521,23 +6520,23 @@ private class ReduceAction128
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var pvisibilitynode6 = nodearraylist2
-                                       assert pvisibilitynode6 isa PVisibility
+                                       assert pvisibilitynode6 isa nullable PVisibility
                                        var tkwattrnode7 = nodearraylist3
                                        var tkwattrnode7 = nodearraylist3
-                                       assert tkwattrnode7 isa TKwattr
+                                       assert tkwattrnode7 isa nullable TKwattr
                                        var tattridnode9 = nodearraylist4
                                        var tattridnode9 = nodearraylist4
-                                       assert tattridnode9 isa TAttrid
+                                       assert tattridnode9 isa nullable TAttrid
                                        var ptypenode10 = nodearraylist5
                                        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,
                                                pdocnode2,
                                                null,
                                                null,
@@ -6558,7 +6557,7 @@ private class ReduceAction129
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
                                        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
                                                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
                                                null,
                                                tkwwritablenode8
                                        )
                                        var tkwredefnode9 = nodearraylist4
-                                       assert tkwredefnode9 isa TKwredef
+                                       assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist5
                                        var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwattrnode11 = nodearraylist6
                                        var tkwattrnode11 = nodearraylist6
-                                       assert tkwattrnode11 isa TKwattr
+                                       assert tkwattrnode11 isa nullable TKwattr
                                        var tattridnode13 = nodearraylist7
                                        var tattridnode13 = nodearraylist7
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var ptypenode14 = nodearraylist8
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -6612,7 +6611,7 @@ private class ReduceAction130
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
                                        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
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist4
                                        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
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
                                        var tkwredefnode9 = nodearraylist5
-                                       assert tkwredefnode9 isa TKwredef
+                                       assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist6
                                        var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwattrnode11 = nodearraylist7
                                        var tkwattrnode11 = nodearraylist7
-                                       assert tkwattrnode11 isa TKwattr
+                                       assert tkwattrnode11 isa nullable TKwattr
                                        var tattridnode13 = nodearraylist8
                                        var tattridnode13 = nodearraylist8
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var ptypenode14 = nodearraylist9
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -6669,7 +6668,7 @@ private class ReduceAction131
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
                                        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
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist4
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwattrnode9 = nodearraylist5
                                        var tkwattrnode9 = nodearraylist5
-                                       assert tkwattrnode9 isa TKwattr
+                                       assert tkwattrnode9 isa nullable TKwattr
                                        var tattridnode11 = nodearraylist6
                                        var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var ptypenode12 = nodearraylist7
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                null,
@@ -6716,7 +6715,7 @@ private class ReduceAction132
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
                                        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
                                                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
                                                null,
                                                tkwwritablenode8
                                        )
                                        var tkwredefnode9 = nodearraylist5
-                                       assert tkwredefnode9 isa TKwredef
+                                       assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist6
                                        var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwattrnode11 = nodearraylist7
                                        var tkwattrnode11 = nodearraylist7
-                                       assert tkwattrnode11 isa TKwattr
+                                       assert tkwattrnode11 isa nullable TKwattr
                                        var tattridnode13 = nodearraylist8
                                        var tattridnode13 = nodearraylist8
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var ptypenode14 = nodearraylist9
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -6773,7 +6772,7 @@ private class ReduceAction133
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
                                        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
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist5
                                        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
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
                                        var tkwredefnode9 = nodearraylist6
-                                       assert tkwredefnode9 isa TKwredef
+                                       assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist7
                                        var pvisibilitynode10 = nodearraylist7
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwattrnode11 = nodearraylist8
                                        var tkwattrnode11 = nodearraylist8
-                                       assert tkwattrnode11 isa TKwattr
+                                       assert tkwattrnode11 isa nullable TKwattr
                                        var tattridnode13 = nodearraylist9
                                        var tattridnode13 = nodearraylist9
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var ptypenode14 = nodearraylist10
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -6833,7 +6832,7 @@ private class ReduceAction134
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
                                        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
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist5
                                        var pvisibilitynode8 = nodearraylist5
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwattrnode9 = nodearraylist6
                                        var tkwattrnode9 = nodearraylist6
-                                       assert tkwattrnode9 isa TKwattr
+                                       assert tkwattrnode9 isa nullable TKwattr
                                        var tattridnode11 = nodearraylist7
                                        var tattridnode11 = nodearraylist7
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var ptypenode12 = nodearraylist8
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                null,
@@ -6883,7 +6882,7 @@ private class ReduceAction135
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwwritablenode6 = nodearraylist2
                                        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
                                                null,
                                                tkwwritablenode6
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist4
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwattrnode9 = nodearraylist5
                                        var tkwattrnode9 = nodearraylist5
-                                       assert tkwattrnode9 isa TKwattr
+                                       assert tkwattrnode9 isa nullable TKwattr
                                        var tattridnode11 = nodearraylist6
                                        var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var ptypenode12 = nodearraylist7
                                        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,
                                                pdocnode2,
                                                null,
                                                pablenode4,
@@ -6930,7 +6929,7 @@ private class ReduceAction136
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode5 = nodearraylist2
                                        var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa TKwredef
+                                       assert tkwredefnode5 isa nullable TKwredef
                                        var tkwwritablenode6 = nodearraylist3
                                        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
                                                tkwredefnode5,
                                                tkwwritablenode6
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist5
                                        var pvisibilitynode8 = nodearraylist5
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwattrnode9 = nodearraylist6
                                        var tkwattrnode9 = nodearraylist6
-                                       assert tkwattrnode9 isa TKwattr
+                                       assert tkwattrnode9 isa nullable TKwattr
                                        var tattridnode11 = nodearraylist7
                                        var tattridnode11 = nodearraylist7
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var ptypenode12 = nodearraylist8
                                        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,
                                                pdocnode2,
                                                null,
                                                pablenode4,
@@ -6980,7 +6979,7 @@ private class ReduceAction137
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode5 = nodearraylist2
                                        var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa TKwredef
+                                       assert tkwredefnode5 isa nullable TKwredef
                                        var pvisibilitynode6 = nodearraylist3
                                        var pvisibilitynode6 = nodearraylist3
-                                       assert pvisibilitynode6 isa PVisibility
+                                       assert pvisibilitynode6 isa nullable PVisibility
                                        var tkwattrnode7 = nodearraylist4
                                        var tkwattrnode7 = nodearraylist4
-                                       assert tkwattrnode7 isa TKwattr
+                                       assert tkwattrnode7 isa nullable TKwattr
                                        var tattridnode9 = nodearraylist5
                                        var tattridnode9 = nodearraylist5
-                                       assert tattridnode9 isa TAttrid
+                                       assert tattridnode9 isa nullable TAttrid
                                        var ptypenode10 = nodearraylist6
                                        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,
                                                pdocnode2,
                                                null,
                                                null,
@@ -7020,7 +7019,7 @@ private class ReduceAction138
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
                                        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
                                                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
                                                null,
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist4
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwattrnode11 = nodearraylist5
                                        var tkwattrnode11 = nodearraylist5
-                                       assert tkwattrnode11 isa TKwattr
+                                       assert tkwattrnode11 isa nullable TKwattr
                                        var tattridnode13 = nodearraylist6
                                        var tattridnode13 = nodearraylist6
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var pexprnode15 = nodearraylist9
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -7073,7 +7072,7 @@ private class ReduceAction139
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
                                        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
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist4
                                        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
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwattrnode11 = nodearraylist6
                                        var tkwattrnode11 = nodearraylist6
-                                       assert tkwattrnode11 isa TKwattr
+                                       assert tkwattrnode11 isa nullable TKwattr
                                        var tattridnode13 = nodearraylist7
                                        var tattridnode13 = nodearraylist7
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var pexprnode15 = nodearraylist10
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -7129,7 +7128,7 @@ private class ReduceAction140
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
                                        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
                                                null,
                                                tkwreadablenode5
                                        )
                                        var pvisibilitynode8 = nodearraylist3
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwattrnode9 = nodearraylist4
                                        var tkwattrnode9 = nodearraylist4
-                                       assert tkwattrnode9 isa TKwattr
+                                       assert tkwattrnode9 isa nullable TKwattr
                                        var tattridnode11 = nodearraylist5
                                        var tattridnode11 = nodearraylist5
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var pexprnode13 = nodearraylist8
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                null,
@@ -7175,7 +7174,7 @@ private class ReduceAction141
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
                                        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
                                                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
                                                null,
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwattrnode11 = nodearraylist6
                                        var tkwattrnode11 = nodearraylist6
-                                       assert tkwattrnode11 isa TKwattr
+                                       assert tkwattrnode11 isa nullable TKwattr
                                        var tattridnode13 = nodearraylist7
                                        var tattridnode13 = nodearraylist7
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var pexprnode15 = nodearraylist10
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -7231,7 +7230,7 @@ private class ReduceAction142
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
                                        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
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist5
                                        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
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwattrnode11 = nodearraylist7
                                        var tkwattrnode11 = nodearraylist7
-                                       assert tkwattrnode11 isa TKwattr
+                                       assert tkwattrnode11 isa nullable TKwattr
                                        var tattridnode13 = nodearraylist8
                                        var tattridnode13 = nodearraylist8
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var pexprnode15 = nodearraylist11
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -7290,7 +7289,7 @@ private class ReduceAction143
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
                                        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
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwattrnode9 = nodearraylist5
                                        var tkwattrnode9 = nodearraylist5
-                                       assert tkwattrnode9 isa TKwattr
+                                       assert tkwattrnode9 isa nullable TKwattr
                                        var tattridnode11 = nodearraylist6
                                        var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var pexprnode13 = nodearraylist9
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                null,
@@ -7339,7 +7338,7 @@ private class ReduceAction144
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwwritablenode6 = nodearraylist2
                                        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
                                                null,
                                                tkwwritablenode6
                                        )
                                        var pvisibilitynode8 = nodearraylist3
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwattrnode9 = nodearraylist4
                                        var tkwattrnode9 = nodearraylist4
-                                       assert tkwattrnode9 isa TKwattr
+                                       assert tkwattrnode9 isa nullable TKwattr
                                        var tattridnode11 = nodearraylist5
                                        var tattridnode11 = nodearraylist5
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var pexprnode13 = nodearraylist8
                                        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,
                                                pdocnode2,
                                                null,
                                                pablenode4,
@@ -7385,7 +7384,7 @@ private class ReduceAction145
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode5 = nodearraylist2
                                        var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa TKwredef
+                                       assert tkwredefnode5 isa nullable TKwredef
                                        var tkwwritablenode6 = nodearraylist3
                                        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
                                                tkwredefnode5,
                                                tkwwritablenode6
                                        )
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwattrnode9 = nodearraylist5
                                        var tkwattrnode9 = nodearraylist5
-                                       assert tkwattrnode9 isa TKwattr
+                                       assert tkwattrnode9 isa nullable TKwattr
                                        var tattridnode11 = nodearraylist6
                                        var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var pexprnode13 = nodearraylist9
                                        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,
                                                pdocnode2,
                                                null,
                                                pablenode4,
@@ -7434,7 +7433,7 @@ private class ReduceAction146
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var pvisibilitynode6 = nodearraylist2
                                        var pvisibilitynode6 = nodearraylist2
-                                       assert pvisibilitynode6 isa PVisibility
+                                       assert pvisibilitynode6 isa nullable PVisibility
                                        var tkwattrnode7 = nodearraylist3
                                        var tkwattrnode7 = nodearraylist3
-                                       assert tkwattrnode7 isa TKwattr
+                                       assert tkwattrnode7 isa nullable TKwattr
                                        var tattridnode9 = nodearraylist4
                                        var tattridnode9 = nodearraylist4
-                                       assert tattridnode9 isa TAttrid
+                                       assert tattridnode9 isa nullable TAttrid
                                        var pexprnode11 = nodearraylist7
                                        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,
                                                pdocnode2,
                                                null,
                                                null,
@@ -7473,7 +7472,7 @@ private class ReduceAction147
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
                                        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
                                                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
                                                null,
                                                tkwwritablenode8
                                        )
                                        var tkwredefnode9 = nodearraylist4
-                                       assert tkwredefnode9 isa TKwredef
+                                       assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist5
                                        var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwattrnode11 = nodearraylist6
                                        var tkwattrnode11 = nodearraylist6
-                                       assert tkwattrnode11 isa TKwattr
+                                       assert tkwattrnode11 isa nullable TKwattr
                                        var tattridnode13 = nodearraylist7
                                        var tattridnode13 = nodearraylist7
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var pexprnode15 = nodearraylist10
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -7529,7 +7528,7 @@ private class ReduceAction148
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
                                        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
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist4
                                        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
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
                                        var tkwredefnode9 = nodearraylist5
-                                       assert tkwredefnode9 isa TKwredef
+                                       assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist6
                                        var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwattrnode11 = nodearraylist7
                                        var tkwattrnode11 = nodearraylist7
-                                       assert tkwattrnode11 isa TKwattr
+                                       assert tkwattrnode11 isa nullable TKwattr
                                        var tattridnode13 = nodearraylist8
                                        var tattridnode13 = nodearraylist8
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var pexprnode15 = nodearraylist11
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -7588,7 +7587,7 @@ private class ReduceAction149
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
                                        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
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist4
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwattrnode9 = nodearraylist5
                                        var tkwattrnode9 = nodearraylist5
-                                       assert tkwattrnode9 isa TKwattr
+                                       assert tkwattrnode9 isa nullable TKwattr
                                        var tattridnode11 = nodearraylist6
                                        var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var pexprnode13 = nodearraylist9
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                null,
@@ -7637,7 +7636,7 @@ private class ReduceAction150
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
                                        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
                                                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
                                                null,
                                                tkwwritablenode8
                                        )
                                        var tkwredefnode9 = nodearraylist5
-                                       assert tkwredefnode9 isa TKwredef
+                                       assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist6
                                        var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwattrnode11 = nodearraylist7
                                        var tkwattrnode11 = nodearraylist7
-                                       assert tkwattrnode11 isa TKwattr
+                                       assert tkwattrnode11 isa nullable TKwattr
                                        var tattridnode13 = nodearraylist8
                                        var tattridnode13 = nodearraylist8
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var pexprnode15 = nodearraylist11
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -7696,7 +7695,7 @@ private class ReduceAction151
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
                                        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
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist5
                                        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
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
                                        var tkwredefnode9 = nodearraylist6
-                                       assert tkwredefnode9 isa TKwredef
+                                       assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist7
                                        var pvisibilitynode10 = nodearraylist7
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwattrnode11 = nodearraylist8
                                        var tkwattrnode11 = nodearraylist8
-                                       assert tkwattrnode11 isa TKwattr
+                                       assert tkwattrnode11 isa nullable TKwattr
                                        var tattridnode13 = nodearraylist9
                                        var tattridnode13 = nodearraylist9
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var pexprnode15 = nodearraylist12
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -7758,7 +7757,7 @@ private class ReduceAction152
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
                                        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
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist5
                                        var pvisibilitynode8 = nodearraylist5
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwattrnode9 = nodearraylist6
                                        var tkwattrnode9 = nodearraylist6
-                                       assert tkwattrnode9 isa TKwattr
+                                       assert tkwattrnode9 isa nullable TKwattr
                                        var tattridnode11 = nodearraylist7
                                        var tattridnode11 = nodearraylist7
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var pexprnode13 = nodearraylist10
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                null,
@@ -7810,7 +7809,7 @@ private class ReduceAction153
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwwritablenode6 = nodearraylist2
                                        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
                                                null,
                                                tkwwritablenode6
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist4
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwattrnode9 = nodearraylist5
                                        var tkwattrnode9 = nodearraylist5
-                                       assert tkwattrnode9 isa TKwattr
+                                       assert tkwattrnode9 isa nullable TKwattr
                                        var tattridnode11 = nodearraylist6
                                        var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var pexprnode13 = nodearraylist9
                                        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,
                                                pdocnode2,
                                                null,
                                                pablenode4,
@@ -7859,7 +7858,7 @@ private class ReduceAction154
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode5 = nodearraylist2
                                        var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa TKwredef
+                                       assert tkwredefnode5 isa nullable TKwredef
                                        var tkwwritablenode6 = nodearraylist3
                                        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
                                                tkwredefnode5,
                                                tkwwritablenode6
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist5
                                        var pvisibilitynode8 = nodearraylist5
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwattrnode9 = nodearraylist6
                                        var tkwattrnode9 = nodearraylist6
-                                       assert tkwattrnode9 isa TKwattr
+                                       assert tkwattrnode9 isa nullable TKwattr
                                        var tattridnode11 = nodearraylist7
                                        var tattridnode11 = nodearraylist7
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var pexprnode13 = nodearraylist10
                                        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,
                                                pdocnode2,
                                                null,
                                                pablenode4,
@@ -7911,7 +7910,7 @@ private class ReduceAction155
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode5 = nodearraylist2
                                        var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa TKwredef
+                                       assert tkwredefnode5 isa nullable TKwredef
                                        var pvisibilitynode6 = nodearraylist3
                                        var pvisibilitynode6 = nodearraylist3
-                                       assert pvisibilitynode6 isa PVisibility
+                                       assert pvisibilitynode6 isa nullable PVisibility
                                        var tkwattrnode7 = nodearraylist4
                                        var tkwattrnode7 = nodearraylist4
-                                       assert tkwattrnode7 isa TKwattr
+                                       assert tkwattrnode7 isa nullable TKwattr
                                        var tattridnode9 = nodearraylist5
                                        var tattridnode9 = nodearraylist5
-                                       assert tattridnode9 isa TAttrid
+                                       assert tattridnode9 isa nullable TAttrid
                                        var pexprnode11 = nodearraylist8
                                        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,
                                                pdocnode2,
                                                null,
                                                null,
@@ -7953,7 +7952,7 @@ private class ReduceAction156
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
                                        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
                                                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
                                                null,
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist4
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwattrnode11 = nodearraylist5
                                        var tkwattrnode11 = nodearraylist5
-                                       assert tkwattrnode11 isa TKwattr
+                                       assert tkwattrnode11 isa nullable TKwattr
                                        var tattridnode13 = nodearraylist6
                                        var tattridnode13 = nodearraylist6
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var ptypenode14 = nodearraylist7
                                        var ptypenode14 = nodearraylist7
-                                       assert ptypenode14 isa PType
+                                       assert ptypenode14 isa nullable PType
                                        var pexprnode15 = nodearraylist10
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -8009,7 +8008,7 @@ private class ReduceAction157
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
                                        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
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist4
                                        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
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwattrnode11 = nodearraylist6
                                        var tkwattrnode11 = nodearraylist6
-                                       assert tkwattrnode11 isa TKwattr
+                                       assert tkwattrnode11 isa nullable TKwattr
                                        var tattridnode13 = nodearraylist7
                                        var tattridnode13 = nodearraylist7
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var ptypenode14 = nodearraylist8
                                        var ptypenode14 = nodearraylist8
-                                       assert ptypenode14 isa PType
+                                       assert ptypenode14 isa nullable PType
                                        var pexprnode15 = nodearraylist11
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -8068,7 +8067,7 @@ private class ReduceAction158
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
                                        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
                                                null,
                                                tkwreadablenode5
                                        )
                                        var pvisibilitynode8 = nodearraylist3
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwattrnode9 = nodearraylist4
                                        var tkwattrnode9 = nodearraylist4
-                                       assert tkwattrnode9 isa TKwattr
+                                       assert tkwattrnode9 isa nullable TKwattr
                                        var tattridnode11 = nodearraylist5
                                        var tattridnode11 = nodearraylist5
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var ptypenode12 = nodearraylist6
                                        var ptypenode12 = nodearraylist6
-                                       assert ptypenode12 isa PType
+                                       assert ptypenode12 isa nullable PType
                                        var pexprnode13 = nodearraylist9
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                null,
@@ -8117,7 +8116,7 @@ private class ReduceAction159
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
                                        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
                                                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
                                                null,
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwattrnode11 = nodearraylist6
                                        var tkwattrnode11 = nodearraylist6
-                                       assert tkwattrnode11 isa TKwattr
+                                       assert tkwattrnode11 isa nullable TKwattr
                                        var tattridnode13 = nodearraylist7
                                        var tattridnode13 = nodearraylist7
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var ptypenode14 = nodearraylist8
                                        var ptypenode14 = nodearraylist8
-                                       assert ptypenode14 isa PType
+                                       assert ptypenode14 isa nullable PType
                                        var pexprnode15 = nodearraylist11
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -8176,7 +8175,7 @@ private class ReduceAction160
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
                                        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
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist5
                                        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
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwattrnode11 = nodearraylist7
                                        var tkwattrnode11 = nodearraylist7
-                                       assert tkwattrnode11 isa TKwattr
+                                       assert tkwattrnode11 isa nullable TKwattr
                                        var tattridnode13 = nodearraylist8
                                        var tattridnode13 = nodearraylist8
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var ptypenode14 = nodearraylist9
                                        var ptypenode14 = nodearraylist9
-                                       assert ptypenode14 isa PType
+                                       assert ptypenode14 isa nullable PType
                                        var pexprnode15 = nodearraylist12
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -8238,7 +8237,7 @@ private class ReduceAction161
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
                                        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
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwattrnode9 = nodearraylist5
                                        var tkwattrnode9 = nodearraylist5
-                                       assert tkwattrnode9 isa TKwattr
+                                       assert tkwattrnode9 isa nullable TKwattr
                                        var tattridnode11 = nodearraylist6
                                        var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var ptypenode12 = nodearraylist7
                                        var ptypenode12 = nodearraylist7
-                                       assert ptypenode12 isa PType
+                                       assert ptypenode12 isa nullable PType
                                        var pexprnode13 = nodearraylist10
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                null,
@@ -8290,7 +8289,7 @@ private class ReduceAction162
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwwritablenode6 = nodearraylist2
                                        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
                                                null,
                                                tkwwritablenode6
                                        )
                                        var pvisibilitynode8 = nodearraylist3
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwattrnode9 = nodearraylist4
                                        var tkwattrnode9 = nodearraylist4
-                                       assert tkwattrnode9 isa TKwattr
+                                       assert tkwattrnode9 isa nullable TKwattr
                                        var tattridnode11 = nodearraylist5
                                        var tattridnode11 = nodearraylist5
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var ptypenode12 = nodearraylist6
                                        var ptypenode12 = nodearraylist6
-                                       assert ptypenode12 isa PType
+                                       assert ptypenode12 isa nullable PType
                                        var pexprnode13 = nodearraylist9
                                        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,
                                                pdocnode2,
                                                null,
                                                pablenode4,
@@ -8339,7 +8338,7 @@ private class ReduceAction163
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode5 = nodearraylist2
                                        var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa TKwredef
+                                       assert tkwredefnode5 isa nullable TKwredef
                                        var tkwwritablenode6 = nodearraylist3
                                        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
                                                tkwredefnode5,
                                                tkwwritablenode6
                                        )
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwattrnode9 = nodearraylist5
                                        var tkwattrnode9 = nodearraylist5
-                                       assert tkwattrnode9 isa TKwattr
+                                       assert tkwattrnode9 isa nullable TKwattr
                                        var tattridnode11 = nodearraylist6
                                        var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var ptypenode12 = nodearraylist7
                                        var ptypenode12 = nodearraylist7
-                                       assert ptypenode12 isa PType
+                                       assert ptypenode12 isa nullable PType
                                        var pexprnode13 = nodearraylist10
                                        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,
                                                pdocnode2,
                                                null,
                                                pablenode4,
@@ -8391,7 +8390,7 @@ private class ReduceAction164
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var pvisibilitynode6 = nodearraylist2
                                        var pvisibilitynode6 = nodearraylist2
-                                       assert pvisibilitynode6 isa PVisibility
+                                       assert pvisibilitynode6 isa nullable PVisibility
                                        var tkwattrnode7 = nodearraylist3
                                        var tkwattrnode7 = nodearraylist3
-                                       assert tkwattrnode7 isa TKwattr
+                                       assert tkwattrnode7 isa nullable TKwattr
                                        var tattridnode9 = nodearraylist4
                                        var tattridnode9 = nodearraylist4
-                                       assert tattridnode9 isa TAttrid
+                                       assert tattridnode9 isa nullable TAttrid
                                        var ptypenode10 = nodearraylist5
                                        var ptypenode10 = nodearraylist5
-                                       assert ptypenode10 isa PType
+                                       assert ptypenode10 isa nullable PType
                                        var pexprnode11 = nodearraylist8
                                        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,
                                                pdocnode2,
                                                null,
                                                null,
@@ -8433,7 +8432,7 @@ private class ReduceAction165
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
                                        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
                                                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
                                                null,
                                                tkwwritablenode8
                                        )
                                        var tkwredefnode9 = nodearraylist4
-                                       assert tkwredefnode9 isa TKwredef
+                                       assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist5
                                        var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwattrnode11 = nodearraylist6
                                        var tkwattrnode11 = nodearraylist6
-                                       assert tkwattrnode11 isa TKwattr
+                                       assert tkwattrnode11 isa nullable TKwattr
                                        var tattridnode13 = nodearraylist7
                                        var tattridnode13 = nodearraylist7
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var ptypenode14 = nodearraylist8
                                        var ptypenode14 = nodearraylist8
-                                       assert ptypenode14 isa PType
+                                       assert ptypenode14 isa nullable PType
                                        var pexprnode15 = nodearraylist11
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -8492,7 +8491,7 @@ private class ReduceAction166
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
                                        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
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist4
                                        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
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
                                        var tkwredefnode9 = nodearraylist5
-                                       assert tkwredefnode9 isa TKwredef
+                                       assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist6
                                        var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwattrnode11 = nodearraylist7
                                        var tkwattrnode11 = nodearraylist7
-                                       assert tkwattrnode11 isa TKwattr
+                                       assert tkwattrnode11 isa nullable TKwattr
                                        var tattridnode13 = nodearraylist8
                                        var tattridnode13 = nodearraylist8
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var ptypenode14 = nodearraylist9
                                        var ptypenode14 = nodearraylist9
-                                       assert ptypenode14 isa PType
+                                       assert ptypenode14 isa nullable PType
                                        var pexprnode15 = nodearraylist12
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -8554,7 +8553,7 @@ private class ReduceAction167
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
                                        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
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist4
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwattrnode9 = nodearraylist5
                                        var tkwattrnode9 = nodearraylist5
-                                       assert tkwattrnode9 isa TKwattr
+                                       assert tkwattrnode9 isa nullable TKwattr
                                        var tattridnode11 = nodearraylist6
                                        var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var ptypenode12 = nodearraylist7
                                        var ptypenode12 = nodearraylist7
-                                       assert ptypenode12 isa PType
+                                       assert ptypenode12 isa nullable PType
                                        var pexprnode13 = nodearraylist10
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                null,
@@ -8606,7 +8605,7 @@ private class ReduceAction168
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
                                        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
                                                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
                                                null,
                                                tkwwritablenode8
                                        )
                                        var tkwredefnode9 = nodearraylist5
-                                       assert tkwredefnode9 isa TKwredef
+                                       assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist6
                                        var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwattrnode11 = nodearraylist7
                                        var tkwattrnode11 = nodearraylist7
-                                       assert tkwattrnode11 isa TKwattr
+                                       assert tkwattrnode11 isa nullable TKwattr
                                        var tattridnode13 = nodearraylist8
                                        var tattridnode13 = nodearraylist8
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var ptypenode14 = nodearraylist9
                                        var ptypenode14 = nodearraylist9
-                                       assert ptypenode14 isa PType
+                                       assert ptypenode14 isa nullable PType
                                        var pexprnode15 = nodearraylist12
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -8668,7 +8667,7 @@ private class ReduceAction169
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
                                        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
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist5
                                        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
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
                                        var tkwredefnode9 = nodearraylist6
-                                       assert tkwredefnode9 isa TKwredef
+                                       assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist7
                                        var pvisibilitynode10 = nodearraylist7
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwattrnode11 = nodearraylist8
                                        var tkwattrnode11 = nodearraylist8
-                                       assert tkwattrnode11 isa TKwattr
+                                       assert tkwattrnode11 isa nullable TKwattr
                                        var tattridnode13 = nodearraylist9
                                        var tattridnode13 = nodearraylist9
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var ptypenode14 = nodearraylist10
                                        var ptypenode14 = nodearraylist10
-                                       assert ptypenode14 isa PType
+                                       assert ptypenode14 isa nullable PType
                                        var pexprnode15 = nodearraylist13
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -8733,7 +8732,7 @@ private class ReduceAction170
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
                                        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
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist5
                                        var pvisibilitynode8 = nodearraylist5
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwattrnode9 = nodearraylist6
                                        var tkwattrnode9 = nodearraylist6
-                                       assert tkwattrnode9 isa TKwattr
+                                       assert tkwattrnode9 isa nullable TKwattr
                                        var tattridnode11 = nodearraylist7
                                        var tattridnode11 = nodearraylist7
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var ptypenode12 = nodearraylist8
                                        var ptypenode12 = nodearraylist8
-                                       assert ptypenode12 isa PType
+                                       assert ptypenode12 isa nullable PType
                                        var pexprnode13 = nodearraylist11
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                null,
@@ -8788,7 +8787,7 @@ private class ReduceAction171
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwwritablenode6 = nodearraylist2
                                        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
                                                null,
                                                tkwwritablenode6
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist4
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwattrnode9 = nodearraylist5
                                        var tkwattrnode9 = nodearraylist5
-                                       assert tkwattrnode9 isa TKwattr
+                                       assert tkwattrnode9 isa nullable TKwattr
                                        var tattridnode11 = nodearraylist6
                                        var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var ptypenode12 = nodearraylist7
                                        var ptypenode12 = nodearraylist7
-                                       assert ptypenode12 isa PType
+                                       assert ptypenode12 isa nullable PType
                                        var pexprnode13 = nodearraylist10
                                        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,
                                                pdocnode2,
                                                null,
                                                pablenode4,
@@ -8840,7 +8839,7 @@ private class ReduceAction172
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode5 = nodearraylist2
                                        var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa TKwredef
+                                       assert tkwredefnode5 isa nullable TKwredef
                                        var tkwwritablenode6 = nodearraylist3
                                        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
                                                tkwredefnode5,
                                                tkwwritablenode6
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist5
                                        var pvisibilitynode8 = nodearraylist5
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwattrnode9 = nodearraylist6
                                        var tkwattrnode9 = nodearraylist6
-                                       assert tkwattrnode9 isa TKwattr
+                                       assert tkwattrnode9 isa nullable TKwattr
                                        var tattridnode11 = nodearraylist7
                                        var tattridnode11 = nodearraylist7
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var ptypenode12 = nodearraylist8
                                        var ptypenode12 = nodearraylist8
-                                       assert ptypenode12 isa PType
+                                       assert ptypenode12 isa nullable PType
                                        var pexprnode13 = nodearraylist11
                                        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,
                                                pdocnode2,
                                                null,
                                                pablenode4,
@@ -8895,7 +8894,7 @@ private class ReduceAction173
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode5 = nodearraylist2
                                        var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa TKwredef
+                                       assert tkwredefnode5 isa nullable TKwredef
                                        var pvisibilitynode6 = nodearraylist3
                                        var pvisibilitynode6 = nodearraylist3
-                                       assert pvisibilitynode6 isa PVisibility
+                                       assert pvisibilitynode6 isa nullable PVisibility
                                        var tkwattrnode7 = nodearraylist4
                                        var tkwattrnode7 = nodearraylist4
-                                       assert tkwattrnode7 isa TKwattr
+                                       assert tkwattrnode7 isa nullable TKwattr
                                        var tattridnode9 = nodearraylist5
                                        var tattridnode9 = nodearraylist5
-                                       assert tattridnode9 isa TAttrid
+                                       assert tattridnode9 isa nullable TAttrid
                                        var ptypenode10 = nodearraylist6
                                        var ptypenode10 = nodearraylist6
-                                       assert ptypenode10 isa PType
+                                       assert ptypenode10 isa nullable PType
                                        var pexprnode11 = nodearraylist9
                                        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,
                                                pdocnode2,
                                                null,
                                                null,
@@ -8940,7 +8939,7 @@ private class ReduceAction174
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
                                        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
                                                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
                                                null,
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist4
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwvarnode12 = nodearraylist5
                                        var tkwvarnode12 = nodearraylist5
-                                       assert tkwvarnode12 isa TKwvar
+                                       assert tkwvarnode12 isa nullable TKwvar
                                        var tattridnode13 = nodearraylist6
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -8988,7 +8987,7 @@ private class ReduceAction175
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
                                        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
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist4
                                        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
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwvarnode12 = nodearraylist6
                                        var tkwvarnode12 = nodearraylist6
-                                       assert tkwvarnode12 isa TKwvar
+                                       assert tkwvarnode12 isa nullable TKwvar
                                        var tattridnode13 = nodearraylist7
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -9039,27 +9038,27 @@ private class ReduceAction176
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                                null,
                                                tkwreadablenode5
                                        )
                                        var pvisibilitynode8 = nodearraylist3
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwvarnode10 = nodearraylist4
                                        var tkwvarnode10 = nodearraylist4
-                                       assert tkwvarnode10 isa TKwvar
+                                       assert tkwvarnode10 isa nullable TKwvar
                                        var tattridnode11 = nodearraylist5
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                null,
@@ -9080,7 +9079,7 @@ private class ReduceAction177
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
                                        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
                                                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
                                                null,
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwvarnode12 = nodearraylist6
                                        var tkwvarnode12 = nodearraylist6
-                                       assert tkwvarnode12 isa TKwvar
+                                       assert tkwvarnode12 isa nullable TKwvar
                                        var tattridnode13 = nodearraylist7
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -9131,7 +9130,7 @@ private class ReduceAction178
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
                                        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
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist5
                                        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
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwvarnode12 = nodearraylist7
                                        var tkwvarnode12 = nodearraylist7
-                                       assert tkwvarnode12 isa TKwvar
+                                       assert tkwvarnode12 isa nullable TKwvar
                                        var tattridnode13 = nodearraylist8
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -9185,7 +9184,7 @@ private class ReduceAction179
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
                                        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
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwvarnode10 = nodearraylist5
                                        var tkwvarnode10 = nodearraylist5
-                                       assert tkwvarnode10 isa TKwvar
+                                       assert tkwvarnode10 isa nullable TKwvar
                                        var tattridnode11 = nodearraylist6
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                null,
@@ -9229,27 +9228,27 @@ private class ReduceAction180
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                                null,
                                                tkwwritablenode6
                                        )
                                        var pvisibilitynode8 = nodearraylist3
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwvarnode10 = nodearraylist4
                                        var tkwvarnode10 = nodearraylist4
-                                       assert tkwvarnode10 isa TKwvar
+                                       assert tkwvarnode10 isa nullable TKwvar
                                        var tattridnode11 = nodearraylist5
                                        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,
                                                pdocnode2,
                                                null,
                                                pablenode4,
@@ -9270,7 +9269,7 @@ private class ReduceAction181
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode5 = nodearraylist2
                                        var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa TKwredef
+                                       assert tkwredefnode5 isa nullable TKwredef
                                        var tkwwritablenode6 = nodearraylist3
                                        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
                                                tkwredefnode5,
                                                tkwwritablenode6
                                        )
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwvarnode10 = nodearraylist5
                                        var tkwvarnode10 = nodearraylist5
-                                       assert tkwvarnode10 isa TKwvar
+                                       assert tkwvarnode10 isa nullable TKwvar
                                        var tattridnode11 = nodearraylist6
                                        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,
                                                pdocnode2,
                                                null,
                                                pablenode4,
@@ -9314,20 +9313,20 @@ private class ReduceAction182
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var pvisibilitynode6 = nodearraylist2
-                                       assert pvisibilitynode6 isa PVisibility
+                                       assert pvisibilitynode6 isa nullable PVisibility
                                        var tkwvarnode8 = nodearraylist3
                                        var tkwvarnode8 = nodearraylist3
-                                       assert tkwvarnode8 isa TKwvar
+                                       assert tkwvarnode8 isa nullable TKwvar
                                        var tattridnode9 = nodearraylist4
                                        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,
                                                pdocnode2,
                                                null,
                                                null,
@@ -9348,7 +9347,7 @@ private class ReduceAction183
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
                                        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
                                                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
                                                null,
                                                tkwwritablenode8
                                        )
                                        var tkwredefnode9 = nodearraylist4
-                                       assert tkwredefnode9 isa TKwredef
+                                       assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist5
                                        var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwvarnode12 = nodearraylist6
                                        var tkwvarnode12 = nodearraylist6
-                                       assert tkwvarnode12 isa TKwvar
+                                       assert tkwvarnode12 isa nullable TKwvar
                                        var tattridnode13 = nodearraylist7
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -9399,7 +9398,7 @@ private class ReduceAction184
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
                                        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
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist4
                                        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
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
                                        var tkwredefnode9 = nodearraylist5
-                                       assert tkwredefnode9 isa TKwredef
+                                       assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist6
                                        var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwvarnode12 = nodearraylist7
                                        var tkwvarnode12 = nodearraylist7
-                                       assert tkwvarnode12 isa TKwvar
+                                       assert tkwvarnode12 isa nullable TKwvar
                                        var tattridnode13 = nodearraylist8
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -9453,7 +9452,7 @@ private class ReduceAction185
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
                                        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
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist4
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwvarnode10 = nodearraylist5
                                        var tkwvarnode10 = nodearraylist5
-                                       assert tkwvarnode10 isa TKwvar
+                                       assert tkwvarnode10 isa nullable TKwvar
                                        var tattridnode11 = nodearraylist6
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                null,
@@ -9497,7 +9496,7 @@ private class ReduceAction186
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
                                        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
                                                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
                                                null,
                                                tkwwritablenode8
                                        )
                                        var tkwredefnode9 = nodearraylist5
-                                       assert tkwredefnode9 isa TKwredef
+                                       assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist6
                                        var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwvarnode12 = nodearraylist7
                                        var tkwvarnode12 = nodearraylist7
-                                       assert tkwvarnode12 isa TKwvar
+                                       assert tkwvarnode12 isa nullable TKwvar
                                        var tattridnode13 = nodearraylist8
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -9551,7 +9550,7 @@ private class ReduceAction187
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
                                        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
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist5
                                        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
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
                                        var tkwredefnode9 = nodearraylist6
-                                       assert tkwredefnode9 isa TKwredef
+                                       assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist7
                                        var pvisibilitynode10 = nodearraylist7
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwvarnode12 = nodearraylist8
                                        var tkwvarnode12 = nodearraylist8
-                                       assert tkwvarnode12 isa TKwvar
+                                       assert tkwvarnode12 isa nullable TKwvar
                                        var tattridnode13 = nodearraylist9
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -9608,7 +9607,7 @@ private class ReduceAction188
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
                                        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
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist5
                                        var pvisibilitynode8 = nodearraylist5
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwvarnode10 = nodearraylist6
                                        var tkwvarnode10 = nodearraylist6
-                                       assert tkwvarnode10 isa TKwvar
+                                       assert tkwvarnode10 isa nullable TKwvar
                                        var tattridnode11 = nodearraylist7
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                null,
@@ -9655,7 +9654,7 @@ private class ReduceAction189
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwwritablenode6 = nodearraylist2
                                        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
                                                null,
                                                tkwwritablenode6
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist4
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwvarnode10 = nodearraylist5
                                        var tkwvarnode10 = nodearraylist5
-                                       assert tkwvarnode10 isa TKwvar
+                                       assert tkwvarnode10 isa nullable TKwvar
                                        var tattridnode11 = nodearraylist6
                                        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,
                                                pdocnode2,
                                                null,
                                                pablenode4,
@@ -9699,7 +9698,7 @@ private class ReduceAction190
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode5 = nodearraylist2
                                        var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa TKwredef
+                                       assert tkwredefnode5 isa nullable TKwredef
                                        var tkwwritablenode6 = nodearraylist3
                                        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
                                                tkwredefnode5,
                                                tkwwritablenode6
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist5
                                        var pvisibilitynode8 = nodearraylist5
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwvarnode10 = nodearraylist6
                                        var tkwvarnode10 = nodearraylist6
-                                       assert tkwvarnode10 isa TKwvar
+                                       assert tkwvarnode10 isa nullable TKwvar
                                        var tattridnode11 = nodearraylist7
                                        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,
                                                pdocnode2,
                                                null,
                                                pablenode4,
@@ -9746,23 +9745,23 @@ private class ReduceAction191
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa TKwredef
+                                       assert tkwredefnode5 isa nullable TKwredef
                                        var pvisibilitynode6 = nodearraylist3
                                        var pvisibilitynode6 = nodearraylist3
-                                       assert pvisibilitynode6 isa PVisibility
+                                       assert pvisibilitynode6 isa nullable PVisibility
                                        var tkwvarnode8 = nodearraylist4
                                        var tkwvarnode8 = nodearraylist4
-                                       assert tkwvarnode8 isa TKwvar
+                                       assert tkwvarnode8 isa nullable TKwvar
                                        var tattridnode9 = nodearraylist5
                                        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,
                                                pdocnode2,
                                                null,
                                                null,
@@ -9783,7 +9782,7 @@ private class ReduceAction192
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
                                        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
                                                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
                                                null,
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist4
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwvarnode12 = nodearraylist5
                                        var tkwvarnode12 = nodearraylist5
-                                       assert tkwvarnode12 isa TKwvar
+                                       assert tkwvarnode12 isa nullable TKwvar
                                        var tattridnode13 = nodearraylist6
                                        var tattridnode13 = nodearraylist6
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var ptypenode14 = nodearraylist7
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -9834,7 +9833,7 @@ private class ReduceAction193
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
                                        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
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist4
                                        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
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwvarnode12 = nodearraylist6
                                        var tkwvarnode12 = nodearraylist6
-                                       assert tkwvarnode12 isa TKwvar
+                                       assert tkwvarnode12 isa nullable TKwvar
                                        var tattridnode13 = nodearraylist7
                                        var tattridnode13 = nodearraylist7
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var ptypenode14 = nodearraylist8
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -9888,7 +9887,7 @@ private class ReduceAction194
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
                                        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
                                                null,
                                                tkwreadablenode5
                                        )
                                        var pvisibilitynode8 = nodearraylist3
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwvarnode10 = nodearraylist4
                                        var tkwvarnode10 = nodearraylist4
-                                       assert tkwvarnode10 isa TKwvar
+                                       assert tkwvarnode10 isa nullable TKwvar
                                        var tattridnode11 = nodearraylist5
                                        var tattridnode11 = nodearraylist5
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var ptypenode12 = nodearraylist6
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                null,
@@ -9932,7 +9931,7 @@ private class ReduceAction195
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
                                        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
                                                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
                                                null,
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwvarnode12 = nodearraylist6
                                        var tkwvarnode12 = nodearraylist6
-                                       assert tkwvarnode12 isa TKwvar
+                                       assert tkwvarnode12 isa nullable TKwvar
                                        var tattridnode13 = nodearraylist7
                                        var tattridnode13 = nodearraylist7
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var ptypenode14 = nodearraylist8
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -9986,7 +9985,7 @@ private class ReduceAction196
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
                                        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
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist5
                                        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
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwvarnode12 = nodearraylist7
                                        var tkwvarnode12 = nodearraylist7
-                                       assert tkwvarnode12 isa TKwvar
+                                       assert tkwvarnode12 isa nullable TKwvar
                                        var tattridnode13 = nodearraylist8
                                        var tattridnode13 = nodearraylist8
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var ptypenode14 = nodearraylist9
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -10043,7 +10042,7 @@ private class ReduceAction197
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
                                        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
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwvarnode10 = nodearraylist5
                                        var tkwvarnode10 = nodearraylist5
-                                       assert tkwvarnode10 isa TKwvar
+                                       assert tkwvarnode10 isa nullable TKwvar
                                        var tattridnode11 = nodearraylist6
                                        var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var ptypenode12 = nodearraylist7
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                null,
@@ -10090,7 +10089,7 @@ private class ReduceAction198
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwwritablenode6 = nodearraylist2
                                        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
                                                null,
                                                tkwwritablenode6
                                        )
                                        var pvisibilitynode8 = nodearraylist3
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwvarnode10 = nodearraylist4
                                        var tkwvarnode10 = nodearraylist4
-                                       assert tkwvarnode10 isa TKwvar
+                                       assert tkwvarnode10 isa nullable TKwvar
                                        var tattridnode11 = nodearraylist5
                                        var tattridnode11 = nodearraylist5
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var ptypenode12 = nodearraylist6
                                        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,
                                                pdocnode2,
                                                null,
                                                pablenode4,
@@ -10134,7 +10133,7 @@ private class ReduceAction199
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode5 = nodearraylist2
                                        var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa TKwredef
+                                       assert tkwredefnode5 isa nullable TKwredef
                                        var tkwwritablenode6 = nodearraylist3
                                        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
                                                tkwredefnode5,
                                                tkwwritablenode6
                                        )
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwvarnode10 = nodearraylist5
                                        var tkwvarnode10 = nodearraylist5
-                                       assert tkwvarnode10 isa TKwvar
+                                       assert tkwvarnode10 isa nullable TKwvar
                                        var tattridnode11 = nodearraylist6
                                        var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var ptypenode12 = nodearraylist7
                                        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,
                                                pdocnode2,
                                                null,
                                                pablenode4,
@@ -10181,23 +10180,23 @@ private class ReduceAction200
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var pvisibilitynode6 = nodearraylist2
-                                       assert pvisibilitynode6 isa PVisibility
+                                       assert pvisibilitynode6 isa nullable PVisibility
                                        var tkwvarnode8 = nodearraylist3
                                        var tkwvarnode8 = nodearraylist3
-                                       assert tkwvarnode8 isa TKwvar
+                                       assert tkwvarnode8 isa nullable TKwvar
                                        var tattridnode9 = nodearraylist4
                                        var tattridnode9 = nodearraylist4
-                                       assert tattridnode9 isa TAttrid
+                                       assert tattridnode9 isa nullable TAttrid
                                        var ptypenode10 = nodearraylist5
                                        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,
                                                pdocnode2,
                                                null,
                                                null,
@@ -10218,7 +10217,7 @@ private class ReduceAction201
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
                                        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
                                                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
                                                null,
                                                tkwwritablenode8
                                        )
                                        var tkwredefnode9 = nodearraylist4
-                                       assert tkwredefnode9 isa TKwredef
+                                       assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist5
                                        var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwvarnode12 = nodearraylist6
                                        var tkwvarnode12 = nodearraylist6
-                                       assert tkwvarnode12 isa TKwvar
+                                       assert tkwvarnode12 isa nullable TKwvar
                                        var tattridnode13 = nodearraylist7
                                        var tattridnode13 = nodearraylist7
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var ptypenode14 = nodearraylist8
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -10272,7 +10271,7 @@ private class ReduceAction202
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
                                        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
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist4
                                        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
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
                                        var tkwredefnode9 = nodearraylist5
-                                       assert tkwredefnode9 isa TKwredef
+                                       assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist6
                                        var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwvarnode12 = nodearraylist7
                                        var tkwvarnode12 = nodearraylist7
-                                       assert tkwvarnode12 isa TKwvar
+                                       assert tkwvarnode12 isa nullable TKwvar
                                        var tattridnode13 = nodearraylist8
                                        var tattridnode13 = nodearraylist8
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var ptypenode14 = nodearraylist9
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -10329,7 +10328,7 @@ private class ReduceAction203
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
                                        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
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist4
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwvarnode10 = nodearraylist5
                                        var tkwvarnode10 = nodearraylist5
-                                       assert tkwvarnode10 isa TKwvar
+                                       assert tkwvarnode10 isa nullable TKwvar
                                        var tattridnode11 = nodearraylist6
                                        var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var ptypenode12 = nodearraylist7
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                null,
@@ -10376,7 +10375,7 @@ private class ReduceAction204
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
                                        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
                                                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
                                                null,
                                                tkwwritablenode8
                                        )
                                        var tkwredefnode9 = nodearraylist5
-                                       assert tkwredefnode9 isa TKwredef
+                                       assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist6
                                        var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwvarnode12 = nodearraylist7
                                        var tkwvarnode12 = nodearraylist7
-                                       assert tkwvarnode12 isa TKwvar
+                                       assert tkwvarnode12 isa nullable TKwvar
                                        var tattridnode13 = nodearraylist8
                                        var tattridnode13 = nodearraylist8
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var ptypenode14 = nodearraylist9
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -10433,7 +10432,7 @@ private class ReduceAction205
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
                                        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
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist5
                                        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
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
                                        var tkwredefnode9 = nodearraylist6
-                                       assert tkwredefnode9 isa TKwredef
+                                       assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist7
                                        var pvisibilitynode10 = nodearraylist7
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwvarnode12 = nodearraylist8
                                        var tkwvarnode12 = nodearraylist8
-                                       assert tkwvarnode12 isa TKwvar
+                                       assert tkwvarnode12 isa nullable TKwvar
                                        var tattridnode13 = nodearraylist9
                                        var tattridnode13 = nodearraylist9
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var ptypenode14 = nodearraylist10
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -10493,7 +10492,7 @@ private class ReduceAction206
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
                                        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
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist5
                                        var pvisibilitynode8 = nodearraylist5
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwvarnode10 = nodearraylist6
                                        var tkwvarnode10 = nodearraylist6
-                                       assert tkwvarnode10 isa TKwvar
+                                       assert tkwvarnode10 isa nullable TKwvar
                                        var tattridnode11 = nodearraylist7
                                        var tattridnode11 = nodearraylist7
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var ptypenode12 = nodearraylist8
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                null,
@@ -10543,7 +10542,7 @@ private class ReduceAction207
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwwritablenode6 = nodearraylist2
                                        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
                                                null,
                                                tkwwritablenode6
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist4
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwvarnode10 = nodearraylist5
                                        var tkwvarnode10 = nodearraylist5
-                                       assert tkwvarnode10 isa TKwvar
+                                       assert tkwvarnode10 isa nullable TKwvar
                                        var tattridnode11 = nodearraylist6
                                        var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var ptypenode12 = nodearraylist7
                                        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,
                                                pdocnode2,
                                                null,
                                                pablenode4,
@@ -10590,7 +10589,7 @@ private class ReduceAction208
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode5 = nodearraylist2
                                        var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa TKwredef
+                                       assert tkwredefnode5 isa nullable TKwredef
                                        var tkwwritablenode6 = nodearraylist3
                                        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
                                                tkwredefnode5,
                                                tkwwritablenode6
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist5
                                        var pvisibilitynode8 = nodearraylist5
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwvarnode10 = nodearraylist6
                                        var tkwvarnode10 = nodearraylist6
-                                       assert tkwvarnode10 isa TKwvar
+                                       assert tkwvarnode10 isa nullable TKwvar
                                        var tattridnode11 = nodearraylist7
                                        var tattridnode11 = nodearraylist7
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var ptypenode12 = nodearraylist8
                                        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,
                                                pdocnode2,
                                                null,
                                                pablenode4,
@@ -10640,7 +10639,7 @@ private class ReduceAction209
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode5 = nodearraylist2
                                        var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa TKwredef
+                                       assert tkwredefnode5 isa nullable TKwredef
                                        var pvisibilitynode6 = nodearraylist3
                                        var pvisibilitynode6 = nodearraylist3
-                                       assert pvisibilitynode6 isa PVisibility
+                                       assert pvisibilitynode6 isa nullable PVisibility
                                        var tkwvarnode8 = nodearraylist4
                                        var tkwvarnode8 = nodearraylist4
-                                       assert tkwvarnode8 isa TKwvar
+                                       assert tkwvarnode8 isa nullable TKwvar
                                        var tattridnode9 = nodearraylist5
                                        var tattridnode9 = nodearraylist5
-                                       assert tattridnode9 isa TAttrid
+                                       assert tattridnode9 isa nullable TAttrid
                                        var ptypenode10 = nodearraylist6
                                        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,
                                                pdocnode2,
                                                null,
                                                null,
@@ -10680,7 +10679,7 @@ private class ReduceAction210
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
                                        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
                                                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
                                                null,
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist4
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwvarnode12 = nodearraylist5
                                        var tkwvarnode12 = nodearraylist5
-                                       assert tkwvarnode12 isa TKwvar
+                                       assert tkwvarnode12 isa nullable TKwvar
                                        var tattridnode13 = nodearraylist6
                                        var tattridnode13 = nodearraylist6
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var pexprnode15 = nodearraylist9
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -10733,7 +10732,7 @@ private class ReduceAction211
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
                                        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
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist4
                                        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
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwvarnode12 = nodearraylist6
                                        var tkwvarnode12 = nodearraylist6
-                                       assert tkwvarnode12 isa TKwvar
+                                       assert tkwvarnode12 isa nullable TKwvar
                                        var tattridnode13 = nodearraylist7
                                        var tattridnode13 = nodearraylist7
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var pexprnode15 = nodearraylist10
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -10789,7 +10788,7 @@ private class ReduceAction212
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
                                        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
                                                null,
                                                tkwreadablenode5
                                        )
                                        var pvisibilitynode8 = nodearraylist3
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwvarnode10 = nodearraylist4
                                        var tkwvarnode10 = nodearraylist4
-                                       assert tkwvarnode10 isa TKwvar
+                                       assert tkwvarnode10 isa nullable TKwvar
                                        var tattridnode11 = nodearraylist5
                                        var tattridnode11 = nodearraylist5
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var pexprnode13 = nodearraylist8
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                null,
@@ -10835,7 +10834,7 @@ private class ReduceAction213
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
                                        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
                                                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
                                                null,
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwvarnode12 = nodearraylist6
                                        var tkwvarnode12 = nodearraylist6
-                                       assert tkwvarnode12 isa TKwvar
+                                       assert tkwvarnode12 isa nullable TKwvar
                                        var tattridnode13 = nodearraylist7
                                        var tattridnode13 = nodearraylist7
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var pexprnode15 = nodearraylist10
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -10891,7 +10890,7 @@ private class ReduceAction214
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
                                        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
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist5
                                        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
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwvarnode12 = nodearraylist7
                                        var tkwvarnode12 = nodearraylist7
-                                       assert tkwvarnode12 isa TKwvar
+                                       assert tkwvarnode12 isa nullable TKwvar
                                        var tattridnode13 = nodearraylist8
                                        var tattridnode13 = nodearraylist8
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var pexprnode15 = nodearraylist11
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -10950,7 +10949,7 @@ private class ReduceAction215
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
                                        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
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwvarnode10 = nodearraylist5
                                        var tkwvarnode10 = nodearraylist5
-                                       assert tkwvarnode10 isa TKwvar
+                                       assert tkwvarnode10 isa nullable TKwvar
                                        var tattridnode11 = nodearraylist6
                                        var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var pexprnode13 = nodearraylist9
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                null,
@@ -10999,7 +10998,7 @@ private class ReduceAction216
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwwritablenode6 = nodearraylist2
                                        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
                                                null,
                                                tkwwritablenode6
                                        )
                                        var pvisibilitynode8 = nodearraylist3
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwvarnode10 = nodearraylist4
                                        var tkwvarnode10 = nodearraylist4
-                                       assert tkwvarnode10 isa TKwvar
+                                       assert tkwvarnode10 isa nullable TKwvar
                                        var tattridnode11 = nodearraylist5
                                        var tattridnode11 = nodearraylist5
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var pexprnode13 = nodearraylist8
                                        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,
                                                pdocnode2,
                                                null,
                                                pablenode4,
@@ -11045,7 +11044,7 @@ private class ReduceAction217
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode5 = nodearraylist2
                                        var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa TKwredef
+                                       assert tkwredefnode5 isa nullable TKwredef
                                        var tkwwritablenode6 = nodearraylist3
                                        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
                                                tkwredefnode5,
                                                tkwwritablenode6
                                        )
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwvarnode10 = nodearraylist5
                                        var tkwvarnode10 = nodearraylist5
-                                       assert tkwvarnode10 isa TKwvar
+                                       assert tkwvarnode10 isa nullable TKwvar
                                        var tattridnode11 = nodearraylist6
                                        var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var pexprnode13 = nodearraylist9
                                        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,
                                                pdocnode2,
                                                null,
                                                pablenode4,
@@ -11094,7 +11093,7 @@ private class ReduceAction218
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var pvisibilitynode6 = nodearraylist2
                                        var pvisibilitynode6 = nodearraylist2
-                                       assert pvisibilitynode6 isa PVisibility
+                                       assert pvisibilitynode6 isa nullable PVisibility
                                        var tkwvarnode8 = nodearraylist3
                                        var tkwvarnode8 = nodearraylist3
-                                       assert tkwvarnode8 isa TKwvar
+                                       assert tkwvarnode8 isa nullable TKwvar
                                        var tattridnode9 = nodearraylist4
                                        var tattridnode9 = nodearraylist4
-                                       assert tattridnode9 isa TAttrid
+                                       assert tattridnode9 isa nullable TAttrid
                                        var pexprnode11 = nodearraylist7
                                        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,
                                                pdocnode2,
                                                null,
                                                null,
@@ -11133,7 +11132,7 @@ private class ReduceAction219
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
                                        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
                                                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
                                                null,
                                                tkwwritablenode8
                                        )
                                        var tkwredefnode9 = nodearraylist4
-                                       assert tkwredefnode9 isa TKwredef
+                                       assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist5
                                        var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwvarnode12 = nodearraylist6
                                        var tkwvarnode12 = nodearraylist6
-                                       assert tkwvarnode12 isa TKwvar
+                                       assert tkwvarnode12 isa nullable TKwvar
                                        var tattridnode13 = nodearraylist7
                                        var tattridnode13 = nodearraylist7
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var pexprnode15 = nodearraylist10
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -11189,7 +11188,7 @@ private class ReduceAction220
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
                                        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
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist4
                                        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
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
                                        var tkwredefnode9 = nodearraylist5
-                                       assert tkwredefnode9 isa TKwredef
+                                       assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist6
                                        var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwvarnode12 = nodearraylist7
                                        var tkwvarnode12 = nodearraylist7
-                                       assert tkwvarnode12 isa TKwvar
+                                       assert tkwvarnode12 isa nullable TKwvar
                                        var tattridnode13 = nodearraylist8
                                        var tattridnode13 = nodearraylist8
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var pexprnode15 = nodearraylist11
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -11248,7 +11247,7 @@ private class ReduceAction221
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
                                        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
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist4
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwvarnode10 = nodearraylist5
                                        var tkwvarnode10 = nodearraylist5
-                                       assert tkwvarnode10 isa TKwvar
+                                       assert tkwvarnode10 isa nullable TKwvar
                                        var tattridnode11 = nodearraylist6
                                        var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var pexprnode13 = nodearraylist9
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                null,
@@ -11297,7 +11296,7 @@ private class ReduceAction222
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
                                        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
                                                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
                                                null,
                                                tkwwritablenode8
                                        )
                                        var tkwredefnode9 = nodearraylist5
-                                       assert tkwredefnode9 isa TKwredef
+                                       assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist6
                                        var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwvarnode12 = nodearraylist7
                                        var tkwvarnode12 = nodearraylist7
-                                       assert tkwvarnode12 isa TKwvar
+                                       assert tkwvarnode12 isa nullable TKwvar
                                        var tattridnode13 = nodearraylist8
                                        var tattridnode13 = nodearraylist8
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var pexprnode15 = nodearraylist11
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -11356,7 +11355,7 @@ private class ReduceAction223
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
                                        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
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist5
                                        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
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
                                        var tkwredefnode9 = nodearraylist6
-                                       assert tkwredefnode9 isa TKwredef
+                                       assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist7
                                        var pvisibilitynode10 = nodearraylist7
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwvarnode12 = nodearraylist8
                                        var tkwvarnode12 = nodearraylist8
-                                       assert tkwvarnode12 isa TKwvar
+                                       assert tkwvarnode12 isa nullable TKwvar
                                        var tattridnode13 = nodearraylist9
                                        var tattridnode13 = nodearraylist9
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var pexprnode15 = nodearraylist12
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -11418,7 +11417,7 @@ private class ReduceAction224
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
                                        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
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist5
                                        var pvisibilitynode8 = nodearraylist5
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwvarnode10 = nodearraylist6
                                        var tkwvarnode10 = nodearraylist6
-                                       assert tkwvarnode10 isa TKwvar
+                                       assert tkwvarnode10 isa nullable TKwvar
                                        var tattridnode11 = nodearraylist7
                                        var tattridnode11 = nodearraylist7
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var pexprnode13 = nodearraylist10
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                null,
@@ -11470,7 +11469,7 @@ private class ReduceAction225
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwwritablenode6 = nodearraylist2
                                        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
                                                null,
                                                tkwwritablenode6
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist4
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwvarnode10 = nodearraylist5
                                        var tkwvarnode10 = nodearraylist5
-                                       assert tkwvarnode10 isa TKwvar
+                                       assert tkwvarnode10 isa nullable TKwvar
                                        var tattridnode11 = nodearraylist6
                                        var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var pexprnode13 = nodearraylist9
                                        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,
                                                pdocnode2,
                                                null,
                                                pablenode4,
@@ -11519,7 +11518,7 @@ private class ReduceAction226
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode5 = nodearraylist2
                                        var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa TKwredef
+                                       assert tkwredefnode5 isa nullable TKwredef
                                        var tkwwritablenode6 = nodearraylist3
                                        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
                                                tkwredefnode5,
                                                tkwwritablenode6
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist5
                                        var pvisibilitynode8 = nodearraylist5
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwvarnode10 = nodearraylist6
                                        var tkwvarnode10 = nodearraylist6
-                                       assert tkwvarnode10 isa TKwvar
+                                       assert tkwvarnode10 isa nullable TKwvar
                                        var tattridnode11 = nodearraylist7
                                        var tattridnode11 = nodearraylist7
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var pexprnode13 = nodearraylist10
                                        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,
                                                pdocnode2,
                                                null,
                                                pablenode4,
@@ -11571,7 +11570,7 @@ private class ReduceAction227
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode5 = nodearraylist2
                                        var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa TKwredef
+                                       assert tkwredefnode5 isa nullable TKwredef
                                        var pvisibilitynode6 = nodearraylist3
                                        var pvisibilitynode6 = nodearraylist3
-                                       assert pvisibilitynode6 isa PVisibility
+                                       assert pvisibilitynode6 isa nullable PVisibility
                                        var tkwvarnode8 = nodearraylist4
                                        var tkwvarnode8 = nodearraylist4
-                                       assert tkwvarnode8 isa TKwvar
+                                       assert tkwvarnode8 isa nullable TKwvar
                                        var tattridnode9 = nodearraylist5
                                        var tattridnode9 = nodearraylist5
-                                       assert tattridnode9 isa TAttrid
+                                       assert tattridnode9 isa nullable TAttrid
                                        var pexprnode11 = nodearraylist8
                                        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,
                                                pdocnode2,
                                                null,
                                                null,
@@ -11613,7 +11612,7 @@ private class ReduceAction228
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
                                        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
                                                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
                                                null,
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist4
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwvarnode12 = nodearraylist5
                                        var tkwvarnode12 = nodearraylist5
-                                       assert tkwvarnode12 isa TKwvar
+                                       assert tkwvarnode12 isa nullable TKwvar
                                        var tattridnode13 = nodearraylist6
                                        var tattridnode13 = nodearraylist6
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var ptypenode14 = nodearraylist7
                                        var ptypenode14 = nodearraylist7
-                                       assert ptypenode14 isa PType
+                                       assert ptypenode14 isa nullable PType
                                        var pexprnode15 = nodearraylist10
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -11669,7 +11668,7 @@ private class ReduceAction229
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
                                        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
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist4
                                        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
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwvarnode12 = nodearraylist6
                                        var tkwvarnode12 = nodearraylist6
-                                       assert tkwvarnode12 isa TKwvar
+                                       assert tkwvarnode12 isa nullable TKwvar
                                        var tattridnode13 = nodearraylist7
                                        var tattridnode13 = nodearraylist7
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var ptypenode14 = nodearraylist8
                                        var ptypenode14 = nodearraylist8
-                                       assert ptypenode14 isa PType
+                                       assert ptypenode14 isa nullable PType
                                        var pexprnode15 = nodearraylist11
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -11728,7 +11727,7 @@ private class ReduceAction230
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
                                        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
                                                null,
                                                tkwreadablenode5
                                        )
                                        var pvisibilitynode8 = nodearraylist3
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwvarnode10 = nodearraylist4
                                        var tkwvarnode10 = nodearraylist4
-                                       assert tkwvarnode10 isa TKwvar
+                                       assert tkwvarnode10 isa nullable TKwvar
                                        var tattridnode11 = nodearraylist5
                                        var tattridnode11 = nodearraylist5
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var ptypenode12 = nodearraylist6
                                        var ptypenode12 = nodearraylist6
-                                       assert ptypenode12 isa PType
+                                       assert ptypenode12 isa nullable PType
                                        var pexprnode13 = nodearraylist9
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                null,
@@ -11777,7 +11776,7 @@ private class ReduceAction231
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
                                        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
                                                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
                                                null,
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwvarnode12 = nodearraylist6
                                        var tkwvarnode12 = nodearraylist6
-                                       assert tkwvarnode12 isa TKwvar
+                                       assert tkwvarnode12 isa nullable TKwvar
                                        var tattridnode13 = nodearraylist7
                                        var tattridnode13 = nodearraylist7
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var ptypenode14 = nodearraylist8
                                        var ptypenode14 = nodearraylist8
-                                       assert ptypenode14 isa PType
+                                       assert ptypenode14 isa nullable PType
                                        var pexprnode15 = nodearraylist11
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -11836,7 +11835,7 @@ private class ReduceAction232
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
                                        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
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist5
                                        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
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
                                        var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwvarnode12 = nodearraylist7
                                        var tkwvarnode12 = nodearraylist7
-                                       assert tkwvarnode12 isa TKwvar
+                                       assert tkwvarnode12 isa nullable TKwvar
                                        var tattridnode13 = nodearraylist8
                                        var tattridnode13 = nodearraylist8
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var ptypenode14 = nodearraylist9
                                        var ptypenode14 = nodearraylist9
-                                       assert ptypenode14 isa PType
+                                       assert ptypenode14 isa nullable PType
                                        var pexprnode15 = nodearraylist12
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -11898,7 +11897,7 @@ private class ReduceAction233
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
                                        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
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwvarnode10 = nodearraylist5
                                        var tkwvarnode10 = nodearraylist5
-                                       assert tkwvarnode10 isa TKwvar
+                                       assert tkwvarnode10 isa nullable TKwvar
                                        var tattridnode11 = nodearraylist6
                                        var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var ptypenode12 = nodearraylist7
                                        var ptypenode12 = nodearraylist7
-                                       assert ptypenode12 isa PType
+                                       assert ptypenode12 isa nullable PType
                                        var pexprnode13 = nodearraylist10
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                null,
@@ -11950,7 +11949,7 @@ private class ReduceAction234
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwwritablenode6 = nodearraylist2
                                        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
                                                null,
                                                tkwwritablenode6
                                        )
                                        var pvisibilitynode8 = nodearraylist3
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwvarnode10 = nodearraylist4
                                        var tkwvarnode10 = nodearraylist4
-                                       assert tkwvarnode10 isa TKwvar
+                                       assert tkwvarnode10 isa nullable TKwvar
                                        var tattridnode11 = nodearraylist5
                                        var tattridnode11 = nodearraylist5
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var ptypenode12 = nodearraylist6
                                        var ptypenode12 = nodearraylist6
-                                       assert ptypenode12 isa PType
+                                       assert ptypenode12 isa nullable PType
                                        var pexprnode13 = nodearraylist9
                                        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,
                                                pdocnode2,
                                                null,
                                                pablenode4,
@@ -11999,7 +11998,7 @@ private class ReduceAction235
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode5 = nodearraylist2
                                        var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa TKwredef
+                                       assert tkwredefnode5 isa nullable TKwredef
                                        var tkwwritablenode6 = nodearraylist3
                                        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
                                                tkwredefnode5,
                                                tkwwritablenode6
                                        )
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwvarnode10 = nodearraylist5
                                        var tkwvarnode10 = nodearraylist5
-                                       assert tkwvarnode10 isa TKwvar
+                                       assert tkwvarnode10 isa nullable TKwvar
                                        var tattridnode11 = nodearraylist6
                                        var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var ptypenode12 = nodearraylist7
                                        var ptypenode12 = nodearraylist7
-                                       assert ptypenode12 isa PType
+                                       assert ptypenode12 isa nullable PType
                                        var pexprnode13 = nodearraylist10
                                        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,
                                                pdocnode2,
                                                null,
                                                pablenode4,
@@ -12051,7 +12050,7 @@ private class ReduceAction236
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var pvisibilitynode6 = nodearraylist2
                                        var pvisibilitynode6 = nodearraylist2
-                                       assert pvisibilitynode6 isa PVisibility
+                                       assert pvisibilitynode6 isa nullable PVisibility
                                        var tkwvarnode8 = nodearraylist3
                                        var tkwvarnode8 = nodearraylist3
-                                       assert tkwvarnode8 isa TKwvar
+                                       assert tkwvarnode8 isa nullable TKwvar
                                        var tattridnode9 = nodearraylist4
                                        var tattridnode9 = nodearraylist4
-                                       assert tattridnode9 isa TAttrid
+                                       assert tattridnode9 isa nullable TAttrid
                                        var ptypenode10 = nodearraylist5
                                        var ptypenode10 = nodearraylist5
-                                       assert ptypenode10 isa PType
+                                       assert ptypenode10 isa nullable PType
                                        var pexprnode11 = nodearraylist8
                                        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,
                                                pdocnode2,
                                                null,
                                                null,
@@ -12093,7 +12092,7 @@ private class ReduceAction237
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
                                        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
                                                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
                                                null,
                                                tkwwritablenode8
                                        )
                                        var tkwredefnode9 = nodearraylist4
-                                       assert tkwredefnode9 isa TKwredef
+                                       assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist5
                                        var pvisibilitynode10 = nodearraylist5
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwvarnode12 = nodearraylist6
                                        var tkwvarnode12 = nodearraylist6
-                                       assert tkwvarnode12 isa TKwvar
+                                       assert tkwvarnode12 isa nullable TKwvar
                                        var tattridnode13 = nodearraylist7
                                        var tattridnode13 = nodearraylist7
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var ptypenode14 = nodearraylist8
                                        var ptypenode14 = nodearraylist8
-                                       assert ptypenode14 isa PType
+                                       assert ptypenode14 isa nullable PType
                                        var pexprnode15 = nodearraylist11
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -12152,7 +12151,7 @@ private class ReduceAction238
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
                                        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
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist4
                                        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
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
                                        var tkwredefnode9 = nodearraylist5
-                                       assert tkwredefnode9 isa TKwredef
+                                       assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist6
                                        var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwvarnode12 = nodearraylist7
                                        var tkwvarnode12 = nodearraylist7
-                                       assert tkwvarnode12 isa TKwvar
+                                       assert tkwvarnode12 isa nullable TKwvar
                                        var tattridnode13 = nodearraylist8
                                        var tattridnode13 = nodearraylist8
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var ptypenode14 = nodearraylist9
                                        var ptypenode14 = nodearraylist9
-                                       assert ptypenode14 isa PType
+                                       assert ptypenode14 isa nullable PType
                                        var pexprnode15 = nodearraylist12
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -12214,7 +12213,7 @@ private class ReduceAction239
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwreadablenode5 = nodearraylist2
                                        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
                                                null,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist4
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwvarnode10 = nodearraylist5
                                        var tkwvarnode10 = nodearraylist5
-                                       assert tkwvarnode10 isa TKwvar
+                                       assert tkwvarnode10 isa nullable TKwvar
                                        var tattridnode11 = nodearraylist6
                                        var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var ptypenode12 = nodearraylist7
                                        var ptypenode12 = nodearraylist7
-                                       assert ptypenode12 isa PType
+                                       assert ptypenode12 isa nullable PType
                                        var pexprnode13 = nodearraylist10
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                null,
@@ -12266,7 +12265,7 @@ private class ReduceAction240
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
                                        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
                                                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
                                                null,
                                                tkwwritablenode8
                                        )
                                        var tkwredefnode9 = nodearraylist5
-                                       assert tkwredefnode9 isa TKwredef
+                                       assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist6
                                        var pvisibilitynode10 = nodearraylist6
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwvarnode12 = nodearraylist7
                                        var tkwvarnode12 = nodearraylist7
-                                       assert tkwvarnode12 isa TKwvar
+                                       assert tkwvarnode12 isa nullable TKwvar
                                        var tattridnode13 = nodearraylist8
                                        var tattridnode13 = nodearraylist8
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var ptypenode14 = nodearraylist9
                                        var ptypenode14 = nodearraylist9
-                                       assert ptypenode14 isa PType
+                                       assert ptypenode14 isa nullable PType
                                        var pexprnode15 = nodearraylist12
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -12328,7 +12327,7 @@ private class ReduceAction241
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
                                        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
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var tkwwritablenode8 = nodearraylist5
                                        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
                                                tkwredefnode7,
                                                tkwwritablenode8
                                        )
                                        var tkwredefnode9 = nodearraylist6
-                                       assert tkwredefnode9 isa TKwredef
+                                       assert tkwredefnode9 isa nullable TKwredef
                                        var pvisibilitynode10 = nodearraylist7
                                        var pvisibilitynode10 = nodearraylist7
-                                       assert pvisibilitynode10 isa PVisibility
+                                       assert pvisibilitynode10 isa nullable PVisibility
                                        var tkwvarnode12 = nodearraylist8
                                        var tkwvarnode12 = nodearraylist8
-                                       assert tkwvarnode12 isa TKwvar
+                                       assert tkwvarnode12 isa nullable TKwvar
                                        var tattridnode13 = nodearraylist9
                                        var tattridnode13 = nodearraylist9
-                                       assert tattridnode13 isa TAttrid
+                                       assert tattridnode13 isa nullable TAttrid
                                        var ptypenode14 = nodearraylist10
                                        var ptypenode14 = nodearraylist10
-                                       assert ptypenode14 isa PType
+                                       assert ptypenode14 isa nullable PType
                                        var pexprnode15 = nodearraylist13
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                pablenode6,
@@ -12393,7 +12392,7 @@ private class ReduceAction242
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode4 = nodearraylist2
                                        var tkwredefnode4 = nodearraylist2
-                                       assert tkwredefnode4 isa TKwredef
+                                       assert tkwredefnode4 isa nullable TKwredef
                                        var tkwreadablenode5 = nodearraylist3
                                        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
                                                tkwredefnode4,
                                                tkwreadablenode5
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist5
                                        var pvisibilitynode8 = nodearraylist5
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwvarnode10 = nodearraylist6
                                        var tkwvarnode10 = nodearraylist6
-                                       assert tkwvarnode10 isa TKwvar
+                                       assert tkwvarnode10 isa nullable TKwvar
                                        var tattridnode11 = nodearraylist7
                                        var tattridnode11 = nodearraylist7
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var ptypenode12 = nodearraylist8
                                        var ptypenode12 = nodearraylist8
-                                       assert ptypenode12 isa PType
+                                       assert ptypenode12 isa nullable PType
                                        var pexprnode13 = nodearraylist11
                                        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,
                                                pdocnode2,
                                                pablenode3,
                                                null,
@@ -12448,7 +12447,7 @@ private class ReduceAction243
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwwritablenode6 = nodearraylist2
                                        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
                                                null,
                                                tkwwritablenode6
                                        )
                                        var tkwredefnode7 = nodearraylist3
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist4
                                        var pvisibilitynode8 = nodearraylist4
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwvarnode10 = nodearraylist5
                                        var tkwvarnode10 = nodearraylist5
-                                       assert tkwvarnode10 isa TKwvar
+                                       assert tkwvarnode10 isa nullable TKwvar
                                        var tattridnode11 = nodearraylist6
                                        var tattridnode11 = nodearraylist6
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var ptypenode12 = nodearraylist7
                                        var ptypenode12 = nodearraylist7
-                                       assert ptypenode12 isa PType
+                                       assert ptypenode12 isa nullable PType
                                        var pexprnode13 = nodearraylist10
                                        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,
                                                pdocnode2,
                                                null,
                                                pablenode4,
@@ -12500,7 +12499,7 @@ private class ReduceAction244
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode5 = nodearraylist2
                                        var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa TKwredef
+                                       assert tkwredefnode5 isa nullable TKwredef
                                        var tkwwritablenode6 = nodearraylist3
                                        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
                                                tkwredefnode5,
                                                tkwwritablenode6
                                        )
                                        var tkwredefnode7 = nodearraylist4
-                                       assert tkwredefnode7 isa TKwredef
+                                       assert tkwredefnode7 isa nullable TKwredef
                                        var pvisibilitynode8 = nodearraylist5
                                        var pvisibilitynode8 = nodearraylist5
-                                       assert pvisibilitynode8 isa PVisibility
+                                       assert pvisibilitynode8 isa nullable PVisibility
                                        var tkwvarnode10 = nodearraylist6
                                        var tkwvarnode10 = nodearraylist6
-                                       assert tkwvarnode10 isa TKwvar
+                                       assert tkwvarnode10 isa nullable TKwvar
                                        var tattridnode11 = nodearraylist7
                                        var tattridnode11 = nodearraylist7
-                                       assert tattridnode11 isa TAttrid
+                                       assert tattridnode11 isa nullable TAttrid
                                        var ptypenode12 = nodearraylist8
                                        var ptypenode12 = nodearraylist8
-                                       assert ptypenode12 isa PType
+                                       assert ptypenode12 isa nullable PType
                                        var pexprnode13 = nodearraylist11
                                        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,
                                                pdocnode2,
                                                null,
                                                pablenode4,
@@ -12555,7 +12554,7 @@ private class ReduceAction245
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode5 = nodearraylist2
                                        var tkwredefnode5 = nodearraylist2
-                                       assert tkwredefnode5 isa TKwredef
+                                       assert tkwredefnode5 isa nullable TKwredef
                                        var pvisibilitynode6 = nodearraylist3
                                        var pvisibilitynode6 = nodearraylist3
-                                       assert pvisibilitynode6 isa PVisibility
+                                       assert pvisibilitynode6 isa nullable PVisibility
                                        var tkwvarnode8 = nodearraylist4
                                        var tkwvarnode8 = nodearraylist4
-                                       assert tkwvarnode8 isa TKwvar
+                                       assert tkwvarnode8 isa nullable TKwvar
                                        var tattridnode9 = nodearraylist5
                                        var tattridnode9 = nodearraylist5
-                                       assert tattridnode9 isa TAttrid
+                                       assert tattridnode9 isa nullable TAttrid
                                        var ptypenode10 = nodearraylist6
                                        var ptypenode10 = nodearraylist6
-                                       assert ptypenode10 isa PType
+                                       assert ptypenode10 isa nullable PType
                                        var pexprnode11 = nodearraylist9
                                        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,
                                                pdocnode2,
                                                null,
                                                null,
@@ -12600,7 +12599,7 @@ private class ReduceAction246
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var pvisibilitynode4 = nodearraylist2
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var tkwinitnode5 = nodearraylist3
                                        var tkwinitnode5 = nodearraylist3
-                                       assert tkwinitnode5 isa TKwinit
+                                       assert tkwinitnode5 isa nullable TKwinit
                                        var psignaturenode7 = nodearraylist4
                                        var psignaturenode7 = nodearraylist4
-                                       assert psignaturenode7 isa PSignature
+                                       assert psignaturenode7 isa nullable PSignature
                                        var pexprnode8 = nodearraylist6
                                        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,
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -12635,7 +12634,7 @@ private class ReduceAction247
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode3 = nodearraylist2
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var tkwinitnode5 = nodearraylist4
                                        var tkwinitnode5 = nodearraylist4
-                                       assert tkwinitnode5 isa TKwinit
+                                       assert tkwinitnode5 isa nullable TKwinit
                                        var psignaturenode7 = nodearraylist5
                                        var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa PSignature
+                                       assert psignaturenode7 isa nullable PSignature
                                        var pexprnode8 = nodearraylist7
                                        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,
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -12673,7 +12672,7 @@ private class ReduceAction248
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var pvisibilitynode4 = nodearraylist2
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var tkwinitnode5 = nodearraylist3
                                        var tkwinitnode5 = nodearraylist3
-                                       assert tkwinitnode5 isa TKwinit
+                                       assert tkwinitnode5 isa nullable TKwinit
                                        var pmethidnode6 = nodearraylist4
                                        var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
+                                       assert pmethidnode6 isa nullable PMethid
                                        var psignaturenode7 = nodearraylist5
                                        var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa PSignature
+                                       assert psignaturenode7 isa nullable PSignature
                                        var pexprnode8 = nodearraylist7
                                        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,
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -12711,7 +12710,7 @@ private class ReduceAction249
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode3 = nodearraylist2
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var tkwinitnode5 = nodearraylist4
                                        var tkwinitnode5 = nodearraylist4
-                                       assert tkwinitnode5 isa TKwinit
+                                       assert tkwinitnode5 isa nullable TKwinit
                                        var pmethidnode6 = nodearraylist5
                                        var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
+                                       assert pmethidnode6 isa nullable PMethid
                                        var psignaturenode7 = nodearraylist6
                                        var psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa PSignature
+                                       assert psignaturenode7 isa nullable PSignature
                                        var pexprnode8 = nodearraylist8
                                        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,
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -12752,7 +12751,7 @@ private class ReduceAction250
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var pvisibilitynode4 = nodearraylist2
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var tkwinitnode5 = nodearraylist3
                                        var tkwinitnode5 = nodearraylist3
-                                       assert tkwinitnode5 isa TKwinit
+                                       assert tkwinitnode5 isa nullable TKwinit
                                        var psignaturenode7 = nodearraylist4
                                        var psignaturenode7 = nodearraylist4
-                                       assert psignaturenode7 isa PSignature
+                                       assert psignaturenode7 isa nullable PSignature
                                        var pexprnode8 = nodearraylist6
                                        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,
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -12788,7 +12787,7 @@ private class ReduceAction251
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode3 = nodearraylist2
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var tkwinitnode5 = nodearraylist4
                                        var tkwinitnode5 = nodearraylist4
-                                       assert tkwinitnode5 isa TKwinit
+                                       assert tkwinitnode5 isa nullable TKwinit
                                        var psignaturenode7 = nodearraylist5
                                        var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa PSignature
+                                       assert psignaturenode7 isa nullable PSignature
                                        var pexprnode8 = nodearraylist7
                                        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,
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -12827,7 +12826,7 @@ private class ReduceAction252
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var pvisibilitynode4 = nodearraylist2
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var tkwinitnode5 = nodearraylist3
                                        var tkwinitnode5 = nodearraylist3
-                                       assert tkwinitnode5 isa TKwinit
+                                       assert tkwinitnode5 isa nullable TKwinit
                                        var pmethidnode6 = nodearraylist4
                                        var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
+                                       assert pmethidnode6 isa nullable PMethid
                                        var psignaturenode7 = nodearraylist5
                                        var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa PSignature
+                                       assert psignaturenode7 isa nullable PSignature
                                        var pexprnode8 = nodearraylist7
                                        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,
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -12866,7 +12865,7 @@ private class ReduceAction253
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode3 = nodearraylist2
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var tkwinitnode5 = nodearraylist4
                                        var tkwinitnode5 = nodearraylist4
-                                       assert tkwinitnode5 isa TKwinit
+                                       assert tkwinitnode5 isa nullable TKwinit
                                        var pmethidnode6 = nodearraylist5
                                        var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
+                                       assert pmethidnode6 isa nullable PMethid
                                        var psignaturenode7 = nodearraylist6
                                        var psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa PSignature
+                                       assert psignaturenode7 isa nullable PSignature
                                        var pexprnode8 = nodearraylist8
                                        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,
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -12908,23 +12907,23 @@ private class ReduceAction254
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var tkwtypenode5 = nodearraylist3
                                        var tkwtypenode5 = nodearraylist3
-                                       assert tkwtypenode5 isa TKwtype
+                                       assert tkwtypenode5 isa nullable TKwtype
                                        var tclassidnode6 = nodearraylist4
                                        var tclassidnode6 = nodearraylist4
-                                       assert tclassidnode6 isa TClassid
+                                       assert tclassidnode6 isa nullable TClassid
                                        var ptypenode7 = nodearraylist5
                                        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,
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -12941,7 +12940,7 @@ private class ReduceAction255
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode3 = nodearraylist2
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var tkwtypenode5 = nodearraylist4
                                        var tkwtypenode5 = nodearraylist4
-                                       assert tkwtypenode5 isa TKwtype
+                                       assert tkwtypenode5 isa nullable TKwtype
                                        var tclassidnode6 = nodearraylist5
                                        var tclassidnode6 = nodearraylist5
-                                       assert tclassidnode6 isa TClassid
+                                       assert tclassidnode6 isa nullable TClassid
                                        var ptypenode7 = nodearraylist6
                                        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,
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -12977,8 +12976,8 @@ private class ReduceAction256
 special ReduceAction
        redef meth action(p: Parser)
        do
 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)
                                        )
                                        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
 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
                                        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
                                                tkwprivatenode2
                                        )
                                        node_list = pvisibilitynode1
@@ -13006,12 +13005,12 @@ private class ReduceAction258
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                                tkwprotectednode2
                                        )
                                        node_list = pvisibilitynode1
@@ -13023,12 +13022,12 @@ private class ReduceAction259
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                                tkwintrudenode2
                                        )
                                        node_list = pvisibilitynode1
@@ -13040,11 +13039,11 @@ private class ReduceAction260
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                                tidnode2
                                        )
                                        node_list = pmethidnode1
@@ -13056,11 +13055,11 @@ private class ReduceAction261
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                                tplusnode2
                                        )
                                        node_list = pmethidnode1
@@ -13072,11 +13071,11 @@ private class ReduceAction262
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                                tminusnode2
                                        )
                                        node_list = pmethidnode1
@@ -13088,11 +13087,11 @@ private class ReduceAction263
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                                tstarnode2
                                        )
                                        node_list = pmethidnode1
@@ -13104,11 +13103,11 @@ private class ReduceAction264
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                                tslashnode2
                                        )
                                        node_list = pmethidnode1
@@ -13120,11 +13119,11 @@ private class ReduceAction265
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                                tpercentnode2
                                        )
                                        node_list = pmethidnode1
@@ -13136,11 +13135,11 @@ private class ReduceAction266
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                                teqnode2
                                        )
                                        node_list = pmethidnode1
@@ -13152,11 +13151,11 @@ private class ReduceAction267
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                                tnenode2
                                        )
                                        node_list = pmethidnode1
@@ -13168,11 +13167,11 @@ private class ReduceAction268
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                                tlenode2
                                        )
                                        node_list = pmethidnode1
@@ -13184,11 +13183,11 @@ private class ReduceAction269
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                                tgenode2
                                        )
                                        node_list = pmethidnode1
@@ -13200,11 +13199,11 @@ private class ReduceAction270
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                                tltnode2
                                        )
                                        node_list = pmethidnode1
@@ -13216,11 +13215,11 @@ private class ReduceAction271
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                                tgtnode2
                                        )
                                        node_list = pmethidnode1
@@ -13232,14 +13231,14 @@ private class ReduceAction272
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tobranode2 = nodearraylist1
-                                       assert tobranode2 isa TObra
+                                       assert tobranode2 isa nullable TObra
                                        var tcbranode3 = nodearraylist2
                                        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
                                        )
                                                tobranode2,
                                                tcbranode3
                                        )
@@ -13252,11 +13251,11 @@ private class ReduceAction273
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                                tstarshipnode2
                                        )
                                        node_list = pmethidnode1
@@ -13268,14 +13267,14 @@ private class ReduceAction274
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tidnode2 = nodearraylist1
-                                       assert tidnode2 isa TId
+                                       assert tidnode2 isa nullable TId
                                        var tassignnode3 = nodearraylist2
                                        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
                                        )
                                                tidnode2,
                                                tassignnode3
                                        )
@@ -13288,17 +13287,17 @@ private class ReduceAction275
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var tcbranode3 = nodearraylist2
-                                       assert tcbranode3 isa TCbra
+                                       assert tcbranode3 isa nullable TCbra
                                        var tassignnode4 = nodearraylist3
                                        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
                                                tobranode2,
                                                tcbranode3,
                                                tassignnode4
@@ -13312,20 +13311,20 @@ private class ReduceAction276
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
                                        var listnode5 = new Array[Object]
-                                       var listnode4 = nodearraylist1 
+                                       var listnode4 = nodearraylist1
                                        assert listnode4 isa Array[Object]
                                        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
                                                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
                                                listnode2,
                                                null,
                                                listnode5
@@ -13339,30 +13338,30 @@ private class ReduceAction277
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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]
                                        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
                                                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]
                                        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
                                                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
                                                listnode3,
                                                null,
                                                listnode6
@@ -13376,23 +13375,23 @@ private class ReduceAction278
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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]
                                        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
                                                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
                                                listnode2,
                                                ptypenode3,
                                                listnode5
@@ -13406,33 +13405,33 @@ private class ReduceAction279
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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]
                                        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
                                                if listnode3.is_empty then
                                                        listnode3 = listnode2
                                                else
                                                        listnode3.append(listnode2)
                                                end
-                                       end
+#                                      end
                                        var ptypenode4 = nodearraylist2
                                        var ptypenode4 = nodearraylist2
-                                       assert ptypenode4 isa PType
-                                       var listnode5 = nodearraylist3 
+                                       assert ptypenode4 isa nullable PType
+                                       var listnode5 = nodearraylist3
                                        assert listnode5 isa Array[Object]
                                        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
                                                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
                                                listnode3,
                                                ptypenode4,
                                                listnode6
@@ -13446,11 +13445,11 @@ private class ReduceAction280
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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
                                                listnode2,
                                                null,
                                                listnode4
@@ -13464,21 +13463,21 @@ private class ReduceAction281
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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]
                                        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
                                                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
                                                listnode3,
                                                null,
                                                listnode5
@@ -13492,14 +13491,14 @@ private class ReduceAction282
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                                listnode2,
                                                ptypenode3,
                                                listnode4
@@ -13513,24 +13512,24 @@ private class ReduceAction283
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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]
                                        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
                                                if listnode3.is_empty then
                                                        listnode3 = listnode2
                                                else
                                                        listnode3.append(listnode2)
                                                end
-                                       end
+#                                      end
                                        var ptypenode4 = nodearraylist2
                                        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
                                                listnode3,
                                                ptypenode4,
                                                listnode5
@@ -13544,10 +13543,10 @@ private class ReduceAction284
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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
                                                listnode2,
                                                null,
                                                listnode4
@@ -13561,20 +13560,20 @@ private class ReduceAction285
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
                                        var listnode5 = new Array[Object]
-                                       var listnode2 = nodearraylist1 
+                                       var listnode2 = nodearraylist1
                                        assert listnode2 isa Array[Object]
                                        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
                                                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
                                                listnode3,
                                                null,
                                                listnode5
@@ -13588,13 +13587,13 @@ private class ReduceAction286
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                                listnode2,
                                                ptypenode3,
                                                listnode4
@@ -13608,23 +13607,23 @@ private class ReduceAction287
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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]
                                        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
                                                if listnode3.is_empty then
                                                        listnode3 = listnode2
                                                else
                                                        listnode3.append(listnode2)
                                                end
-                                       end
+#                                      end
                                        var ptypenode4 = nodearraylist2
                                        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
                                                listnode3,
                                                ptypenode4,
                                                listnode5
@@ -13638,7 +13637,7 @@ private class ReduceAction288
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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
                                        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
                                        if pparamnode1 != null then
                                                listnode2.add(pparamnode1)
                                        end
@@ -13659,7 +13658,7 @@ private class ReduceAction289
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        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
                                                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
                                        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
 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 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
 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
                                        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
                                        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
 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
                                        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
                                                tidnode2,
                                                null,
                                                null
@@ -13737,14 +13736,14 @@ private class ReduceAction293
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tidnode2 = nodearraylist1
-                                       assert tidnode2 isa TId
+                                       assert tidnode2 isa nullable TId
                                        var ptypenode3 = nodearraylist2
                                        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
                                                tidnode2,
                                                ptypenode3,
                                                null
@@ -13758,17 +13757,17 @@ private class ReduceAction294
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var ptypenode3 = nodearraylist2
-                                       assert ptypenode3 isa PType
+                                       assert ptypenode3 isa nullable PType
                                        var tdotdotdotnode4 = nodearraylist3
                                        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
                                                tidnode2,
                                                ptypenode3,
                                                tdotdotdotnode4
@@ -13782,19 +13781,19 @@ private class ReduceAction295
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
-                                       var listnode1 = nodearraylist2 
+                                       var listnode1 = nodearraylist2
                                        assert listnode1 isa Array[Object]
                                        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
                                                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
                                        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
 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
                                        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
                                        var tidnode4 = nodearraylist3
-                                       assert tidnode4 isa TId
+                                       assert tidnode4 isa nullable TId
                                        var psignaturenode5 = nodearraylist4
                                        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,
                                                tkwwithnode2,
                                                null,
                                                tidnode4,
@@ -13832,7 +13831,7 @@ private class ReduceAction297
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwwithnode2 = nodearraylist1
-                                       assert tkwwithnode2 isa TKwwith
+                                       assert tkwwithnode2 isa nullable TKwwith
                                        var tkwbreaknode3 = nodearraylist2
                                        var tkwbreaknode3 = nodearraylist2
-                                       assert tkwbreaknode3 isa TKwbreak
+                                       assert tkwbreaknode3 isa nullable TKwbreak
                                        var tidnode4 = nodearraylist4
                                        var tidnode4 = nodearraylist4
-                                       assert tidnode4 isa TId
+                                       assert tidnode4 isa nullable TId
                                        var psignaturenode5 = nodearraylist5
                                        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,
                                                tkwwithnode2,
                                                tkwbreaknode3,
                                                tidnode4,
@@ -13863,7 +13862,7 @@ private class ReduceAction298
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwwithnode2 = nodearraylist1
-                                       assert tkwwithnode2 isa TKwwith
+                                       assert tkwwithnode2 isa nullable TKwwith
                                        var tidnode4 = nodearraylist3
                                        var tidnode4 = nodearraylist3
-                                       assert tidnode4 isa TId
+                                       assert tidnode4 isa nullable TId
                                        var psignaturenode5 = nodearraylist4
                                        var psignaturenode5 = nodearraylist4
-                                       assert psignaturenode5 isa PSignature
+                                       assert psignaturenode5 isa nullable PSignature
                                        var pexprnode6 = nodearraylist6
                                        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,
                                                tkwwithnode2,
                                                null,
                                                tidnode4,
@@ -13895,7 +13894,7 @@ private class ReduceAction299
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwwithnode2 = nodearraylist1
-                                       assert tkwwithnode2 isa TKwwith
+                                       assert tkwwithnode2 isa nullable TKwwith
                                        var tkwbreaknode3 = nodearraylist2
                                        var tkwbreaknode3 = nodearraylist2
-                                       assert tkwbreaknode3 isa TKwbreak
+                                       assert tkwbreaknode3 isa nullable TKwbreak
                                        var tidnode4 = nodearraylist4
                                        var tidnode4 = nodearraylist4
-                                       assert tidnode4 isa TId
+                                       assert tidnode4 isa nullable TId
                                        var psignaturenode5 = nodearraylist5
                                        var psignaturenode5 = nodearraylist5
-                                       assert psignaturenode5 isa PSignature
+                                       assert psignaturenode5 isa nullable PSignature
                                        var pexprnode6 = nodearraylist7
                                        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,
                                                tkwwithnode2,
                                                tkwbreaknode3,
                                                tidnode4,
@@ -13930,12 +13929,12 @@ private class ReduceAction300
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                                null,
                                                tclassidnode3,
                                                listnode4
@@ -13949,15 +13948,15 @@ private class ReduceAction301
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                                tkwnullablenode2,
                                                tclassidnode3,
                                                listnode4
@@ -13971,7 +13970,7 @@ private class ReduceAction302
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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]
                                        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
                                                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
                                                null,
                                                tclassidnode3,
                                                listnode5
@@ -14004,7 +14003,7 @@ private class ReduceAction303
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var tkwnullablenode2 = nodearraylist1
-                                       assert tkwnullablenode2 isa TKwnullable
+                                       assert tkwnullablenode2 isa nullable TKwnullable
                                        var tclassidnode3 = nodearraylist2
                                        var tclassidnode3 = nodearraylist2
-                                       assert tclassidnode3 isa TClassid
-                                       var listnode4 = nodearraylist5 
+                                       assert tclassidnode3 isa nullable TClassid
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
                                        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
                                                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
                                                tkwnullablenode2,
                                                tclassidnode3,
                                                listnode5
@@ -14040,11 +14039,11 @@ private class ReduceAction304
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        if ptypenode1 != null then
                                                listnode2.add(ptypenode1)
                                        end
@@ -14057,24 +14056,24 @@ private class ReduceAction305
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                                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
                                        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
 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
                                        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
                                        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
 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
                                        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
                                        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
 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
                                        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
                                        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
 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
                                        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
                                        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
                                                listnode3
                                        )
                                        node_list = pexprnode1
@@ -14150,7 +14149,7 @@ private class ReduceAction310
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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
                                        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
                                        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
                                                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
                                                listnode4
                                        )
                                        node_list = pexprnode1
@@ -14183,11 +14182,11 @@ private class ReduceAction311
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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
                                                listnode2
                                        )
                                        node_list = pexprnode1
@@ -14199,10 +14198,10 @@ private class ReduceAction312
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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
                                                listnode2
                                        )
                                        node_list = pexprnode1
@@ -14214,11 +14213,11 @@ private class ReduceAction313
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
 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
                                        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
                                        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
 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
                                        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
                                        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
 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
                                        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
                                        )
                                                tkwreturnnode2,
                                                null
                                        )
@@ -14271,14 +14270,14 @@ private class ReduceAction317
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwreturnnode2 = nodearraylist1
-                                       assert tkwreturnnode2 isa TKwreturn
+                                       assert tkwreturnnode2 isa nullable TKwreturn
                                        var pexprnode3 = nodearraylist2
                                        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
                                        )
                                                tkwreturnnode2,
                                                pexprnode3
                                        )
@@ -14291,11 +14290,11 @@ private class ReduceAction318
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        )
                                                tkwbreaknode2,
                                                null
                                        )
@@ -14308,14 +14307,14 @@ private class ReduceAction319
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwbreaknode2 = nodearraylist1
-                                       assert tkwbreaknode2 isa TKwbreak
+                                       assert tkwbreaknode2 isa nullable TKwbreak
                                        var pexprnode3 = nodearraylist2
                                        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
                                        )
                                                tkwbreaknode2,
                                                pexprnode3
                                        )
@@ -14328,11 +14327,11 @@ private class ReduceAction320
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                                tkwabortnode2
                                        )
                                        node_list = pexprnode1
@@ -14344,11 +14343,11 @@ private class ReduceAction321
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        )
                                                tkwcontinuenode2,
                                                null
                                        )
@@ -14361,14 +14360,14 @@ private class ReduceAction322
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwcontinuenode2 = nodearraylist1
-                                       assert tkwcontinuenode2 isa TKwcontinue
+                                       assert tkwcontinuenode2 isa nullable TKwcontinue
                                        var pexprnode3 = nodearraylist2
                                        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
                                        )
                                                tkwcontinuenode2,
                                                pexprnode3
                                        )
@@ -14381,10 +14380,10 @@ private class ReduceAction323
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
 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
                                        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
                                        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
 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
                                        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
                                        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
 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
                                        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
                                        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
 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
                                        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
                                        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
 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 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
                                        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
                                        var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist5 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
                                        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
                                                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,
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -14482,25 +14481,25 @@ private class ReduceAction329
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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
                                        )
                                        var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist2 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
                                        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
                                                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,
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -14515,7 +14514,7 @@ private class ReduceAction330
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist5 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
                                        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
                                                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]
                                        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
                                                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,
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -14561,35 +14560,35 @@ private class ReduceAction331
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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
                                        )
                                        var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist2 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
                                        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
                                                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]
                                        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
                                                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,
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -14604,22 +14603,22 @@ private class ReduceAction332
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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]
                                        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
                                                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
                                                null,
                                                tkwsupernode3,
                                                listnode5
@@ -14633,25 +14632,25 @@ private class ReduceAction333
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var tkwsupernode3 = nodearraylist2
-                                       assert tkwsupernode3 isa TKwsuper
-                                       var listnode4 = nodearraylist3 
+                                       assert tkwsupernode3 isa nullable TKwsuper
+                                       var listnode4 = nodearraylist3
                                        assert listnode4 isa Array[Object]
                                        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
                                                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
                                                pqualifiednode2,
                                                tkwsupernode3,
                                                listnode5
@@ -14665,7 +14664,7 @@ private class ReduceAction334
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tkwinitnode3 = nodearraylist4
                                        var tkwinitnode3 = nodearraylist4
-                                       assert tkwinitnode3 isa TKwinit
-                                       var listnode4 = nodearraylist5 
+                                       assert tkwinitnode3 isa nullable TKwinit
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
                                        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
                                                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
                                                pexprnode2,
                                                tkwinitnode3,
                                                listnode5
@@ -14699,24 +14698,24 @@ private class ReduceAction335
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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
                                        )
                                        var tkwinitnode3 = nodearraylist1
-                                       assert tkwinitnode3 isa TKwinit
-                                       var listnode4 = nodearraylist2 
+                                       assert tkwinitnode3 isa nullable TKwinit
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
                                        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
                                                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
                                                pexprnode2,
                                                tkwinitnode3,
                                                listnode5
@@ -14730,11 +14729,11 @@ private class ReduceAction336
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        if pclosuredefnode1 != null then
                                                listnode2.add(pclosuredefnode1)
                                        end
@@ -14747,24 +14746,24 @@ private class ReduceAction337
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                                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
                                        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
 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
                                        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
                                        var tkwdonode4 = nodearraylist2
-                                       assert tkwdonode4 isa TKwdo
+                                       assert tkwdonode4 isa nullable TKwdo
                                        var pexprnode5 = nodearraylist3
                                        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,
                                                tkwwithnode2,
                                                listnode3,
                                                tkwdonode4,
@@ -14800,28 +14799,28 @@ private class ReduceAction339
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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]
                                        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
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
+#                                      end
                                        var tkwdonode5 = nodearraylist3
                                        var tkwdonode5 = nodearraylist3
-                                       assert tkwdonode5 isa TKwdo
+                                       assert tkwdonode5 isa nullable TKwdo
                                        var pexprnode6 = nodearraylist4
                                        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,
                                                tkwwithnode2,
                                                listnode4,
                                                tkwdonode5,
@@ -14836,7 +14835,7 @@ private class ReduceAction340
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
                                        var tkwwithnode2 = nodearraylist1
-                                       assert tkwwithnode2 isa TKwwith
+                                       assert tkwwithnode2 isa nullable TKwwith
                                        var tkwdonode4 = nodearraylist2
                                        var tkwdonode4 = nodearraylist2
-                                       assert tkwdonode4 isa TKwdo
+                                       assert tkwdonode4 isa nullable TKwdo
                                        var listnode7 = new Array[Object]
                                        var pexprnode6 = nodearraylist4
                                        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
                                        if pexprnode6 != null then
                                                listnode7.add(pexprnode6)
                                        end
-                                       var pexprnode5 = new ABlockExpr.init_ablockexpr(
+                                       var pexprnode5: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
                                                listnode7
                                        )
                                                listnode7
                                        )
-                                       var pclosuredefnode1 = new AClosureDef.init_aclosuredef(
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
                                                tkwwithnode2,
                                                listnode3,
                                                tkwdonode4,
                                                tkwwithnode2,
                                                listnode3,
                                                tkwdonode4,
@@ -14871,7 +14870,7 @@ private class ReduceAction341
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
                                        var tkwwithnode2 = nodearraylist1
-                                       assert tkwwithnode2 isa TKwwith
+                                       assert tkwwithnode2 isa nullable TKwwith
                                        var tkwdonode4 = nodearraylist2
                                        var tkwdonode4 = nodearraylist2
-                                       assert tkwdonode4 isa TKwdo
+                                       assert tkwdonode4 isa nullable TKwdo
                                        var listnode8 = new Array[Object]
                                        var pexprnode6 = nodearraylist4
                                        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
                                        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
                                                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
                                        )
                                                listnode8
                                        )
-                                       var pclosuredefnode1 = new AClosureDef.init_aclosuredef(
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
                                                tkwwithnode2,
                                                listnode3,
                                                tkwdonode4,
                                                tkwwithnode2,
                                                listnode3,
                                                tkwdonode4,
@@ -14916,7 +14915,7 @@ private class ReduceAction342
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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]
                                        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
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
+#                                      end
                                        var tkwdonode5 = nodearraylist3
                                        var tkwdonode5 = nodearraylist3
-                                       assert tkwdonode5 isa TKwdo
+                                       assert tkwdonode5 isa nullable TKwdo
                                        var listnode8 = new Array[Object]
                                        var pexprnode7 = nodearraylist5
                                        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
                                        if pexprnode7 != null then
                                                listnode8.add(pexprnode7)
                                        end
-                                       var pexprnode6 = new ABlockExpr.init_ablockexpr(
+                                       var pexprnode6: nullable ABlockExpr = new ABlockExpr.init_ablockexpr(
                                                listnode8
                                        )
                                                listnode8
                                        )
-                                       var pclosuredefnode1 = new AClosureDef.init_aclosuredef(
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
                                                tkwwithnode2,
                                                listnode4,
                                                tkwdonode5,
                                                tkwwithnode2,
                                                listnode4,
                                                tkwdonode5,
@@ -14961,7 +14960,7 @@ private class ReduceAction343
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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]
                                        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
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
+#                                      end
                                        var tkwdonode5 = nodearraylist3
                                        var tkwdonode5 = nodearraylist3
-                                       assert tkwdonode5 isa TKwdo
+                                       assert tkwdonode5 isa nullable TKwdo
                                        var listnode9 = new Array[Object]
                                        var pexprnode7 = nodearraylist5
                                        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
                                        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
                                                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
                                        )
                                                listnode9
                                        )
-                                       var pclosuredefnode1 = new AClosureDef.init_aclosuredef(
+                                       var pclosuredefnode1: nullable AClosureDef = new AClosureDef.init_aclosuredef(
                                                tkwwithnode2,
                                                listnode4,
                                                tkwdonode5,
                                                tkwwithnode2,
                                                listnode4,
                                                tkwdonode5,
@@ -15016,16 +15015,16 @@ private class ReduceAction344
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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,
                                                tkwwithnode2,
                                                listnode3,
                                                tkwdonode4,
@@ -15040,26 +15039,26 @@ private class ReduceAction345
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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]
                                        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
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
+#                                      end
                                        var tkwdonode5 = nodearraylist3
                                        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,
                                                tkwwithnode2,
                                                listnode4,
                                                tkwdonode5,
@@ -15074,14 +15073,14 @@ private class ReduceAction346
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwvarnode2 = nodearraylist1
-                                       assert tkwvarnode2 isa TKwvar
+                                       assert tkwvarnode2 isa nullable TKwvar
                                        var tidnode3 = nodearraylist2
                                        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,
                                                tkwvarnode2,
                                                tidnode3,
                                                null,
@@ -15097,17 +15096,17 @@ private class ReduceAction347
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var tidnode3 = nodearraylist2
-                                       assert tidnode3 isa TId
+                                       assert tidnode3 isa nullable TId
                                        var ptypenode4 = nodearraylist3
                                        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,
                                                tkwvarnode2,
                                                tidnode3,
                                                ptypenode4,
@@ -15123,21 +15122,21 @@ private class ReduceAction348
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var tidnode3 = nodearraylist2
-                                       assert tidnode3 isa TId
+                                       assert tidnode3 isa nullable TId
                                        var tassignnode5 = nodearraylist3
                                        var tassignnode5 = nodearraylist3
-                                       assert tassignnode5 isa TAssign
+                                       assert tassignnode5 isa nullable TAssign
                                        var pexprnode6 = nodearraylist5
                                        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,
                                                tkwvarnode2,
                                                tidnode3,
                                                null,
@@ -15153,7 +15152,7 @@ private class ReduceAction349
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwvarnode2 = nodearraylist1
-                                       assert tkwvarnode2 isa TKwvar
+                                       assert tkwvarnode2 isa nullable TKwvar
                                        var tidnode3 = nodearraylist2
                                        var tidnode3 = nodearraylist2
-                                       assert tidnode3 isa TId
+                                       assert tidnode3 isa nullable TId
                                        var ptypenode4 = nodearraylist3
                                        var ptypenode4 = nodearraylist3
-                                       assert ptypenode4 isa PType
+                                       assert ptypenode4 isa nullable PType
                                        var tassignnode5 = nodearraylist4
                                        var tassignnode5 = nodearraylist4
-                                       assert tassignnode5 isa TAssign
+                                       assert tassignnode5 isa nullable TAssign
                                        var pexprnode6 = nodearraylist6
                                        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,
                                                tkwvarnode2,
                                                tidnode3,
                                                ptypenode4,
@@ -15186,7 +15185,7 @@ private class ReduceAction350
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tattridnode3 = nodearraylist4
                                        var tattridnode3 = nodearraylist4
-                                       assert tattridnode3 isa TAttrid
+                                       assert tattridnode3 isa nullable TAttrid
                                        var tassignnode4 = nodearraylist5
                                        var tassignnode4 = nodearraylist5
-                                       assert tassignnode4 isa TAssign
+                                       assert tassignnode4 isa nullable TAssign
                                        var pexprnode5 = nodearraylist6
                                        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,
                                                pexprnode2,
                                                tattridnode3,
                                                tassignnode4,
@@ -15216,19 +15215,19 @@ private class ReduceAction351
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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
                                        )
                                        var tattridnode3 = nodearraylist1
-                                       assert tattridnode3 isa TAttrid
+                                       assert tattridnode3 isa nullable TAttrid
                                        var tassignnode4 = nodearraylist2
                                        var tassignnode4 = nodearraylist2
-                                       assert tassignnode4 isa TAssign
+                                       assert tassignnode4 isa nullable TAssign
                                        var pexprnode5 = nodearraylist3
                                        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,
                                                pexprnode2,
                                                tattridnode3,
                                                tassignnode4,
@@ -15243,7 +15242,7 @@ private class ReduceAction352
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tidnode3 = nodearraylist4
                                        var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist5 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
                                        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
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
+#                                      end
                                        var tassignnode6 = nodearraylist6
                                        var tassignnode6 = nodearraylist6
-                                       assert tassignnode6 isa TAssign
+                                       assert tassignnode6 isa nullable TAssign
                                        var pexprnode7 = nodearraylist7
                                        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,
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -15285,30 +15284,30 @@ private class ReduceAction353
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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
                                        )
                                        var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist2 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
                                        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
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
+#                                      end
                                        var tassignnode6 = nodearraylist3
                                        var tassignnode6 = nodearraylist3
-                                       assert tassignnode6 isa TAssign
+                                       assert tassignnode6 isa nullable TAssign
                                        var pexprnode7 = nodearraylist4
                                        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,
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -15324,28 +15323,28 @@ private class ReduceAction354
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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]
                                        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
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
+#                                      end
                                        var tassignnode5 = nodearraylist3
                                        var tassignnode5 = nodearraylist3
-                                       assert tassignnode5 isa TAssign
+                                       assert tassignnode5 isa nullable TAssign
                                        var pexprnode6 = nodearraylist4
                                        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,
                                                pexprnode2,
                                                listnode4,
                                                tassignnode5,
@@ -15360,7 +15359,7 @@ private class ReduceAction355
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tattridnode3 = nodearraylist4
                                        var tattridnode3 = nodearraylist4
-                                       assert tattridnode3 isa TAttrid
+                                       assert tattridnode3 isa nullable TAttrid
                                        var passignopnode4 = nodearraylist5
                                        var passignopnode4 = nodearraylist5
-                                       assert passignopnode4 isa PAssignOp
+                                       assert passignopnode4 isa nullable PAssignOp
                                        var pexprnode5 = nodearraylist6
                                        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,
                                                pexprnode2,
                                                tattridnode3,
                                                passignopnode4,
@@ -15390,19 +15389,19 @@ private class ReduceAction356
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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
                                        )
                                        var tattridnode3 = nodearraylist1
-                                       assert tattridnode3 isa TAttrid
+                                       assert tattridnode3 isa nullable TAttrid
                                        var passignopnode4 = nodearraylist2
                                        var passignopnode4 = nodearraylist2
-                                       assert passignopnode4 isa PAssignOp
+                                       assert passignopnode4 isa nullable PAssignOp
                                        var pexprnode5 = nodearraylist3
                                        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,
                                                pexprnode2,
                                                tattridnode3,
                                                passignopnode4,
@@ -15417,7 +15416,7 @@ private class ReduceAction357
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tidnode3 = nodearraylist4
                                        var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist5 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
                                        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
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
+#                                      end
                                        var passignopnode6 = nodearraylist6
                                        var passignopnode6 = nodearraylist6
-                                       assert passignopnode6 isa PAssignOp
+                                       assert passignopnode6 isa nullable PAssignOp
                                        var pexprnode7 = nodearraylist7
                                        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,
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -15459,30 +15458,30 @@ private class ReduceAction358
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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
                                        )
                                        var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist2 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
                                        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
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
+#                                      end
                                        var passignopnode6 = nodearraylist3
                                        var passignopnode6 = nodearraylist3
-                                       assert passignopnode6 isa PAssignOp
+                                       assert passignopnode6 isa nullable PAssignOp
                                        var pexprnode7 = nodearraylist4
                                        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,
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -15498,28 +15497,28 @@ private class ReduceAction359
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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]
                                        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
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
+#                                      end
                                        var passignopnode5 = nodearraylist3
                                        var passignopnode5 = nodearraylist3
-                                       assert passignopnode5 isa PAssignOp
+                                       assert passignopnode5 isa nullable PAssignOp
                                        var pexprnode6 = nodearraylist4
                                        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,
                                                pexprnode2,
                                                listnode4,
                                                passignopnode5,
@@ -15534,11 +15533,11 @@ private class ReduceAction360
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                                tpluseqnode2
                                        )
                                        node_list = passignopnode1
@@ -15550,11 +15549,11 @@ private class ReduceAction361
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                                tminuseqnode2
                                        )
                                        node_list = passignopnode1
@@ -15566,14 +15565,14 @@ private class ReduceAction362
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwdonode2 = nodearraylist1
-                                       assert tkwdonode2 isa TKwdo
+                                       assert tkwdonode2 isa nullable TKwdo
                                        var pexprnode3 = nodearraylist2
                                        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
                                        )
                                                tkwdonode2,
                                                pexprnode3
                                        )
@@ -15586,7 +15585,7 @@ private class ReduceAction363
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwifnode2 = nodearraylist1
-                                       assert tkwifnode2 isa TKwif
+                                       assert tkwifnode2 isa nullable TKwif
                                        var pexprnode3 = nodearraylist3
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
+                                       assert pexprnode3 isa nullable PExpr
                                        var pexprnode4 = nodearraylist6
                                        var pexprnode4 = nodearraylist6
-                                       assert pexprnode4 isa PExpr
+                                       assert pexprnode4 isa nullable PExpr
                                        var pexprnode5 = nodearraylist8
                                        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,
                                                tkwifnode2,
                                                pexprnode3,
                                                pexprnode4,
@@ -15618,7 +15617,7 @@ private class ReduceAction364
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwifnode2 = nodearraylist1
-                                       assert tkwifnode2 isa TKwif
+                                       assert tkwifnode2 isa nullable TKwif
                                        var pexprnode3 = nodearraylist3
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
+                                       assert pexprnode3 isa nullable PExpr
                                        var pexprnode4 = nodearraylist6
                                        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,
                                                tkwifnode2,
                                                pexprnode3,
                                                pexprnode4,
@@ -15646,7 +15645,7 @@ private class ReduceAction365
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwifnode2 = nodearraylist1
-                                       assert tkwifnode2 isa TKwif
+                                       assert tkwifnode2 isa nullable TKwif
                                        var pexprnode3 = nodearraylist3
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
+                                       assert pexprnode3 isa nullable PExpr
                                        var listnode6 = new Array[Object]
                                        var pexprnode5 = nodearraylist7
                                        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
                                        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
                                                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,
                                                tkwifnode2,
                                                pexprnode3,
                                                pexprnode4,
@@ -15686,7 +15685,7 @@ private class ReduceAction366
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwifnode2 = nodearraylist1
-                                       assert tkwifnode2 isa TKwif
+                                       assert tkwifnode2 isa nullable TKwif
                                        var pexprnode3 = nodearraylist3
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
+                                       assert pexprnode3 isa nullable PExpr
                                        var listnode7 = new Array[Object]
                                        var pexprnode5 = nodearraylist7
                                        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
                                        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
                                                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
                                                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,
                                                tkwifnode2,
                                                pexprnode3,
                                                pexprnode4,
@@ -15736,7 +15735,7 @@ private class ReduceAction367
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwifnode2 = nodearraylist1
-                                       assert tkwifnode2 isa TKwif
+                                       assert tkwifnode2 isa nullable TKwif
                                        var pexprnode3 = nodearraylist3
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
+                                       assert pexprnode3 isa nullable PExpr
                                        var pexprnode5 = nodearraylist6
                                        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,
                                                tkwifnode2,
                                                pexprnode3,
                                                null,
@@ -15764,7 +15763,7 @@ private class ReduceAction368
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwifnode2 = nodearraylist1
-                                       assert tkwifnode2 isa TKwif
+                                       assert tkwifnode2 isa nullable TKwif
                                        var pexprnode3 = nodearraylist3
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
+                                       assert pexprnode3 isa nullable PExpr
                                        var pexprnode5 = nodearraylist7
                                        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,
                                                tkwifnode2,
                                                pexprnode3,
                                                null,
@@ -15793,11 +15792,11 @@ private class ReduceAction369
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
 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)
                                        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
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwwhilenode2 = nodearraylist1
-                                       assert tkwwhilenode2 isa TKwwhile
+                                       assert tkwwhilenode2 isa nullable TKwwhile
                                        var pexprnode3 = nodearraylist3
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
+                                       assert pexprnode3 isa nullable PExpr
                                        var tkwdonode4 = nodearraylist5
                                        var tkwdonode4 = nodearraylist5
-                                       assert tkwdonode4 isa TKwdo
+                                       assert tkwdonode4 isa nullable TKwdo
                                        var pexprnode5 = nodearraylist6
                                        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,
                                                tkwwhilenode2,
                                                pexprnode3,
                                                tkwdonode4,
@@ -15848,7 +15847,7 @@ private class ReduceAction372
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwfornode2 = nodearraylist1
-                                       assert tkwfornode2 isa TKwfor
+                                       assert tkwfornode2 isa nullable TKwfor
                                        var tidnode3 = nodearraylist3
                                        var tidnode3 = nodearraylist3
-                                       assert tidnode3 isa TId
+                                       assert tidnode3 isa nullable TId
                                        var pexprnode4 = nodearraylist7
                                        var pexprnode4 = nodearraylist7
-                                       assert pexprnode4 isa PExpr
+                                       assert pexprnode4 isa nullable PExpr
                                        var tkwdonode5 = nodearraylist9
                                        var tkwdonode5 = nodearraylist9
-                                       assert tkwdonode5 isa TKwdo
+                                       assert tkwdonode5 isa nullable TKwdo
                                        var pexprnode6 = nodearraylist10
                                        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,
                                                tkwfornode2,
                                                tidnode3,
                                                pexprnode4,
@@ -15885,14 +15884,14 @@ private class ReduceAction373
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwassertnode2 = nodearraylist1
-                                       assert tkwassertnode2 isa TKwassert
+                                       assert tkwassertnode2 isa nullable TKwassert
                                        var pexprnode4 = nodearraylist2
                                        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
                                                tkwassertnode2,
                                                null,
                                                pexprnode4
@@ -15906,17 +15905,17 @@ private class ReduceAction374
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var tidnode3 = nodearraylist2
-                                       assert tidnode3 isa TId
+                                       assert tidnode3 isa nullable TId
                                        var pexprnode4 = nodearraylist3
                                        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
                                                tkwassertnode2,
                                                tidnode3,
                                                pexprnode4
@@ -15930,11 +15929,11 @@ private class ReduceAction375
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
 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
                                        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
                                        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
 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
                                        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
                                        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
                                        var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist5 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
                                        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
                                                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]
                                        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
                                                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,
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -16003,35 +16002,35 @@ private class ReduceAction378
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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
                                        )
                                        var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist2 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
                                        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
                                                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]
                                        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
                                                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,
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -16046,33 +16045,33 @@ private class ReduceAction379
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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]
                                        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
                                                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]
                                        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
                                                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
                                                pexprnode2,
                                                listnode4,
                                                listnode6
@@ -16086,10 +16085,10 @@ private class ReduceAction380
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwifnode2 = nodearraylist1
-                                       assert tkwifnode2 isa TKwif
+                                       assert tkwifnode2 isa nullable TKwif
                                        var pexprnode3 = nodearraylist3
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
+                                       assert pexprnode3 isa nullable PExpr
                                        var tkwthennode4 = nodearraylist5
                                        var tkwthennode4 = nodearraylist5
-                                       assert tkwthennode4 isa TKwthen
+                                       assert tkwthennode4 isa nullable TKwthen
                                        var pexprnode5 = nodearraylist7
                                        var pexprnode5 = nodearraylist7
-                                       assert pexprnode5 isa PExpr
+                                       assert pexprnode5 isa nullable PExpr
                                        var tkwelsenode6 = nodearraylist9
                                        var tkwelsenode6 = nodearraylist9
-                                       assert tkwelsenode6 isa TKwelse
+                                       assert tkwelsenode6 isa nullable TKwelse
                                        var pexprnode7 = nodearraylist11
                                        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,
                                                tkwifnode2,
                                                pexprnode3,
                                                tkwthennode4,
@@ -16140,10 +16139,10 @@ private class ReduceAction382
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
 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
                                        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
                                        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
                                        )
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -16175,16 +16174,16 @@ private class ReduceAction384
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        )
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -16197,10 +16196,10 @@ private class ReduceAction385
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
 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
                                        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
                                        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
                                        )
                                                tkwnotnode2,
                                                pexprnode3
                                        )
@@ -16231,10 +16230,10 @@ private class ReduceAction387
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
 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
                                        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
                                        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
                                        )
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -16266,16 +16265,16 @@ private class ReduceAction389
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        )
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -16288,16 +16287,16 @@ private class ReduceAction390
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        )
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -16310,16 +16309,16 @@ private class ReduceAction391
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        )
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -16332,16 +16331,16 @@ private class ReduceAction392
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        )
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -16354,16 +16353,16 @@ private class ReduceAction393
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        )
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -16376,16 +16375,16 @@ private class ReduceAction394
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        )
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -16398,16 +16397,16 @@ private class ReduceAction395
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        )
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -16420,16 +16419,16 @@ private class ReduceAction396
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        )
                                                pexprnode2,
                                                ptypenode3
                                        )
@@ -16442,10 +16441,10 @@ private class ReduceAction397
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
 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
                                        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
                                        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
                                        )
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -16477,16 +16476,16 @@ private class ReduceAction399
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        )
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -16499,10 +16498,10 @@ private class ReduceAction400
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
 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
                                        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
                                        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
                                        )
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -16534,16 +16533,16 @@ private class ReduceAction402
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        )
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -16556,16 +16555,16 @@ private class ReduceAction403
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        )
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -16578,10 +16577,10 @@ private class ReduceAction404
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
 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
                                        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
                                        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
                                        )
                                                tminusnode2,
                                                pexprnode3
                                        )
@@ -16612,15 +16611,15 @@ private class ReduceAction406
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        )
                                                tkwoncenode2,
                                                pexprnode3
                                        )
@@ -16633,10 +16632,10 @@ private class ReduceAction407
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
 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
                                        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
                                        var ptypenode3 = nodearraylist3
-                                       assert ptypenode3 isa PType
-                                       var listnode5 = nodearraylist4 
+                                       assert ptypenode3 isa nullable PType
+                                       var listnode5 = nodearraylist4
                                        assert listnode5 isa Array[Object]
                                        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
                                                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,
                                                tkwnewnode2,
                                                ptypenode3,
                                                null,
@@ -16680,19 +16679,19 @@ private class ReduceAction409
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var pexprnode3 = nodearraylist2
-                                       assert pexprnode3 isa PExpr
+                                       assert pexprnode3 isa nullable PExpr
                                        var tattridnode4 = nodearraylist5
                                        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
                                                tkwissetnode2,
                                                pexprnode3,
                                                tattridnode4
@@ -16706,16 +16705,16 @@ private class ReduceAction410
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        )
                                        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
                                                tkwissetnode2,
                                                pexprnode3,
                                                tattridnode4
@@ -16729,16 +16728,16 @@ private class ReduceAction411
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        )
                                                pexprnode2,
                                                tattridnode3
                                        )
@@ -16751,13 +16750,13 @@ private class ReduceAction412
 special ReduceAction
        redef meth action(p: Parser)
        do
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tattridnode3 = nodearraylist1
                                        )
                                        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
                                        )
                                                pexprnode2,
                                                tattridnode3
                                        )
@@ -16770,7 +16769,7 @@ private class ReduceAction413
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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
                                        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
                                        var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist5 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
                                        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
                                                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,
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -16806,25 +16805,25 @@ private class ReduceAction414
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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
                                        )
                                        var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist2 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
                                        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
                                                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,
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -16839,22 +16838,22 @@ private class ReduceAction415
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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]
                                        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
                                                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
                                                null,
                                                tkwsupernode3,
                                                listnode5
@@ -16868,25 +16867,25 @@ private class ReduceAction416
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var tkwsupernode3 = nodearraylist2
-                                       assert tkwsupernode3 isa TKwsuper
-                                       var listnode4 = nodearraylist3 
+                                       assert tkwsupernode3 isa nullable TKwsuper
+                                       var listnode4 = nodearraylist3
                                        assert listnode4 isa Array[Object]
                                        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
                                                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
                                                pqualifiednode2,
                                                tkwsupernode3,
                                                listnode5
@@ -16900,7 +16899,7 @@ private class ReduceAction417
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tkwinitnode3 = nodearraylist4
                                        var tkwinitnode3 = nodearraylist4
-                                       assert tkwinitnode3 isa TKwinit
-                                       var listnode4 = nodearraylist5 
+                                       assert tkwinitnode3 isa nullable TKwinit
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
                                        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
                                                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
                                                pexprnode2,
                                                tkwinitnode3,
                                                listnode5
@@ -16934,24 +16933,24 @@ private class ReduceAction418
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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
                                        )
                                        var tkwinitnode3 = nodearraylist1
-                                       assert tkwinitnode3 isa TKwinit
-                                       var listnode4 = nodearraylist2 
+                                       assert tkwinitnode3 isa nullable TKwinit
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
                                        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
                                                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
                                                pexprnode2,
                                                tkwinitnode3,
                                                listnode5
@@ -16965,23 +16964,23 @@ private class ReduceAction419
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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]
                                        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
                                                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
                                                pexprnode2,
                                                listnode4,
                                                listnode5
@@ -16995,7 +16994,7 @@ private class ReduceAction420
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist1 = p.pop
                                        var listnode6 = new Array[Object]
                                        var tkwnewnode2 = nodearraylist1
-                                       assert tkwnewnode2 isa TKwnew
+                                       assert tkwnewnode2 isa nullable TKwnew
                                        var ptypenode3 = nodearraylist3
                                        var ptypenode3 = nodearraylist3
-                                       assert ptypenode3 isa PType
+                                       assert ptypenode3 isa nullable PType
                                        var tidnode4 = nodearraylist6
                                        var tidnode4 = nodearraylist6
-                                       assert tidnode4 isa TId
-                                       var listnode5 = nodearraylist7 
+                                       assert tidnode4 isa nullable TId
+                                       var listnode5 = nodearraylist7
                                        assert listnode5 isa Array[Object]
                                        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
                                                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,
                                                tkwnewnode2,
                                                ptypenode3,
                                                tidnode4,
@@ -17034,7 +17033,7 @@ private class ReduceAction421
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist3
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist7
                                        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
                                        )
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -17061,7 +17060,7 @@ private class ReduceAction422
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist3
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var pexprnode3 = nodearraylist7
                                        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
                                        )
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -17088,19 +17087,19 @@ private class ReduceAction423
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
-                                       var listnode2 = nodearraylist1 
+                                       var listnode2 = nodearraylist1
                                        assert listnode2 isa Array[Object]
                                        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
                                                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
                                                listnode3
                                        )
                                        node_list = pexprnode1
@@ -17112,11 +17111,11 @@ private class ReduceAction424
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                                tkwselfnode2
                                        )
                                        node_list = pexprnode1
@@ -17128,11 +17127,11 @@ private class ReduceAction425
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                                tkwtruenode2
                                        )
                                        node_list = pexprnode1
@@ -17144,11 +17143,11 @@ private class ReduceAction426
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                                tkwfalsenode2
                                        )
                                        node_list = pexprnode1
@@ -17160,11 +17159,11 @@ private class ReduceAction427
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                                tkwnullnode2
                                        )
                                        node_list = pexprnode1
@@ -17176,11 +17175,11 @@ private class ReduceAction428
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                                tnumbernode2
                                        )
                                        node_list = pexprnode1
@@ -17192,11 +17191,11 @@ private class ReduceAction429
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                                tfloatnode2
                                        )
                                        node_list = pexprnode1
@@ -17208,11 +17207,11 @@ private class ReduceAction430
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                                tcharnode2
                                        )
                                        node_list = pexprnode1
@@ -17224,11 +17223,11 @@ private class ReduceAction431
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                                tstringnode2
                                        )
                                        node_list = pexprnode1
@@ -17240,10 +17239,10 @@ private class ReduceAction432
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
 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
                                        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
                                        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
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tkwasnode3 = nodearraylist4
                                        var tkwasnode3 = nodearraylist4
-                                       assert tkwasnode3 isa TKwas
+                                       assert tkwasnode3 isa nullable TKwas
                                        var ptypenode4 = nodearraylist8
                                        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
                                                pexprnode2,
                                                tkwasnode3,
                                                ptypenode4
@@ -17299,7 +17298,7 @@ private class ReduceAction435
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tkwasnode3 = nodearraylist4
                                        var tkwasnode3 = nodearraylist4
-                                       assert tkwasnode3 isa TKwas
+                                       assert tkwasnode3 isa nullable TKwas
                                        var tkwnotnode4 = nodearraylist8
                                        var tkwnotnode4 = nodearraylist8
-                                       assert tkwnotnode4 isa TKwnot
+                                       assert tkwnotnode4 isa nullable TKwnot
                                        var tkwnullnode5 = nodearraylist10
                                        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,
                                                pexprnode2,
                                                tkwasnode3,
                                                tkwnotnode4,
@@ -17335,25 +17334,25 @@ private class ReduceAction436
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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 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
                                                if listnode4.is_empty then
                                                        listnode4 = listnode2
                                                else
                                                        listnode4.append(listnode2)
                                                end
-                                       end
+#                                      end
                                        if pexprnode3 != null then
                                                listnode4.add(pexprnode3)
                                        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
                                                listnode4
                                        )
                                        node_list = pexprnode1
@@ -17365,35 +17364,35 @@ private class ReduceAction437
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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]
                                        assert listnode2 isa Array[Object]
-                                       var listnode3 = nodearraylist2 
+                                       var listnode3 = nodearraylist2
                                        assert listnode3 isa Array[Object]
                                        var pexprnode4 = nodearraylist3
                                        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
                                                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
                                                if listnode5.is_empty then
                                                        listnode5 = listnode3
                                                else
                                                        listnode5.append(listnode3)
                                                end
-                                       end
+#                                      end
                                        if pexprnode4 != null then
                                                listnode5.add(pexprnode4)
                                        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
                                                listnode5
                                        )
                                        node_list = pexprnode1
@@ -17405,16 +17404,16 @@ private class ReduceAction438
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var pexprnode2 = nodearraylist3
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        if pexprnode1 != null then
                                                listnode3.add(pexprnode1)
                                        end
                                        if pexprnode1 != null then
                                                listnode3.add(pexprnode1)
                                        end
@@ -17430,11 +17429,11 @@ private class ReduceAction439
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                                tstartstringnode2
                                        )
                                        node_list = pexprnode1
@@ -17446,16 +17445,16 @@ private class ReduceAction440
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var pexprnode2 = nodearraylist3
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        if pexprnode1 != null then
                                                listnode3.add(pexprnode1)
                                        end
                                        if pexprnode1 != null then
                                                listnode3.add(pexprnode1)
                                        end
@@ -17471,11 +17470,11 @@ private class ReduceAction441
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                                tmidstringnode2
                                        )
                                        node_list = pexprnode1
@@ -17487,11 +17486,11 @@ private class ReduceAction442
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                                tendstringnode2
                                        )
                                        node_list = pexprnode1
@@ -17503,7 +17502,7 @@ private class ReduceAction443
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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
                                        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
                                        if pexprnode1 != null then
                                                listnode2.add(pexprnode1)
                                        end
@@ -17524,7 +17523,7 @@ private class ReduceAction444
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        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
                                                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
                                        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
 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 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
 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)
                                        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
 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 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
                                        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
                                        if pexprnode1 != null then
                                                listnode2.add(pexprnode1)
                                        end
@@ -17601,7 +17600,7 @@ private class ReduceAction448
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        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
                                                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
                                        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
 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
                                        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
                                        if pexprnode1 != null then
                                                listnode2.add(pexprnode1)
                                        end
@@ -17649,7 +17648,7 @@ private class ReduceAction450
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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
 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)
                                        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
 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 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
                                        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
                                        if pexprnode1 != null then
                                                listnode2.add(pexprnode1)
                                        end
@@ -17695,7 +17694,7 @@ private class ReduceAction453
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        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
                                                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
                                        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
 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
                                        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
                                        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
 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
                                        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
                                        if tidnode1 != null then
                                                listnode2.add(tidnode1)
                                        end
@@ -17759,24 +17758,24 @@ private class ReduceAction456
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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 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
                                                if listnode3.is_empty then
                                                        listnode3 = listnode1
                                                else
                                                        listnode3.append(listnode1)
                                                end
-                                       end
+#                                      end
                                        if tidnode2 != null then
                                                listnode3.add(tidnode2)
                                        end
                                        if tidnode2 != null then
                                                listnode3.add(tidnode2)
                                        end
@@ -17789,12 +17788,12 @@ private class ReduceAction457
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        )
                                                listnode2,
                                                tclassidnode3
                                        )
@@ -17807,22 +17806,22 @@ private class ReduceAction458
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
-                                       var listnode2 = nodearraylist1 
+                                       var listnode2 = nodearraylist1
                                        assert listnode2 isa Array[Object]
                                        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
                                                if listnode3.is_empty then
                                                        listnode3 = listnode2
                                                else
                                                        listnode3.append(listnode2)
                                                end
-                                       end
+#                                      end
                                        var tclassidnode4 = nodearraylist2
                                        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
                                        )
                                                listnode3,
                                                tclassidnode4
                                        )
@@ -17835,19 +17834,19 @@ private class ReduceAction459
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
-                                       var listnode2 = nodearraylist1 
+                                       var listnode2 = nodearraylist1
                                        assert listnode2 isa Array[Object]
                                        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
                                                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
                                        )
                                                listnode3,
                                                null
                                        )
@@ -17860,12 +17859,12 @@ private class ReduceAction460
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
 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
                                        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
                                        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
 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
                                        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
 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
                                        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
 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 nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
-                                       var listnode2 = nodearraylist1 
+                                       var listnode2 = nodearraylist1
                                        assert listnode2 isa Array[Object]
                                        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
                                                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
                                                listnode3
                                        )
                                        node_list = pdocnode1
@@ -17934,20 +17933,20 @@ private class ReduceAction465
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
-                                       var listnode2 = nodearraylist2 
+                                       var listnode2 = nodearraylist2
                                        assert listnode2 isa Array[Object]
                                        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
                                                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
                                                listnode3
                                        )
                                        node_list = pdocnode1
@@ -17959,7 +17958,7 @@ private class ReduceAction466
 special ReduceAction
        redef meth action(p: Parser)
        do
 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)
                                        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
 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
                                        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
 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
                                        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
                                        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
 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)
                                        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
 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 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
 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
                                        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
 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
                                        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
                                        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
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var pvisibilitynode4 = nodearraylist2
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var tkwmethnode5 = nodearraylist3
                                        var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
+                                       assert tkwmethnode5 isa nullable TKwmeth
                                        var pmethidnode6 = nodearraylist4
                                        var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
+                                       assert pmethidnode6 isa nullable PMethid
                                        var psignaturenode7 = nodearraylist5
                                        var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa PSignature
+                                       assert psignaturenode7 isa nullable PSignature
                                        var pexprnode8 = nodearraylist7
                                        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,
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -18078,7 +18077,7 @@ private class ReduceAction474
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode3 = nodearraylist2
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var tkwmethnode5 = nodearraylist4
                                        var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
+                                       assert tkwmethnode5 isa nullable TKwmeth
                                        var pmethidnode6 = nodearraylist5
                                        var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
+                                       assert pmethidnode6 isa nullable PMethid
                                        var psignaturenode7 = nodearraylist6
                                        var psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa PSignature
+                                       assert psignaturenode7 isa nullable PSignature
                                        var pexprnode8 = nodearraylist8
                                        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,
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -18119,7 +18118,7 @@ private class ReduceAction475
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var pvisibilitynode4 = nodearraylist2
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var tkwmethnode5 = nodearraylist3
                                        var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
+                                       assert tkwmethnode5 isa nullable TKwmeth
                                        var pmethidnode6 = nodearraylist4
                                        var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
+                                       assert pmethidnode6 isa nullable PMethid
                                        var psignaturenode7 = nodearraylist5
                                        var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa PSignature
+                                       assert psignaturenode7 isa nullable PSignature
                                        var pexprnode8 = nodearraylist7
                                        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,
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -18158,7 +18157,7 @@ private class ReduceAction476
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode3 = nodearraylist2
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var tkwmethnode5 = nodearraylist4
                                        var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
+                                       assert tkwmethnode5 isa nullable TKwmeth
                                        var pmethidnode6 = nodearraylist5
                                        var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
+                                       assert pmethidnode6 isa nullable PMethid
                                        var psignaturenode7 = nodearraylist6
                                        var psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa PSignature
+                                       assert psignaturenode7 isa nullable PSignature
                                        var pexprnode8 = nodearraylist8
                                        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,
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -18200,7 +18199,7 @@ private class ReduceAction477
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var pvisibilitynode4 = nodearraylist2
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var tkwmethnode5 = nodearraylist3
                                        var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
+                                       assert tkwmethnode5 isa nullable TKwmeth
                                        var pmethidnode6 = nodearraylist4
                                        var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
+                                       assert pmethidnode6 isa nullable PMethid
                                        var psignaturenode7 = nodearraylist5
                                        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,
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -18236,7 +18235,7 @@ private class ReduceAction478
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode3 = nodearraylist2
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var tkwmethnode5 = nodearraylist4
                                        var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
+                                       assert tkwmethnode5 isa nullable TKwmeth
                                        var pmethidnode6 = nodearraylist5
                                        var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
+                                       assert pmethidnode6 isa nullable PMethid
                                        var psignaturenode7 = nodearraylist6
                                        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,
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -18275,7 +18274,7 @@ private class ReduceAction479
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var pvisibilitynode4 = nodearraylist2
                                        var pvisibilitynode4 = nodearraylist2
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var tkwmethnode5 = nodearraylist3
                                        var tkwmethnode5 = nodearraylist3
-                                       assert tkwmethnode5 isa TKwmeth
+                                       assert tkwmethnode5 isa nullable TKwmeth
                                        var pmethidnode6 = nodearraylist4
                                        var pmethidnode6 = nodearraylist4
-                                       assert pmethidnode6 isa PMethid
+                                       assert pmethidnode6 isa nullable PMethid
                                        var psignaturenode7 = nodearraylist5
                                        var psignaturenode7 = nodearraylist5
-                                       assert psignaturenode7 isa PSignature
+                                       assert psignaturenode7 isa nullable PSignature
                                        var tstringnode8 = nodearraylist8
                                        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,
                                                pdocnode2,
                                                null,
                                                pvisibilitynode4,
@@ -18314,7 +18313,7 @@ private class ReduceAction480
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pdocnode2 = nodearraylist1
-                                       assert pdocnode2 isa PDoc
+                                       assert pdocnode2 isa nullable PDoc
                                        var tkwredefnode3 = nodearraylist2
                                        var tkwredefnode3 = nodearraylist2
-                                       assert tkwredefnode3 isa TKwredef
+                                       assert tkwredefnode3 isa nullable TKwredef
                                        var pvisibilitynode4 = nodearraylist3
                                        var pvisibilitynode4 = nodearraylist3
-                                       assert pvisibilitynode4 isa PVisibility
+                                       assert pvisibilitynode4 isa nullable PVisibility
                                        var tkwmethnode5 = nodearraylist4
                                        var tkwmethnode5 = nodearraylist4
-                                       assert tkwmethnode5 isa TKwmeth
+                                       assert tkwmethnode5 isa nullable TKwmeth
                                        var pmethidnode6 = nodearraylist5
                                        var pmethidnode6 = nodearraylist5
-                                       assert pmethidnode6 isa PMethid
+                                       assert pmethidnode6 isa nullable PMethid
                                        var psignaturenode7 = nodearraylist6
                                        var psignaturenode7 = nodearraylist6
-                                       assert psignaturenode7 isa PSignature
+                                       assert psignaturenode7 isa nullable PSignature
                                        var tstringnode8 = nodearraylist9
                                        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,
                                                pdocnode2,
                                                tkwredefnode3,
                                                pvisibilitynode4,
@@ -18356,12 +18355,12 @@ private class ReduceAction481
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                                null,
                                                tclassidnode3,
                                                listnode4
@@ -18375,15 +18374,15 @@ private class ReduceAction482
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                                tkwnullablenode2,
                                                tclassidnode3,
                                                listnode4
@@ -18397,10 +18396,10 @@ private class ReduceAction483
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
 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
                                        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
                                        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
                                        var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist5 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
                                        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
                                                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]
                                        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
                                                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,
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -18456,35 +18455,35 @@ private class ReduceAction485
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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
                                        )
                                        var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist2 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
                                        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
                                                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]
                                        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
                                                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,
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -18499,10 +18498,10 @@ private class ReduceAction486
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwifnode2 = nodearraylist1
-                                       assert tkwifnode2 isa TKwif
+                                       assert tkwifnode2 isa nullable TKwif
                                        var pexprnode3 = nodearraylist3
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
+                                       assert pexprnode3 isa nullable PExpr
                                        var tkwthennode4 = nodearraylist5
                                        var tkwthennode4 = nodearraylist5
-                                       assert tkwthennode4 isa TKwthen
+                                       assert tkwthennode4 isa nullable TKwthen
                                        var pexprnode5 = nodearraylist7
                                        var pexprnode5 = nodearraylist7
-                                       assert pexprnode5 isa PExpr
+                                       assert pexprnode5 isa nullable PExpr
                                        var tkwelsenode6 = nodearraylist9
                                        var tkwelsenode6 = nodearraylist9
-                                       assert tkwelsenode6 isa TKwelse
+                                       assert tkwelsenode6 isa nullable TKwelse
                                        var pexprnode7 = nodearraylist11
                                        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,
                                                tkwifnode2,
                                                pexprnode3,
                                                tkwthennode4,
@@ -18553,10 +18552,10 @@ private class ReduceAction488
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
 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
                                        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
                                        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
                                        )
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -18588,16 +18587,16 @@ private class ReduceAction490
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        )
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -18610,10 +18609,10 @@ private class ReduceAction491
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
 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
                                        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
                                        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
                                        )
                                                tkwnotnode2,
                                                pexprnode3
                                        )
@@ -18644,10 +18643,10 @@ private class ReduceAction493
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
 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
                                        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
                                        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
                                        )
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -18679,16 +18678,16 @@ private class ReduceAction495
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        )
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -18701,16 +18700,16 @@ private class ReduceAction496
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        )
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -18723,16 +18722,16 @@ private class ReduceAction497
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        )
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -18745,16 +18744,16 @@ private class ReduceAction498
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        )
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -18767,16 +18766,16 @@ private class ReduceAction499
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        )
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -18789,16 +18788,16 @@ private class ReduceAction500
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        )
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -18811,16 +18810,16 @@ private class ReduceAction501
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        )
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -18833,16 +18832,16 @@ private class ReduceAction502
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        )
                                                pexprnode2,
                                                ptypenode3
                                        )
@@ -18855,10 +18854,10 @@ private class ReduceAction503
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
 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
                                        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
                                        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
                                        )
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -18890,16 +18889,16 @@ private class ReduceAction505
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        )
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -18912,10 +18911,10 @@ private class ReduceAction506
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
 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
                                        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
                                        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
                                        )
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -18947,16 +18946,16 @@ private class ReduceAction508
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        )
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -18969,16 +18968,16 @@ private class ReduceAction509
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        )
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -18991,10 +18990,10 @@ private class ReduceAction510
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
 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
                                        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
                                        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
                                        )
                                                tminusnode2,
                                                pexprnode3
                                        )
@@ -19025,15 +19024,15 @@ private class ReduceAction512
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        )
                                                tkwoncenode2,
                                                pexprnode3
                                        )
@@ -19046,10 +19045,10 @@ private class ReduceAction513
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
 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
                                        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
                                        var ptypenode3 = nodearraylist3
-                                       assert ptypenode3 isa PType
-                                       var listnode5 = nodearraylist4 
+                                       assert ptypenode3 isa nullable PType
+                                       var listnode5 = nodearraylist4
                                        assert listnode5 isa Array[Object]
                                        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
                                                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,
                                                tkwnewnode2,
                                                ptypenode3,
                                                null,
@@ -19093,19 +19092,19 @@ private class ReduceAction515
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var pexprnode3 = nodearraylist2
-                                       assert pexprnode3 isa PExpr
+                                       assert pexprnode3 isa nullable PExpr
                                        var tattridnode4 = nodearraylist5
                                        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
                                                tkwissetnode2,
                                                pexprnode3,
                                                tattridnode4
@@ -19119,16 +19118,16 @@ private class ReduceAction516
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        )
                                        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
                                                tkwissetnode2,
                                                pexprnode3,
                                                tattridnode4
@@ -19142,16 +19141,16 @@ private class ReduceAction517
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        )
                                                pexprnode2,
                                                tattridnode3
                                        )
@@ -19164,13 +19163,13 @@ private class ReduceAction518
 special ReduceAction
        redef meth action(p: Parser)
        do
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tattridnode3 = nodearraylist1
                                        )
                                        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
                                        )
                                                pexprnode2,
                                                tattridnode3
                                        )
@@ -19183,7 +19182,7 @@ private class ReduceAction519
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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
                                        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
                                        var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist5 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
                                        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
                                                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,
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -19219,25 +19218,25 @@ private class ReduceAction520
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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
                                        )
                                        var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist2 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
                                        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
                                                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,
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -19252,22 +19251,22 @@ private class ReduceAction521
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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]
                                        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
                                                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
                                                null,
                                                tkwsupernode3,
                                                listnode5
@@ -19281,25 +19280,25 @@ private class ReduceAction522
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var tkwsupernode3 = nodearraylist2
-                                       assert tkwsupernode3 isa TKwsuper
-                                       var listnode4 = nodearraylist3 
+                                       assert tkwsupernode3 isa nullable TKwsuper
+                                       var listnode4 = nodearraylist3
                                        assert listnode4 isa Array[Object]
                                        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
                                                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
                                                pqualifiednode2,
                                                tkwsupernode3,
                                                listnode5
@@ -19313,7 +19312,7 @@ private class ReduceAction523
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tkwinitnode3 = nodearraylist4
                                        var tkwinitnode3 = nodearraylist4
-                                       assert tkwinitnode3 isa TKwinit
-                                       var listnode4 = nodearraylist5 
+                                       assert tkwinitnode3 isa nullable TKwinit
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
                                        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
                                                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
                                                pexprnode2,
                                                tkwinitnode3,
                                                listnode5
@@ -19347,24 +19346,24 @@ private class ReduceAction524
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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
                                        )
                                        var tkwinitnode3 = nodearraylist1
-                                       assert tkwinitnode3 isa TKwinit
-                                       var listnode4 = nodearraylist2 
+                                       assert tkwinitnode3 isa nullable TKwinit
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
                                        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
                                                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
                                                pexprnode2,
                                                tkwinitnode3,
                                                listnode5
@@ -19378,7 +19377,7 @@ private class ReduceAction525
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist1 = p.pop
                                        var listnode6 = new Array[Object]
                                        var tkwnewnode2 = nodearraylist1
-                                       assert tkwnewnode2 isa TKwnew
+                                       assert tkwnewnode2 isa nullable TKwnew
                                        var ptypenode3 = nodearraylist3
                                        var ptypenode3 = nodearraylist3
-                                       assert ptypenode3 isa PType
+                                       assert ptypenode3 isa nullable PType
                                        var tidnode4 = nodearraylist6
                                        var tidnode4 = nodearraylist6
-                                       assert tidnode4 isa TId
-                                       var listnode5 = nodearraylist7 
+                                       assert tidnode4 isa nullable TId
+                                       var listnode5 = nodearraylist7
                                        assert listnode5 isa Array[Object]
                                        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
                                                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,
                                                tkwnewnode2,
                                                ptypenode3,
                                                tidnode4,
@@ -19417,11 +19416,11 @@ private class ReduceAction526
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                                tkwselfnode2
                                        )
                                        node_list = pexprnode1
@@ -19433,11 +19432,11 @@ private class ReduceAction527
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                                tkwtruenode2
                                        )
                                        node_list = pexprnode1
@@ -19449,11 +19448,11 @@ private class ReduceAction528
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                                tkwfalsenode2
                                        )
                                        node_list = pexprnode1
@@ -19465,11 +19464,11 @@ private class ReduceAction529
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                                tkwnullnode2
                                        )
                                        node_list = pexprnode1
@@ -19481,11 +19480,11 @@ private class ReduceAction530
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                                tnumbernode2
                                        )
                                        node_list = pexprnode1
@@ -19497,11 +19496,11 @@ private class ReduceAction531
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                                tfloatnode2
                                        )
                                        node_list = pexprnode1
@@ -19513,11 +19512,11 @@ private class ReduceAction532
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                                tcharnode2
                                        )
                                        node_list = pexprnode1
@@ -19529,11 +19528,11 @@ private class ReduceAction533
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                                tstringnode2
                                        )
                                        node_list = pexprnode1
@@ -19545,10 +19544,10 @@ private class ReduceAction534
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
 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
                                        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
                                        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
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tkwasnode3 = nodearraylist4
                                        var tkwasnode3 = nodearraylist4
-                                       assert tkwasnode3 isa TKwas
+                                       assert tkwasnode3 isa nullable TKwas
                                        var ptypenode4 = nodearraylist8
                                        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
                                                pexprnode2,
                                                tkwasnode3,
                                                ptypenode4
@@ -19604,7 +19603,7 @@ private class ReduceAction537
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tkwasnode3 = nodearraylist4
                                        var tkwasnode3 = nodearraylist4
-                                       assert tkwasnode3 isa TKwas
+                                       assert tkwasnode3 isa nullable TKwas
                                        var tkwnotnode4 = nodearraylist8
                                        var tkwnotnode4 = nodearraylist8
-                                       assert tkwnotnode4 isa TKwnot
+                                       assert tkwnotnode4 isa nullable TKwnot
                                        var tkwnullnode5 = nodearraylist10
                                        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,
                                                pexprnode2,
                                                tkwasnode3,
                                                tkwnotnode4,
@@ -19640,10 +19639,10 @@ private class ReduceAction538
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
 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
                                        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
                                        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
                                                listnode3
                                        )
                                        node_list = pexprnode1
@@ -19676,7 +19675,7 @@ private class ReduceAction540
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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
                                        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
                                        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
                                                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
                                                listnode4
                                        )
                                        node_list = pexprnode1
@@ -19709,11 +19708,11 @@ private class ReduceAction541
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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
                                                listnode2
                                        )
                                        node_list = pexprnode1
@@ -19725,10 +19724,10 @@ private class ReduceAction542
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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
                                                listnode2
                                        )
                                        node_list = pexprnode1
@@ -19740,10 +19739,10 @@ private class ReduceAction543
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
 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
                                        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
                                        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
 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
                                        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
                                        )
                                                tkwreturnnode2,
                                                null
                                        )
@@ -19783,14 +19782,14 @@ private class ReduceAction546
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwreturnnode2 = nodearraylist1
-                                       assert tkwreturnnode2 isa TKwreturn
+                                       assert tkwreturnnode2 isa nullable TKwreturn
                                        var pexprnode3 = nodearraylist2
                                        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
                                        )
                                                tkwreturnnode2,
                                                pexprnode3
                                        )
@@ -19803,11 +19802,11 @@ private class ReduceAction547
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        )
                                                tkwbreaknode2,
                                                null
                                        )
@@ -19820,14 +19819,14 @@ private class ReduceAction548
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwbreaknode2 = nodearraylist1
-                                       assert tkwbreaknode2 isa TKwbreak
+                                       assert tkwbreaknode2 isa nullable TKwbreak
                                        var pexprnode3 = nodearraylist2
                                        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
                                        )
                                                tkwbreaknode2,
                                                pexprnode3
                                        )
@@ -19840,11 +19839,11 @@ private class ReduceAction549
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                                tkwabortnode2
                                        )
                                        node_list = pexprnode1
@@ -19856,11 +19855,11 @@ private class ReduceAction550
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        )
                                                tkwcontinuenode2,
                                                null
                                        )
@@ -19873,14 +19872,14 @@ private class ReduceAction551
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwcontinuenode2 = nodearraylist1
-                                       assert tkwcontinuenode2 isa TKwcontinue
+                                       assert tkwcontinuenode2 isa nullable TKwcontinue
                                        var pexprnode3 = nodearraylist2
                                        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
                                        )
                                                tkwcontinuenode2,
                                                pexprnode3
                                        )
@@ -19893,10 +19892,10 @@ private class ReduceAction552
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
 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
                                        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
                                        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
 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
                                        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
                                        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
 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
                                        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
                                        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
 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
                                        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
                                        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
 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 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
                                        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
                                        var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist5 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
                                        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
                                                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,
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -19994,25 +19993,25 @@ private class ReduceAction558
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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
                                        )
                                        var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist2 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
                                        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
                                                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,
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -20027,7 +20026,7 @@ private class ReduceAction559
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist5 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
                                        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
                                                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]
                                        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
                                                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,
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -20073,35 +20072,35 @@ private class ReduceAction560
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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
                                        )
                                        var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist2 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
                                        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
                                                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]
                                        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
                                                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,
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -20116,22 +20115,22 @@ private class ReduceAction561
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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]
                                        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
                                                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
                                                null,
                                                tkwsupernode3,
                                                listnode5
@@ -20145,25 +20144,25 @@ private class ReduceAction562
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var tkwsupernode3 = nodearraylist2
-                                       assert tkwsupernode3 isa TKwsuper
-                                       var listnode4 = nodearraylist3 
+                                       assert tkwsupernode3 isa nullable TKwsuper
+                                       var listnode4 = nodearraylist3
                                        assert listnode4 isa Array[Object]
                                        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
                                                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
                                                pqualifiednode2,
                                                tkwsupernode3,
                                                listnode5
@@ -20177,7 +20176,7 @@ private class ReduceAction563
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tkwinitnode3 = nodearraylist4
                                        var tkwinitnode3 = nodearraylist4
-                                       assert tkwinitnode3 isa TKwinit
-                                       var listnode4 = nodearraylist5 
+                                       assert tkwinitnode3 isa nullable TKwinit
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
                                        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
                                                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
                                                pexprnode2,
                                                tkwinitnode3,
                                                listnode5
@@ -20211,24 +20210,24 @@ private class ReduceAction564
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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
                                        )
                                        var tkwinitnode3 = nodearraylist1
-                                       assert tkwinitnode3 isa TKwinit
-                                       var listnode4 = nodearraylist2 
+                                       assert tkwinitnode3 isa nullable TKwinit
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
                                        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
                                                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
                                                pexprnode2,
                                                tkwinitnode3,
                                                listnode5
@@ -20242,11 +20241,11 @@ private class ReduceAction565
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        if pclosuredefnode1 != null then
                                                listnode2.add(pclosuredefnode1)
                                        end
@@ -20259,24 +20258,24 @@ private class ReduceAction566
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                                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
                                        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
 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
                                        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
                                        var tkwdonode4 = nodearraylist2
-                                       assert tkwdonode4 isa TKwdo
+                                       assert tkwdonode4 isa nullable TKwdo
                                        var pexprnode5 = nodearraylist3
                                        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,
                                                tkwwithnode2,
                                                listnode3,
                                                tkwdonode4,
@@ -20312,28 +20311,28 @@ private class ReduceAction568
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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]
                                        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
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
+#                                      end
                                        var tkwdonode5 = nodearraylist3
                                        var tkwdonode5 = nodearraylist3
-                                       assert tkwdonode5 isa TKwdo
+                                       assert tkwdonode5 isa nullable TKwdo
                                        var pexprnode6 = nodearraylist4
                                        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,
                                                tkwwithnode2,
                                                listnode4,
                                                tkwdonode5,
@@ -20348,14 +20347,14 @@ private class ReduceAction569
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwvarnode2 = nodearraylist1
-                                       assert tkwvarnode2 isa TKwvar
+                                       assert tkwvarnode2 isa nullable TKwvar
                                        var tidnode3 = nodearraylist2
                                        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,
                                                tkwvarnode2,
                                                tidnode3,
                                                null,
@@ -20371,17 +20370,17 @@ private class ReduceAction570
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var tidnode3 = nodearraylist2
-                                       assert tidnode3 isa TId
+                                       assert tidnode3 isa nullable TId
                                        var ptypenode4 = nodearraylist3
                                        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,
                                                tkwvarnode2,
                                                tidnode3,
                                                ptypenode4,
@@ -20397,21 +20396,21 @@ private class ReduceAction571
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var tidnode3 = nodearraylist2
-                                       assert tidnode3 isa TId
+                                       assert tidnode3 isa nullable TId
                                        var tassignnode5 = nodearraylist3
                                        var tassignnode5 = nodearraylist3
-                                       assert tassignnode5 isa TAssign
+                                       assert tassignnode5 isa nullable TAssign
                                        var pexprnode6 = nodearraylist5
                                        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,
                                                tkwvarnode2,
                                                tidnode3,
                                                null,
@@ -20427,7 +20426,7 @@ private class ReduceAction572
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwvarnode2 = nodearraylist1
-                                       assert tkwvarnode2 isa TKwvar
+                                       assert tkwvarnode2 isa nullable TKwvar
                                        var tidnode3 = nodearraylist2
                                        var tidnode3 = nodearraylist2
-                                       assert tidnode3 isa TId
+                                       assert tidnode3 isa nullable TId
                                        var ptypenode4 = nodearraylist3
                                        var ptypenode4 = nodearraylist3
-                                       assert ptypenode4 isa PType
+                                       assert ptypenode4 isa nullable PType
                                        var tassignnode5 = nodearraylist4
                                        var tassignnode5 = nodearraylist4
-                                       assert tassignnode5 isa TAssign
+                                       assert tassignnode5 isa nullable TAssign
                                        var pexprnode6 = nodearraylist6
                                        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,
                                                tkwvarnode2,
                                                tidnode3,
                                                ptypenode4,
@@ -20460,7 +20459,7 @@ private class ReduceAction573
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tattridnode3 = nodearraylist4
                                        var tattridnode3 = nodearraylist4
-                                       assert tattridnode3 isa TAttrid
+                                       assert tattridnode3 isa nullable TAttrid
                                        var tassignnode4 = nodearraylist5
                                        var tassignnode4 = nodearraylist5
-                                       assert tassignnode4 isa TAssign
+                                       assert tassignnode4 isa nullable TAssign
                                        var pexprnode5 = nodearraylist6
                                        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,
                                                pexprnode2,
                                                tattridnode3,
                                                tassignnode4,
@@ -20490,19 +20489,19 @@ private class ReduceAction574
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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
                                        )
                                        var tattridnode3 = nodearraylist1
-                                       assert tattridnode3 isa TAttrid
+                                       assert tattridnode3 isa nullable TAttrid
                                        var tassignnode4 = nodearraylist2
                                        var tassignnode4 = nodearraylist2
-                                       assert tassignnode4 isa TAssign
+                                       assert tassignnode4 isa nullable TAssign
                                        var pexprnode5 = nodearraylist3
                                        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,
                                                pexprnode2,
                                                tattridnode3,
                                                tassignnode4,
@@ -20517,7 +20516,7 @@ private class ReduceAction575
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tidnode3 = nodearraylist4
                                        var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist5 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
                                        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
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
+#                                      end
                                        var tassignnode6 = nodearraylist6
                                        var tassignnode6 = nodearraylist6
-                                       assert tassignnode6 isa TAssign
+                                       assert tassignnode6 isa nullable TAssign
                                        var pexprnode7 = nodearraylist7
                                        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,
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -20559,30 +20558,30 @@ private class ReduceAction576
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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
                                        )
                                        var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist2 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
                                        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
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
+#                                      end
                                        var tassignnode6 = nodearraylist3
                                        var tassignnode6 = nodearraylist3
-                                       assert tassignnode6 isa TAssign
+                                       assert tassignnode6 isa nullable TAssign
                                        var pexprnode7 = nodearraylist4
                                        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,
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -20598,28 +20597,28 @@ private class ReduceAction577
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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]
                                        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
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
+#                                      end
                                        var tassignnode5 = nodearraylist3
                                        var tassignnode5 = nodearraylist3
-                                       assert tassignnode5 isa TAssign
+                                       assert tassignnode5 isa nullable TAssign
                                        var pexprnode6 = nodearraylist4
                                        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,
                                                pexprnode2,
                                                listnode4,
                                                tassignnode5,
@@ -20634,7 +20633,7 @@ private class ReduceAction578
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tattridnode3 = nodearraylist4
                                        var tattridnode3 = nodearraylist4
-                                       assert tattridnode3 isa TAttrid
+                                       assert tattridnode3 isa nullable TAttrid
                                        var passignopnode4 = nodearraylist5
                                        var passignopnode4 = nodearraylist5
-                                       assert passignopnode4 isa PAssignOp
+                                       assert passignopnode4 isa nullable PAssignOp
                                        var pexprnode5 = nodearraylist6
                                        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,
                                                pexprnode2,
                                                tattridnode3,
                                                passignopnode4,
@@ -20664,19 +20663,19 @@ private class ReduceAction579
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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
                                        )
                                        var tattridnode3 = nodearraylist1
-                                       assert tattridnode3 isa TAttrid
+                                       assert tattridnode3 isa nullable TAttrid
                                        var passignopnode4 = nodearraylist2
                                        var passignopnode4 = nodearraylist2
-                                       assert passignopnode4 isa PAssignOp
+                                       assert passignopnode4 isa nullable PAssignOp
                                        var pexprnode5 = nodearraylist3
                                        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,
                                                pexprnode2,
                                                tattridnode3,
                                                passignopnode4,
@@ -20691,7 +20690,7 @@ private class ReduceAction580
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tidnode3 = nodearraylist4
                                        var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist5 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
                                        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
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
+#                                      end
                                        var passignopnode6 = nodearraylist6
                                        var passignopnode6 = nodearraylist6
-                                       assert passignopnode6 isa PAssignOp
+                                       assert passignopnode6 isa nullable PAssignOp
                                        var pexprnode7 = nodearraylist7
                                        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,
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -20733,30 +20732,30 @@ private class ReduceAction581
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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
                                        )
                                        var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist2 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
                                        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
                                                if listnode5.is_empty then
                                                        listnode5 = listnode4
                                                else
                                                        listnode5.append(listnode4)
                                                end
-                                       end
+#                                      end
                                        var passignopnode6 = nodearraylist3
                                        var passignopnode6 = nodearraylist3
-                                       assert passignopnode6 isa PAssignOp
+                                       assert passignopnode6 isa nullable PAssignOp
                                        var pexprnode7 = nodearraylist4
                                        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,
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -20772,28 +20771,28 @@ private class ReduceAction582
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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]
                                        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
                                                if listnode4.is_empty then
                                                        listnode4 = listnode3
                                                else
                                                        listnode4.append(listnode3)
                                                end
-                                       end
+#                                      end
                                        var passignopnode5 = nodearraylist3
                                        var passignopnode5 = nodearraylist3
-                                       assert passignopnode5 isa PAssignOp
+                                       assert passignopnode5 isa nullable PAssignOp
                                        var pexprnode6 = nodearraylist4
                                        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,
                                                pexprnode2,
                                                listnode4,
                                                passignopnode5,
@@ -20808,14 +20807,14 @@ private class ReduceAction583
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwdonode2 = nodearraylist1
-                                       assert tkwdonode2 isa TKwdo
+                                       assert tkwdonode2 isa nullable TKwdo
                                        var pexprnode3 = nodearraylist2
                                        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
                                        )
                                                tkwdonode2,
                                                pexprnode3
                                        )
@@ -20828,7 +20827,7 @@ private class ReduceAction584
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwifnode2 = nodearraylist1
-                                       assert tkwifnode2 isa TKwif
+                                       assert tkwifnode2 isa nullable TKwif
                                        var pexprnode3 = nodearraylist3
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
+                                       assert pexprnode3 isa nullable PExpr
                                        var pexprnode4 = nodearraylist6
                                        var pexprnode4 = nodearraylist6
-                                       assert pexprnode4 isa PExpr
+                                       assert pexprnode4 isa nullable PExpr
                                        var pexprnode5 = nodearraylist8
                                        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,
                                                tkwifnode2,
                                                pexprnode3,
                                                pexprnode4,
@@ -20860,7 +20859,7 @@ private class ReduceAction585
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwwhilenode2 = nodearraylist1
-                                       assert tkwwhilenode2 isa TKwwhile
+                                       assert tkwwhilenode2 isa nullable TKwwhile
                                        var pexprnode3 = nodearraylist3
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
+                                       assert pexprnode3 isa nullable PExpr
                                        var tkwdonode4 = nodearraylist5
                                        var tkwdonode4 = nodearraylist5
-                                       assert tkwdonode4 isa TKwdo
+                                       assert tkwdonode4 isa nullable TKwdo
                                        var pexprnode5 = nodearraylist6
                                        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,
                                                tkwwhilenode2,
                                                pexprnode3,
                                                tkwdonode4,
@@ -20890,7 +20889,7 @@ private class ReduceAction586
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwfornode2 = nodearraylist1
-                                       assert tkwfornode2 isa TKwfor
+                                       assert tkwfornode2 isa nullable TKwfor
                                        var tidnode3 = nodearraylist3
                                        var tidnode3 = nodearraylist3
-                                       assert tidnode3 isa TId
+                                       assert tidnode3 isa nullable TId
                                        var pexprnode4 = nodearraylist7
                                        var pexprnode4 = nodearraylist7
-                                       assert pexprnode4 isa PExpr
+                                       assert pexprnode4 isa nullable PExpr
                                        var tkwdonode5 = nodearraylist9
                                        var tkwdonode5 = nodearraylist9
-                                       assert tkwdonode5 isa TKwdo
+                                       assert tkwdonode5 isa nullable TKwdo
                                        var pexprnode6 = nodearraylist10
                                        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,
                                                tkwfornode2,
                                                tidnode3,
                                                pexprnode4,
@@ -20927,14 +20926,14 @@ private class ReduceAction587
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwassertnode2 = nodearraylist1
-                                       assert tkwassertnode2 isa TKwassert
+                                       assert tkwassertnode2 isa nullable TKwassert
                                        var pexprnode4 = nodearraylist2
                                        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
                                                tkwassertnode2,
                                                null,
                                                pexprnode4
@@ -20948,17 +20947,17 @@ private class ReduceAction588
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var tidnode3 = nodearraylist2
-                                       assert tidnode3 isa TId
+                                       assert tidnode3 isa nullable TId
                                        var pexprnode4 = nodearraylist3
                                        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
                                                tkwassertnode2,
                                                tidnode3,
                                                pexprnode4
@@ -20972,10 +20971,10 @@ private class ReduceAction589
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
 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
                                        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
                                        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
                                        var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist5 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
                                        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
                                                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]
                                        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
                                                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,
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -21031,35 +21030,35 @@ private class ReduceAction591
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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
                                        )
                                        var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist2 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
                                        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
                                                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]
                                        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
                                                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,
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -21074,33 +21073,33 @@ private class ReduceAction592
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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]
                                        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
                                                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]
                                        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
                                                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
                                                pexprnode2,
                                                listnode4,
                                                listnode6
@@ -21114,10 +21113,10 @@ private class ReduceAction593
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
 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
                                        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
                                        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
                                        var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist5 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
                                        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
                                                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]
                                        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
                                                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,
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -21173,35 +21172,35 @@ private class ReduceAction595
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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
                                        )
                                        var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist2 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
                                        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
                                                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]
                                        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
                                                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,
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -21216,10 +21215,10 @@ private class ReduceAction596
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
 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
                                        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
                                        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
                                        var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist5 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
                                        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
                                                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]
                                        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
                                                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,
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -21275,35 +21274,35 @@ private class ReduceAction598
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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
                                        )
                                        var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist2 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
                                        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
                                                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]
                                        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
                                                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,
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -21318,10 +21317,10 @@ private class ReduceAction599
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwifnode2 = nodearraylist1
-                                       assert tkwifnode2 isa TKwif
+                                       assert tkwifnode2 isa nullable TKwif
                                        var pexprnode3 = nodearraylist3
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
+                                       assert pexprnode3 isa nullable PExpr
                                        var tkwthennode4 = nodearraylist5
                                        var tkwthennode4 = nodearraylist5
-                                       assert tkwthennode4 isa TKwthen
+                                       assert tkwthennode4 isa nullable TKwthen
                                        var pexprnode5 = nodearraylist7
                                        var pexprnode5 = nodearraylist7
-                                       assert pexprnode5 isa PExpr
+                                       assert pexprnode5 isa nullable PExpr
                                        var tkwelsenode6 = nodearraylist9
                                        var tkwelsenode6 = nodearraylist9
-                                       assert tkwelsenode6 isa TKwelse
+                                       assert tkwelsenode6 isa nullable TKwelse
                                        var pexprnode7 = nodearraylist11
                                        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,
                                                tkwifnode2,
                                                pexprnode3,
                                                tkwthennode4,
@@ -21372,10 +21371,10 @@ private class ReduceAction601
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
 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
                                        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
                                        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
                                        )
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -21407,16 +21406,16 @@ private class ReduceAction603
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        )
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -21429,10 +21428,10 @@ private class ReduceAction604
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
 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
                                        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
                                        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
                                        )
                                                tkwnotnode2,
                                                pexprnode3
                                        )
@@ -21463,10 +21462,10 @@ private class ReduceAction606
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
 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
                                        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
                                        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
                                        )
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -21498,16 +21497,16 @@ private class ReduceAction608
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        )
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -21520,16 +21519,16 @@ private class ReduceAction609
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        )
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -21542,16 +21541,16 @@ private class ReduceAction610
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        )
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -21564,16 +21563,16 @@ private class ReduceAction611
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        )
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -21586,16 +21585,16 @@ private class ReduceAction612
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        )
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -21608,16 +21607,16 @@ private class ReduceAction613
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        )
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -21630,16 +21629,16 @@ private class ReduceAction614
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        )
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -21652,16 +21651,16 @@ private class ReduceAction615
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        )
                                                pexprnode2,
                                                ptypenode3
                                        )
@@ -21674,10 +21673,10 @@ private class ReduceAction616
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
 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
                                        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
                                        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
                                        )
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -21709,16 +21708,16 @@ private class ReduceAction618
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        )
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -21731,10 +21730,10 @@ private class ReduceAction619
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
 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
                                        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
                                        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
                                        )
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -21766,16 +21765,16 @@ private class ReduceAction621
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        )
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -21788,16 +21787,16 @@ private class ReduceAction622
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        )
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -21810,10 +21809,10 @@ private class ReduceAction623
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
 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
                                        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
                                        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
                                        )
                                                tminusnode2,
                                                pexprnode3
                                        )
@@ -21844,15 +21843,15 @@ private class ReduceAction625
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        )
                                                tkwoncenode2,
                                                pexprnode3
                                        )
@@ -21865,10 +21864,10 @@ private class ReduceAction626
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
 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
                                        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
                                        var ptypenode3 = nodearraylist3
-                                       assert ptypenode3 isa PType
-                                       var listnode5 = nodearraylist4 
+                                       assert ptypenode3 isa nullable PType
+                                       var listnode5 = nodearraylist4
                                        assert listnode5 isa Array[Object]
                                        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
                                                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,
                                                tkwnewnode2,
                                                ptypenode3,
                                                null,
@@ -21912,19 +21911,19 @@ private class ReduceAction628
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var pexprnode3 = nodearraylist2
-                                       assert pexprnode3 isa PExpr
+                                       assert pexprnode3 isa nullable PExpr
                                        var tattridnode4 = nodearraylist5
                                        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
                                                tkwissetnode2,
                                                pexprnode3,
                                                tattridnode4
@@ -21938,16 +21937,16 @@ private class ReduceAction629
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        )
                                        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
                                                tkwissetnode2,
                                                pexprnode3,
                                                tattridnode4
@@ -21961,16 +21960,16 @@ private class ReduceAction630
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        )
                                                pexprnode2,
                                                tattridnode3
                                        )
@@ -21983,13 +21982,13 @@ private class ReduceAction631
 special ReduceAction
        redef meth action(p: Parser)
        do
 special ReduceAction
        redef meth action(p: Parser)
        do
-                                       var node_list: Object = null
+                                       var node_list: nullable Object = null
                                        var nodearraylist1 = p.pop
                                        var nodearraylist1 = p.pop
-                                       var pexprnode2 = new AImplicitSelfExpr.init_aimplicitselfexpr(
+                                       var pexprnode2: nullable AImplicitSelfExpr = new AImplicitSelfExpr.init_aimplicitselfexpr(
                                        )
                                        var tattridnode3 = nodearraylist1
                                        )
                                        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
                                        )
                                                pexprnode2,
                                                tattridnode3
                                        )
@@ -22002,7 +22001,7 @@ private class ReduceAction632
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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
                                        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
                                        var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist5 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
                                        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
                                                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,
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -22038,25 +22037,25 @@ private class ReduceAction633
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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
                                        )
                                        var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist2 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
                                        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
                                                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,
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -22071,22 +22070,22 @@ private class ReduceAction634
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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]
                                        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
                                                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
                                                null,
                                                tkwsupernode3,
                                                listnode5
@@ -22100,25 +22099,25 @@ private class ReduceAction635
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var tkwsupernode3 = nodearraylist2
-                                       assert tkwsupernode3 isa TKwsuper
-                                       var listnode4 = nodearraylist3 
+                                       assert tkwsupernode3 isa nullable TKwsuper
+                                       var listnode4 = nodearraylist3
                                        assert listnode4 isa Array[Object]
                                        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
                                                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
                                                pqualifiednode2,
                                                tkwsupernode3,
                                                listnode5
@@ -22132,7 +22131,7 @@ private class ReduceAction636
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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
                                        var nodearraylist1 = p.pop
                                        var listnode5 = new Array[Object]
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tkwinitnode3 = nodearraylist4
                                        var tkwinitnode3 = nodearraylist4
-                                       assert tkwinitnode3 isa TKwinit
-                                       var listnode4 = nodearraylist5 
+                                       assert tkwinitnode3 isa nullable TKwinit
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
                                        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
                                                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
                                                pexprnode2,
                                                tkwinitnode3,
                                                listnode5
@@ -22166,24 +22165,24 @@ private class ReduceAction637
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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
                                        )
                                        var tkwinitnode3 = nodearraylist1
-                                       assert tkwinitnode3 isa TKwinit
-                                       var listnode4 = nodearraylist2 
+                                       assert tkwinitnode3 isa nullable TKwinit
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
                                        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
                                                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
                                                pexprnode2,
                                                tkwinitnode3,
                                                listnode5
@@ -22197,7 +22196,7 @@ private class ReduceAction638
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist1 = p.pop
                                        var listnode6 = new Array[Object]
                                        var tkwnewnode2 = nodearraylist1
-                                       assert tkwnewnode2 isa TKwnew
+                                       assert tkwnewnode2 isa nullable TKwnew
                                        var ptypenode3 = nodearraylist3
                                        var ptypenode3 = nodearraylist3
-                                       assert ptypenode3 isa PType
+                                       assert ptypenode3 isa nullable PType
                                        var tidnode4 = nodearraylist6
                                        var tidnode4 = nodearraylist6
-                                       assert tidnode4 isa TId
-                                       var listnode5 = nodearraylist7 
+                                       assert tidnode4 isa nullable TId
+                                       var listnode5 = nodearraylist7
                                        assert listnode5 isa Array[Object]
                                        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
                                                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,
                                                tkwnewnode2,
                                                ptypenode3,
                                                tidnode4,
@@ -22236,11 +22235,11 @@ private class ReduceAction639
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                                tkwselfnode2
                                        )
                                        node_list = pexprnode1
@@ -22252,11 +22251,11 @@ private class ReduceAction640
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                                tkwtruenode2
                                        )
                                        node_list = pexprnode1
@@ -22268,11 +22267,11 @@ private class ReduceAction641
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                                tkwfalsenode2
                                        )
                                        node_list = pexprnode1
@@ -22284,11 +22283,11 @@ private class ReduceAction642
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                                tkwnullnode2
                                        )
                                        node_list = pexprnode1
@@ -22300,11 +22299,11 @@ private class ReduceAction643
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                                tnumbernode2
                                        )
                                        node_list = pexprnode1
@@ -22316,11 +22315,11 @@ private class ReduceAction644
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                                tfloatnode2
                                        )
                                        node_list = pexprnode1
@@ -22332,11 +22331,11 @@ private class ReduceAction645
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                                tcharnode2
                                        )
                                        node_list = pexprnode1
@@ -22348,11 +22347,11 @@ private class ReduceAction646
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                                tstringnode2
                                        )
                                        node_list = pexprnode1
@@ -22364,10 +22363,10 @@ private class ReduceAction647
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tkwasnode3 = nodearraylist4
                                        var tkwasnode3 = nodearraylist4
-                                       assert tkwasnode3 isa TKwas
+                                       assert tkwasnode3 isa nullable TKwas
                                        var ptypenode4 = nodearraylist8
                                        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
                                                pexprnode2,
                                                tkwasnode3,
                                                ptypenode4
@@ -22408,7 +22407,7 @@ private class ReduceAction649
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tkwasnode3 = nodearraylist4
                                        var tkwasnode3 = nodearraylist4
-                                       assert tkwasnode3 isa TKwas
+                                       assert tkwasnode3 isa nullable TKwas
                                        var tkwnotnode4 = nodearraylist8
                                        var tkwnotnode4 = nodearraylist8
-                                       assert tkwnotnode4 isa TKwnot
+                                       assert tkwnotnode4 isa nullable TKwnot
                                        var tkwnullnode5 = nodearraylist10
                                        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,
                                                pexprnode2,
                                                tkwasnode3,
                                                tkwnotnode4,
@@ -22444,10 +22443,10 @@ private class ReduceAction650
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
 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
                                        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
                                        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
                                        var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist5 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
                                        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
                                                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]
                                        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
                                                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,
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -22503,35 +22502,35 @@ private class ReduceAction652
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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
                                        )
                                        var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist2 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
                                        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
                                                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]
                                        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
                                                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,
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -22546,10 +22545,10 @@ private class ReduceAction653
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var tkwifnode2 = nodearraylist1
-                                       assert tkwifnode2 isa TKwif
+                                       assert tkwifnode2 isa nullable TKwif
                                        var pexprnode3 = nodearraylist3
                                        var pexprnode3 = nodearraylist3
-                                       assert pexprnode3 isa PExpr
+                                       assert pexprnode3 isa nullable PExpr
                                        var tkwthennode4 = nodearraylist5
                                        var tkwthennode4 = nodearraylist5
-                                       assert tkwthennode4 isa TKwthen
+                                       assert tkwthennode4 isa nullable TKwthen
                                        var pexprnode5 = nodearraylist7
                                        var pexprnode5 = nodearraylist7
-                                       assert pexprnode5 isa PExpr
+                                       assert pexprnode5 isa nullable PExpr
                                        var tkwelsenode6 = nodearraylist9
                                        var tkwelsenode6 = nodearraylist9
-                                       assert tkwelsenode6 isa TKwelse
+                                       assert tkwelsenode6 isa nullable TKwelse
                                        var pexprnode7 = nodearraylist11
                                        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,
                                                tkwifnode2,
                                                pexprnode3,
                                                tkwthennode4,
@@ -22600,10 +22599,10 @@ private class ReduceAction655
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
 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
                                        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
                                        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
                                        )
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -22635,16 +22634,16 @@ private class ReduceAction657
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        )
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -22657,10 +22656,10 @@ private class ReduceAction658
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
 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
                                        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
                                        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
                                        )
                                                tkwnotnode2,
                                                pexprnode3
                                        )
@@ -22691,10 +22690,10 @@ private class ReduceAction660
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
 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
                                        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
                                        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
                                        )
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -22726,16 +22725,16 @@ private class ReduceAction662
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        )
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -22748,16 +22747,16 @@ private class ReduceAction663
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        )
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -22770,16 +22769,16 @@ private class ReduceAction664
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        )
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -22792,16 +22791,16 @@ private class ReduceAction665
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        )
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -22814,16 +22813,16 @@ private class ReduceAction666
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        )
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -22836,16 +22835,16 @@ private class ReduceAction667
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        )
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -22858,16 +22857,16 @@ private class ReduceAction668
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        )
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -22880,16 +22879,16 @@ private class ReduceAction669
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        )
                                                pexprnode2,
                                                ptypenode3
                                        )
@@ -22902,10 +22901,10 @@ private class ReduceAction670
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
 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
                                        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
                                        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
                                        )
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -22937,16 +22936,16 @@ private class ReduceAction672
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        )
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -22959,10 +22958,10 @@ private class ReduceAction673
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
 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
                                        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
                                        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
                                        )
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -22994,16 +22993,16 @@ private class ReduceAction675
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        )
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -23016,16 +23015,16 @@ private class ReduceAction676
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        )
                                                pexprnode2,
                                                pexprnode3
                                        )
@@ -23038,10 +23037,10 @@ private class ReduceAction677
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
 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
                                        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
                                        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
                                        )
                                                tminusnode2,
                                                pexprnode3
                                        )
@@ -23072,15 +23071,15 @@ private class ReduceAction679
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
                                        )
                                                tkwoncenode2,
                                                pexprnode3
                                        )
@@ -23093,10 +23092,10 @@ private class ReduceAction680
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
 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
                                        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
                                        var ptypenode3 = nodearraylist3
-                                       assert ptypenode3 isa PType
-                                       var listnode5 = nodearraylist4 
+                                       assert ptypenode3 isa nullable PType
+                                       var listnode5 = nodearraylist4
                                        assert listnode5 isa Array[Object]
                                        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
                                                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,
                                                tkwnewnode2,
                                                ptypenode3,
                                                null,
@@ -23140,17 +23139,17 @@ private class ReduceAction682
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var pexprnode3 = nodearraylist2
-                                       assert pexprnode3 isa PExpr
+                                       assert pexprnode3 isa nullable PExpr
                                        var tattridnode4 = nodearraylist3
                                        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
                                                tkwissetnode2,
                                                pexprnode3,
                                                tattridnode4
@@ -23164,14 +23163,14 @@ private class ReduceAction683
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tattridnode3 = nodearraylist2
                                        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
                                        )
                                                pexprnode2,
                                                tattridnode3
                                        )
@@ -23184,26 +23183,26 @@ private class ReduceAction684
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var tidnode3 = nodearraylist2
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist3 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist3
                                        assert listnode4 isa Array[Object]
                                        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
                                                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,
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -23218,22 +23217,22 @@ private class ReduceAction685
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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]
                                        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
                                                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
                                                null,
                                                tkwsupernode3,
                                                listnode5
@@ -23247,25 +23246,25 @@ private class ReduceAction686
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var tkwsupernode3 = nodearraylist2
-                                       assert tkwsupernode3 isa TKwsuper
-                                       var listnode4 = nodearraylist3 
+                                       assert tkwsupernode3 isa nullable TKwsuper
+                                       var listnode4 = nodearraylist3
                                        assert listnode4 isa Array[Object]
                                        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
                                                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
                                                pqualifiednode2,
                                                tkwsupernode3,
                                                listnode5
@@ -23279,25 +23278,25 @@ private class ReduceAction687
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var tkwinitnode3 = nodearraylist2
-                                       assert tkwinitnode3 isa TKwinit
-                                       var listnode4 = nodearraylist3 
+                                       assert tkwinitnode3 isa nullable TKwinit
+                                       var listnode4 = nodearraylist3
                                        assert listnode4 isa Array[Object]
                                        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
                                                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
                                                pexprnode2,
                                                tkwinitnode3,
                                                listnode5
@@ -23311,7 +23310,7 @@ private class ReduceAction688
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist1 = p.pop
                                        var listnode6 = new Array[Object]
                                        var tkwnewnode2 = nodearraylist1
-                                       assert tkwnewnode2 isa TKwnew
+                                       assert tkwnewnode2 isa nullable TKwnew
                                        var ptypenode3 = nodearraylist3
                                        var ptypenode3 = nodearraylist3
-                                       assert ptypenode3 isa PType
+                                       assert ptypenode3 isa nullable PType
                                        var tidnode4 = nodearraylist6
                                        var tidnode4 = nodearraylist6
-                                       assert tidnode4 isa TId
-                                       var listnode5 = nodearraylist7 
+                                       assert tidnode4 isa nullable TId
+                                       var listnode5 = nodearraylist7
                                        assert listnode5 isa Array[Object]
                                        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
                                                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,
                                                tkwnewnode2,
                                                ptypenode3,
                                                tidnode4,
@@ -23350,11 +23349,11 @@ private class ReduceAction689
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                                tkwselfnode2
                                        )
                                        node_list = pexprnode1
@@ -23366,11 +23365,11 @@ private class ReduceAction690
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                                tkwtruenode2
                                        )
                                        node_list = pexprnode1
@@ -23382,11 +23381,11 @@ private class ReduceAction691
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                                tkwfalsenode2
                                        )
                                        node_list = pexprnode1
@@ -23398,11 +23397,11 @@ private class ReduceAction692
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                                tkwnullnode2
                                        )
                                        node_list = pexprnode1
@@ -23414,11 +23413,11 @@ private class ReduceAction693
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                                tnumbernode2
                                        )
                                        node_list = pexprnode1
@@ -23430,11 +23429,11 @@ private class ReduceAction694
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                                tfloatnode2
                                        )
                                        node_list = pexprnode1
@@ -23446,11 +23445,11 @@ private class ReduceAction695
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                                tcharnode2
                                        )
                                        node_list = pexprnode1
@@ -23462,11 +23461,11 @@ private class ReduceAction696
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                                tstringnode2
                                        )
                                        node_list = pexprnode1
@@ -23478,10 +23477,10 @@ private class ReduceAction697
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tkwasnode3 = nodearraylist4
                                        var tkwasnode3 = nodearraylist4
-                                       assert tkwasnode3 isa TKwas
+                                       assert tkwasnode3 isa nullable TKwas
                                        var ptypenode4 = nodearraylist8
                                        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
                                                pexprnode2,
                                                tkwasnode3,
                                                ptypenode4
@@ -23522,7 +23521,7 @@ private class ReduceAction699
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        var nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var pexprnode2 = nodearraylist1
-                                       assert pexprnode2 isa PExpr
+                                       assert pexprnode2 isa nullable PExpr
                                        var tkwasnode3 = nodearraylist4
                                        var tkwasnode3 = nodearraylist4
-                                       assert tkwasnode3 isa TKwas
+                                       assert tkwasnode3 isa nullable TKwas
                                        var tkwnotnode4 = nodearraylist8
                                        var tkwnotnode4 = nodearraylist8
-                                       assert tkwnotnode4 isa TKwnot
+                                       assert tkwnotnode4 isa nullable TKwnot
                                        var tkwnullnode5 = nodearraylist10
                                        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,
                                                pexprnode2,
                                                tkwasnode3,
                                                tkwnotnode4,
@@ -23558,12 +23557,12 @@ private class ReduceAction700
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
 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)
                                        )
                                        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
 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
                                        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
                                        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
 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
                                        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
                                        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
                                        var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist5 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
                                        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
                                                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]
                                        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
                                                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,
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -23644,35 +23643,35 @@ private class ReduceAction704
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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
                                        )
                                        var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist2 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
                                        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
                                                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]
                                        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
                                                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,
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -23687,10 +23686,10 @@ private class ReduceAction705
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        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
 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
                                        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
                                        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
                                        var tidnode3 = nodearraylist4
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist5 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist5
                                        assert listnode4 isa Array[Object]
                                        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
                                                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]
                                        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
                                                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,
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -23746,35 +23745,35 @@ private class ReduceAction707
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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
                                        )
                                        var tidnode3 = nodearraylist1
-                                       assert tidnode3 isa TId
-                                       var listnode4 = nodearraylist2 
+                                       assert tidnode3 isa nullable TId
+                                       var listnode4 = nodearraylist2
                                        assert listnode4 isa Array[Object]
                                        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
                                                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]
                                        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
                                                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,
                                                pexprnode2,
                                                tidnode3,
                                                listnode5,
@@ -23789,11 +23788,11 @@ private class ReduceAction708
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        if pimportnode1 != null then
                                                listnode2.add(pimportnode1)
                                        end
@@ -23806,21 +23805,21 @@ private class ReduceAction709
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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 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
                                                if listnode3.is_empty then
                                                        listnode3 = listnode1
                                                else
                                                        listnode3.append(listnode1)
                                                end
-                                       end
+#                                      end
                                        if pimportnode2 != null then
                                                listnode3.add(pimportnode2)
                                        end
                                        if pimportnode2 != null then
                                                listnode3.add(pimportnode2)
                                        end
@@ -23833,11 +23832,11 @@ private class ReduceAction710
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        if pclassdefnode1 != null then
                                                listnode2.add(pclassdefnode1)
                                        end
@@ -23850,21 +23849,21 @@ private class ReduceAction711
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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 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
                                                if listnode3.is_empty then
                                                        listnode3 = listnode1
                                                else
                                                        listnode3.append(listnode1)
                                                end
-                                       end
+#                                      end
                                        if pclassdefnode2 != null then
                                                listnode3.add(pclassdefnode2)
                                        end
                                        if pclassdefnode2 != null then
                                                listnode3.add(pclassdefnode2)
                                        end
@@ -23877,11 +23876,11 @@ private class ReduceAction712
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        if psuperclassnode1 != null then
                                                listnode2.add(psuperclassnode1)
                                        end
@@ -23894,21 +23893,21 @@ private class ReduceAction713
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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 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
                                                if listnode3.is_empty then
                                                        listnode3 = listnode1
                                                else
                                                        listnode3.append(listnode1)
                                                end
-                                       end
+#                                      end
                                        if psuperclassnode2 != null then
                                                listnode3.add(psuperclassnode2)
                                        end
                                        if psuperclassnode2 != null then
                                                listnode3.add(psuperclassnode2)
                                        end
@@ -23921,11 +23920,11 @@ private class ReduceAction714
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        if pformaldefnode1 != null then
                                                listnode2.add(pformaldefnode1)
                                        end
@@ -23938,21 +23937,21 @@ private class ReduceAction715
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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 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
                                                if listnode3.is_empty then
                                                        listnode3 = listnode1
                                                else
                                                        listnode3.append(listnode1)
                                                end
-                                       end
+#                                      end
                                        if pformaldefnode2 != null then
                                                listnode3.add(pformaldefnode2)
                                        end
                                        if pformaldefnode2 != null then
                                                listnode3.add(pformaldefnode2)
                                        end
@@ -23965,11 +23964,11 @@ private class ReduceAction716
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        if ppropdefnode1 != null then
                                                listnode2.add(ppropdefnode1)
                                        end
@@ -23982,21 +23981,21 @@ private class ReduceAction717
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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 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
                                                if listnode3.is_empty then
                                                        listnode3 = listnode1
                                                else
                                                        listnode3.append(listnode1)
                                                end
-                                       end
+#                                      end
                                        if ppropdefnode2 != null then
                                                listnode3.add(ppropdefnode2)
                                        end
                                        if ppropdefnode2 != null then
                                                listnode3.add(ppropdefnode2)
                                        end
@@ -24009,11 +24008,11 @@ private class ReduceAction718
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        if pparamnode1 != null then
                                                listnode2.add(pparamnode1)
                                        end
@@ -24026,21 +24025,21 @@ private class ReduceAction719
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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 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
                                                if listnode3.is_empty then
                                                        listnode3 = listnode1
                                                else
                                                        listnode3.append(listnode1)
                                                end
-                                       end
+#                                      end
                                        if pparamnode2 != null then
                                                listnode3.add(pparamnode2)
                                        end
                                        if pparamnode2 != null then
                                                listnode3.add(pparamnode2)
                                        end
@@ -24053,11 +24052,11 @@ private class ReduceAction720
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        if pclosuredeclnode1 != null then
                                                listnode2.add(pclosuredeclnode1)
                                        end
@@ -24070,21 +24069,21 @@ private class ReduceAction721
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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 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
                                                if listnode3.is_empty then
                                                        listnode3 = listnode1
                                                else
                                                        listnode3.append(listnode1)
                                                end
-                                       end
+#                                      end
                                        if pclosuredeclnode2 != null then
                                                listnode3.add(pclosuredeclnode2)
                                        end
                                        if pclosuredeclnode2 != null then
                                                listnode3.add(pclosuredeclnode2)
                                        end
@@ -24097,11 +24096,11 @@ private class ReduceAction722
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        if ptypenode1 != null then
                                                listnode2.add(ptypenode1)
                                        end
@@ -24114,21 +24113,21 @@ private class ReduceAction723
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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 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
                                                if listnode3.is_empty then
                                                        listnode3 = listnode1
                                                else
                                                        listnode3.append(listnode1)
                                                end
-                                       end
+#                                      end
                                        if ptypenode2 != null then
                                                listnode3.add(ptypenode2)
                                        end
                                        if ptypenode2 != null then
                                                listnode3.add(ptypenode2)
                                        end
@@ -24141,11 +24140,11 @@ private class ReduceAction724
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        if pexprnode1 != null then
                                                listnode2.add(pexprnode1)
                                        end
@@ -24158,21 +24157,21 @@ private class ReduceAction725
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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 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
                                                if listnode3.is_empty then
                                                        listnode3 = listnode1
                                                else
                                                        listnode3.append(listnode1)
                                                end
-                                       end
+#                                      end
                                        if pexprnode2 != null then
                                                listnode3.add(pexprnode2)
                                        end
                                        if pexprnode2 != null then
                                                listnode3.add(pexprnode2)
                                        end
@@ -24185,18 +24184,18 @@ private class ReduceAction726
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 nodearraylist1 = p.pop
                                        var listnode2 = new Array[Object]
-                                       var listnode1 = nodearraylist1 
+                                       var listnode1 = nodearraylist1
                                        assert listnode1 isa Array[Object]
                                        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
                                                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
                                        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
 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 nodearraylist2 = p.pop
                                        var nodearraylist1 = p.pop
                                        var listnode3 = new Array[Object]
-                                       var listnode1 = nodearraylist1 
+                                       var listnode1 = nodearraylist1
                                        assert listnode1 isa Array[Object]
                                        assert listnode1 isa Array[Object]
-                                       var listnode2 = nodearraylist2 
+                                       var listnode2 = nodearraylist2
                                        assert listnode2 isa Array[Object]
                                        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
                                                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
                                                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
                                        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
 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
                                        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
                                        if pexprnode1 != null then
                                                listnode2.add(pexprnode1)
                                        end
@@ -24254,21 +24253,21 @@ private class ReduceAction729
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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 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
                                                if listnode3.is_empty then
                                                        listnode3 = listnode1
                                                else
                                                        listnode3.append(listnode1)
                                                end
-                                       end
+#                                      end
                                        if pexprnode2 != null then
                                                listnode3.add(pexprnode2)
                                        end
                                        if pexprnode2 != null then
                                                listnode3.add(pexprnode2)
                                        end
@@ -24281,11 +24280,11 @@ private class ReduceAction730
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        if tidnode1 != null then
                                                listnode2.add(tidnode1)
                                        end
@@ -24298,21 +24297,21 @@ private class ReduceAction731
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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 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
                                                if listnode3.is_empty then
                                                        listnode3 = listnode1
                                                else
                                                        listnode3.append(listnode1)
                                                end
-                                       end
+#                                      end
                                        if tidnode2 != null then
                                                listnode3.add(tidnode2)
                                        end
                                        if tidnode2 != null then
                                                listnode3.add(tidnode2)
                                        end
@@ -24325,11 +24324,11 @@ private class ReduceAction732
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        if tcommentnode1 != null then
                                                listnode2.add(tcommentnode1)
                                        end
@@ -24342,21 +24341,21 @@ private class ReduceAction733
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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 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
                                                if listnode3.is_empty then
                                                        listnode3 = listnode1
                                                else
                                                        listnode3.append(listnode1)
                                                end
-                                       end
+#                                      end
                                        if tcommentnode2 != null then
                                                listnode3.add(tcommentnode2)
                                        end
                                        if tcommentnode2 != null then
                                                listnode3.add(tcommentnode2)
                                        end
@@ -24369,11 +24368,11 @@ private class ReduceAction734
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        if teolnode1 != null then
                                                listnode2.add(teolnode1)
                                        end
@@ -24386,21 +24385,21 @@ private class ReduceAction735
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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 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
                                                if listnode3.is_empty then
                                                        listnode3 = listnode1
                                                else
                                                        listnode3.append(listnode1)
                                                end
-                                       end
+#                                      end
                                        if teolnode2 != null then
                                                listnode3.add(teolnode2)
                                        end
                                        if teolnode2 != null then
                                                listnode3.add(teolnode2)
                                        end
@@ -24413,11 +24412,11 @@ private class ReduceAction736
 special ReduceAction
        redef meth action(p: Parser)
        do
 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
                                        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
                                        if ppropdefnode1 != null then
                                                listnode2.add(ppropdefnode1)
                                        end
@@ -24430,21 +24429,21 @@ private class ReduceAction737
 special ReduceAction
        redef meth action(p: Parser)
        do
 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 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 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
                                                if listnode3.is_empty then
                                                        listnode3 = listnode1
                                                else
                                                        listnode3.append(listnode1)
                                                end
-                                       end
+#                                      end
                                        if ppropdefnode2 != null then
                                                listnode3.add(ppropdefnode2)
                                        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
 
 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
 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
 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
 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
 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
 end
 class AProtectedVisibility
 special PVisibility
-    readable writable attr _n_kwprotected: TKwprotected = null
+    readable writable attr _n_kwprotected: TKwprotected
 end
 class AIntrudeVisibility
 special PVisibility
 end
 class AIntrudeVisibility
 special PVisibility
-    readable writable attr _n_kwintrude: TKwintrude = null
+    readable writable attr _n_kwintrude: TKwintrude
 end
 class AClassdef
 special PClassdef
 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
 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
 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
 end
 class AConcreteClasskind
 special PClasskind
-    readable writable attr _n_kwclass: TKwclass = null
+    readable writable attr _n_kwclass: TKwclass
 end
 class AAbstractClasskind
 special PClasskind
 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
 end
 class AInterfaceClasskind
 special PClasskind
-    readable writable attr _n_kwinterface: TKwinterface = null
+    readable writable attr _n_kwinterface: TKwinterface
 end
 class AUniversalClasskind
 special PClasskind
 end
 class AUniversalClasskind
 special PClasskind
-    readable writable attr _n_kwuniversal: TKwuniversal = null
+    readable writable attr _n_kwuniversal: TKwuniversal
 end
 class AFormaldef
 special PFormaldef
 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
 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
 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
 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
 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
 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
 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
 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
 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
 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
 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
 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
 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
 end
 class AIdMethid
 special PMethid
-    readable writable attr _n_id: TId = null
+    readable writable attr _n_id: TId
 end
 class APlusMethid
 special PMethid
 end
 class APlusMethid
 special PMethid
-    readable writable attr _n_plus: TPlus = null
+    readable writable attr _n_plus: TPlus
 end
 class AMinusMethid
 special PMethid
 end
 class AMinusMethid
 special PMethid
-    readable writable attr _n_minus: TMinus = null
+    readable writable attr _n_minus: TMinus
 end
 class AStarMethid
 special PMethid
 end
 class AStarMethid
 special PMethid
-    readable writable attr _n_star: TStar = null
+    readable writable attr _n_star: TStar
 end
 class ASlashMethid
 special PMethid
 end
 class ASlashMethid
 special PMethid
-    readable writable attr _n_slash: TSlash = null
+    readable writable attr _n_slash: TSlash
 end
 class APercentMethid
 special PMethid
 end
 class APercentMethid
 special PMethid
-    readable writable attr _n_percent: TPercent = null
+    readable writable attr _n_percent: TPercent
 end
 class AEqMethid
 special PMethid
 end
 class AEqMethid
 special PMethid
-    readable writable attr _n_eq: TEq = null
+    readable writable attr _n_eq: TEq
 end
 class ANeMethid
 special PMethid
 end
 class ANeMethid
 special PMethid
-    readable writable attr _n_ne: TNe = null
+    readable writable attr _n_ne: TNe
 end
 class ALeMethid
 special PMethid
 end
 class ALeMethid
 special PMethid
-    readable writable attr _n_le: TLe = null
+    readable writable attr _n_le: TLe
 end
 class AGeMethid
 special PMethid
 end
 class AGeMethid
 special PMethid
-    readable writable attr _n_ge: TGe = null
+    readable writable attr _n_ge: TGe
 end
 class ALtMethid
 special PMethid
 end
 class ALtMethid
 special PMethid
-    readable writable attr _n_lt: TLt = null
+    readable writable attr _n_lt: TLt
 end
 class AGtMethid
 special PMethid
 end
 class AGtMethid
 special PMethid
-    readable writable attr _n_gt: TGt = null
+    readable writable attr _n_gt: TGt
 end
 class ABraMethid
 special PMethid
 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
 end
 class AStarshipMethid
 special PMethid
-    readable writable attr _n_starship: TStarship = null
+    readable writable attr _n_starship: TStarship
 end
 class AAssignMethid
 special PMethid
 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
 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
 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
 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
 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
 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
 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
 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
 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
 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
 end
 class AAbortExpr
 special PExpr
-    readable writable attr _n_kwabort: TKwabort = null
+    readable writable attr _n_kwabort: TKwabort
 end
 class AContinueExpr
 special PExpr
 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
 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
 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
 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
 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
 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
 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
 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
 end
 class ASendExpr
 special PExpr
-    readable writable attr _n_expr: PExpr = null
+    readable writable attr _n_expr: PExpr
 end
 class ABinopExpr
 special 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
 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
 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
 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
 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
 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
 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
 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
 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
 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
 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
 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
 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
 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
 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
 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
 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
 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
 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
 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
 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
 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
 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
 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
 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
 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
 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
 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
 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
 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
 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
 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
 end
 class AVarExpr
 special PExpr
-    readable writable attr _n_id: TId = null
+    readable writable attr _n_id: TId
 end
 class AVarAssignExpr
 special PExpr
 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
 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
 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
 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
 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
 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
 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
 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
 end
 class AFalseExpr
 special PExpr
-    readable writable attr _n_kwfalse: TKwfalse = null
+    readable writable attr _n_kwfalse: TKwfalse
 end
 class ANullExpr
 special PExpr
 end
 class ANullExpr
 special PExpr
-    readable writable attr _n_kwnull: TKwnull = null
+    readable writable attr _n_kwnull: TKwnull
 end
 class AIntExpr
 special PExpr
 end
 class AIntExpr
 special PExpr
-    readable writable attr _n_number: TNumber = null
+    readable writable attr _n_number: TNumber
 end
 class AFloatExpr
 special PExpr
 end
 class AFloatExpr
 special PExpr
-    readable writable attr _n_float: TFloat = null
+    readable writable attr _n_float: TFloat
 end
 class ACharExpr
 special PExpr
 end
 class ACharExpr
 special PExpr
-    readable writable attr _n_char: TChar = null
+    readable writable attr _n_char: TChar
 end
 class AStringExpr
 special PExpr
 end
 class AStringExpr
 special PExpr
-    readable writable attr _n_string: TString = null
+    readable writable attr _n_string: TString
 end
 class AStartStringExpr
 special PExpr
 end
 class AStartStringExpr
 special PExpr
-    readable writable attr _n_string: TStartString = null
+    readable writable attr _n_string: TStartString
 end
 class AMidStringExpr
 special PExpr
 end
 class AMidStringExpr
 special PExpr
-    readable writable attr _n_string: TMidString = null
+    readable writable attr _n_string: TMidString
 end
 class AEndStringExpr
 special PExpr
 end
 class AEndStringExpr
 special PExpr
-    readable writable attr _n_string: TEndString = null
+    readable writable attr _n_string: TEndString
 end
 class ASuperstringExpr
 special PExpr
 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
 end
 class AParExpr
 special PExpr
-    readable writable attr _n_expr: PExpr = null
+    readable writable attr _n_expr: PExpr
 end
 class AAsCastExpr
 special 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
 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
 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
 end
 class APlusAssignOp
 special PAssignOp
-    readable writable attr _n_pluseq: TPluseq = null
+    readable writable attr _n_pluseq: TPluseq
 end
 class AMinusAssignOp
 special PAssignOp
 end
 class AMinusAssignOp
 special PAssignOp
-    readable writable attr _n_minuseq: TMinuseq = null
+    readable writable attr _n_minuseq: TMinuseq
 end
 class AClosureDef
 special PClosureDef
 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
 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
 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
 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
     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 
 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
 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
 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
 end
 class PClosureDecl special Prod end
 class PType special Prod end
@@ -313,365 +313,365 @@ class PDoc special Prod end
 
 class AModule
 special PModule
 
 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
 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
 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
 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
 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
 end
 class AProtectedVisibility
 special PVisibility
-    readable writable attr _n_kwprotected: TKwprotected = null
+    readable writable attr _n_kwprotected: TKwprotected
 end
 class AIntrudeVisibility
 special PVisibility
 end
 class AIntrudeVisibility
 special PVisibility
-    readable writable attr _n_kwintrude: TKwintrude = null
+    readable writable attr _n_kwintrude: TKwintrude
 end
 class AClassdef
 special PClassdef
 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
 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
 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
 end
 class AConcreteClasskind
 special PClasskind
-    readable writable attr _n_kwclass: TKwclass = null
+    readable writable attr _n_kwclass: TKwclass
 end
 class AAbstractClasskind
 special PClasskind
 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
 end
 class AInterfaceClasskind
 special PClasskind
-    readable writable attr _n_kwinterface: TKwinterface = null
+    readable writable attr _n_kwinterface: TKwinterface
 end
 class AUniversalClasskind
 special PClasskind
 end
 class AUniversalClasskind
 special PClasskind
-    readable writable attr _n_kwuniversal: TKwuniversal = null
+    readable writable attr _n_kwuniversal: TKwuniversal
 end
 class AFormaldef
 special PFormaldef
 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
 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
 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
 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
 end
 class ADeferredMethPropdef
 special AMethPropdef
-    readable writable attr _n_kwmeth: TKwmeth = null
+    readable writable attr _n_kwmeth: TKwmeth
 end
 class AInternMethPropdef
 special AMethPropdef
 end
 class AInternMethPropdef
 special AMethPropdef
-    readable writable attr _n_kwmeth: TKwmeth = null
+    readable writable attr _n_kwmeth: TKwmeth
 end
 class AExternMethPropdef
 special AMethPropdef
 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
 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
 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
 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
 end
 class AReadAble
 special PAble
-    readable writable attr _n_kwreadable: TKwreadable = null
+    readable writable attr _n_kwreadable: TKwreadable
 end
 class AWriteAble
 special PAble
 end
 class AWriteAble
 special PAble
-    readable writable attr _n_kwwritable: TKwwritable = null
+    readable writable attr _n_kwwritable: TKwwritable
 end
 class AIdMethid
 special PMethid
 end
 class AIdMethid
 special PMethid
-    readable writable attr _n_id: TId = null
+    readable writable attr _n_id: TId
 end
 class APlusMethid
 special PMethid
 end
 class APlusMethid
 special PMethid
-    readable writable attr _n_plus: TPlus = null
+    readable writable attr _n_plus: TPlus
 end
 class AMinusMethid
 special PMethid
 end
 class AMinusMethid
 special PMethid
-    readable writable attr _n_minus: TMinus = null
+    readable writable attr _n_minus: TMinus
 end
 class AStarMethid
 special PMethid
 end
 class AStarMethid
 special PMethid
-    readable writable attr _n_star: TStar = null
+    readable writable attr _n_star: TStar
 end
 class ASlashMethid
 special PMethid
 end
 class ASlashMethid
 special PMethid
-    readable writable attr _n_slash: TSlash = null
+    readable writable attr _n_slash: TSlash
 end
 class APercentMethid
 special PMethid
 end
 class APercentMethid
 special PMethid
-    readable writable attr _n_percent: TPercent = null
+    readable writable attr _n_percent: TPercent
 end
 class AEqMethid
 special PMethid
 end
 class AEqMethid
 special PMethid
-    readable writable attr _n_eq: TEq = null
+    readable writable attr _n_eq: TEq
 end
 class ANeMethid
 special PMethid
 end
 class ANeMethid
 special PMethid
-    readable writable attr _n_ne: TNe = null
+    readable writable attr _n_ne: TNe
 end
 class ALeMethid
 special PMethid
 end
 class ALeMethid
 special PMethid
-    readable writable attr _n_le: TLe = null
+    readable writable attr _n_le: TLe
 end
 class AGeMethid
 special PMethid
 end
 class AGeMethid
 special PMethid
-    readable writable attr _n_ge: TGe = null
+    readable writable attr _n_ge: TGe
 end
 class ALtMethid
 special PMethid
 end
 class ALtMethid
 special PMethid
-    readable writable attr _n_lt: TLt = null
+    readable writable attr _n_lt: TLt
 end
 class AGtMethid
 special PMethid
 end
 class AGtMethid
 special PMethid
-    readable writable attr _n_gt: TGt = null
+    readable writable attr _n_gt: TGt
 end
 class ABraMethid
 special PMethid
 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
 end
 class AStarshipMethid
 special PMethid
-    readable writable attr _n_starship: TStarship = null
+    readable writable attr _n_starship: TStarship
 end
 class AAssignMethid
 special PMethid
 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
 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
 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
 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
 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
 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
 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
 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
 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
 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
 end
 class AAbortExpr
 special PExpr
-    readable writable attr _n_kwabort: TKwabort = null
+    readable writable attr _n_kwabort: TKwabort
 end
 class AContinueExpr
 special PExpr
 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
 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
 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
 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
 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
 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
 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
 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
 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
 end
 class AOnceExpr
 special AProxyExpr
-    readable writable attr _n_kwonce: TKwonce = null
+    readable writable attr _n_kwonce: TKwonce
 end
 class ASendExpr
 special PExpr
 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
 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
 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
 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
 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
 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
 end
 class ANeExpr
 special ABinopExpr
@@ -690,8 +690,8 @@ special ABinopExpr
 end
 class AIsaExpr
 special ABoolExpr
 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
 end
 class APlusExpr
 special ABinopExpr
@@ -713,31 +713,31 @@ special ABinopExpr
 end
 class AUminusExpr
 special ASendExpr
 end
 class AUminusExpr
 special ASendExpr
-    readable writable attr _n_minus: TMinus = null
+    readable writable attr _n_minus: TMinus
 end
 class ANewExpr
 special 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 AAttrFormExpr
 special 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
 end
 class AAttrExpr
 special AAttrFormExpr
 end
 class AAttrAssignExpr
-special AAttrFormExpr 
-special AAssignFormExpr 
+special AAttrFormExpr
+special AAssignFormExpr
 end
 class ACallFormExpr
 special ASendExpr
 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
 end
 class AAttrReassignExpr
 special PExpr
@@ -758,18 +758,18 @@ special AReassignFormExpr
 end
 class ASuperExpr
 special 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 ASendExpr
 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
 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
 end
 class ABraExpr
 special ABraFormExpr
@@ -780,7 +780,7 @@ special AAssignFormExpr
 end
 class AVarFormExpr
 special PExpr
 end
 class AVarFormExpr
 special PExpr
-    readable writable attr _n_id: TId = null 
+    readable writable attr _n_id: TId
 end
 class ABraReassignExpr
 special ABraFormExpr
 end
 class ABraReassignExpr
 special ABraFormExpr
@@ -788,9 +788,9 @@ special AReassignFormExpr
 end
 class AClosureCallExpr
 special 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 AVarFormExpr
 end
 class AVarExpr
 special AVarFormExpr
@@ -805,8 +805,8 @@ special AReassignFormExpr
 end
 class ARangeExpr
 special 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 ARangeExpr
 end
 class ACrangeExpr
 special ARangeExpr
@@ -816,113 +816,113 @@ special ARangeExpr
 end
 class AArrayExpr
 special 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
 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
 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
 end
 class AFalseExpr
 special ABoolExpr
-    readable writable attr _n_kwfalse: TKwfalse = null
+    readable writable attr _n_kwfalse: TKwfalse
 end
 class ANullExpr
 special PExpr
 end
 class ANullExpr
 special PExpr
-    readable writable attr _n_kwnull: TKwnull = null
+    readable writable attr _n_kwnull: TKwnull
 end
 class AIntExpr
 special PExpr
 end
 class AIntExpr
 special PExpr
-    readable writable attr _n_number: TNumber = null
+    readable writable attr _n_number: TNumber
 end
 class AFloatExpr
 special PExpr
 end
 class AFloatExpr
 special PExpr
-    readable writable attr _n_float: TFloat = null
+    readable writable attr _n_float: TFloat
 end
 class ACharExpr
 special PExpr
 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
 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
 end
 class AStartStringExpr
 special AStringFormExpr
-    readable writable attr _n_string: TStartString = null
+    readable writable attr _n_string: TStartString
 end
 class AMidStringExpr
 special AStringFormExpr
 end
 class AMidStringExpr
 special AStringFormExpr
-    readable writable attr _n_string: TMidString = null
+    readable writable attr _n_string: TMidString
 end
 class AEndStringExpr
 special AStringFormExpr
 end
 class AEndStringExpr
 special AStringFormExpr
-    readable writable attr _n_string: TEndString = null
+    readable writable attr _n_string: TEndString
 end
 class ASuperstringExpr
 special PExpr
 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
 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
 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
 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
 end
 class AIssetAttrExpr
 special AAttrFormExpr
-    readable writable attr _n_kwisset: TKwisset = null
+    readable writable attr _n_kwisset: TKwisset
 end
 class APlusAssignOp
 special PAssignOp
 end
 class APlusAssignOp
 special PAssignOp
-    readable writable attr _n_pluseq: TPluseq = null
+    readable writable attr _n_pluseq: TPluseq
 end
 class AMinusAssignOp
 special PAssignOp
 end
 class AMinusAssignOp
 special PAssignOp
-    readable writable attr _n_minuseq: TMinuseq = null
+    readable writable attr _n_minuseq: TMinuseq
 end
 class AClosureDef
 special PClosureDef
 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
 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
 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
 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
     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
 
 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)
 
        # 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
        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)
 
        # 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 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
 
        redef meth locate: String
        do
@@ -62,10 +62,10 @@ end
 
 redef class Prod
        # The first token of the production node
 
 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
 
        # 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
 
        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.
         # 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
 end
 
 redef class AModule
-    redef meth n_packagedecl=(n: PPackagedecl)
+    redef meth n_packagedecl=(n)
     do
         _n_packagedecl = n
         if n != null then
     do
         _n_packagedecl = n
         if n != null then
@@ -121,7 +121,7 @@ redef class AModule
     private init empty_init do end
 
     init init_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]
     )
             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
        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
        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)
        for n in n_classdefs do
                assert n isa PClassdef
                _n_classdefs.add(n)
@@ -145,9 +143,8 @@ redef class AModule
        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
     do
-        assert old_child != null
         if _n_packagedecl == old_child then
             if new_child != null then
                 new_child.parent = self
         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
     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)
         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
     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
         end
        do
            var i = _n_imports.length
@@ -219,34 +216,30 @@ redef class AModule
     end
 end
 redef class APackagedecl
     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
     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
     do
         _n_kwpackage = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_id=(n: TId)
+    redef meth n_id=(n)
     do
         _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 (
     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
     )
     do
         empty_init
@@ -254,19 +247,14 @@ redef class APackagedecl
        if n_doc != null then
                n_doc.parent = self
        end
        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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     do
-        assert old_child != null
         if _n_doc == old_child then
             if new_child != null then
                 new_child.parent = self
         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
                assert new_child isa TKwpackage
                 _n_kwpackage = new_child
            else
-               _n_kwpackage = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -293,7 +281,7 @@ redef class APackagedecl
                assert new_child isa TId
                 _n_id = new_child
            else
                assert new_child isa TId
                 _n_id = new_child
            else
-               _n_id = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -302,85 +290,64 @@ redef class APackagedecl
     redef meth visit_all(v: Visitor)
     do
         if _n_doc != null then
     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
         end
+        v.visit(_n_kwpackage)
+        v.visit(_n_id)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
         if _n_doc != null then
     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
         end
+        v.visit(_n_kwpackage)
+        v.visit(_n_id)
     end
 end
 redef class AImport
     end
 end
 redef class AImport
-    redef meth n_visibility=(n: PVisibility)
+    redef meth n_visibility=(n)
     do
         _n_visibility = n
     do
         _n_visibility = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_kwimport=(n: TKwimport)
+    redef meth n_kwimport=(n)
     do
         _n_kwimport = n
     do
         _n_kwimport = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_id=(n: TId)
+    redef meth n_id=(n)
     do
         _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 (
     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
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -390,7 +357,7 @@ redef class AImport
                assert new_child isa TKwimport
                 _n_kwimport = new_child
            else
                assert new_child isa TKwimport
                 _n_kwimport = new_child
            else
-               _n_kwimport = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -400,7 +367,7 @@ redef class AImport
                assert new_child isa TId
                 _n_id = new_child
            else
                assert new_child isa TId
                 _n_id = new_child
            else
-               _n_id = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -408,86 +375,61 @@ redef class AImport
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class ANoImport
-    redef meth n_visibility=(n: PVisibility)
+    redef meth n_visibility=(n)
     do
         _n_visibility = n
     do
         _n_visibility = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_kwimport=(n: TKwimport)
+    redef meth n_kwimport=(n)
     do
         _n_kwimport = n
     do
         _n_kwimport = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_kwend=(n: TKwend)
+    redef meth n_kwend=(n)
     do
         _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 (
     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
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -497,7 +439,7 @@ redef class ANoImport
                assert new_child isa TKwimport
                 _n_kwimport = new_child
            else
                assert new_child isa TKwimport
                 _n_kwimport = new_child
            else
-               _n_kwimport = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -507,7 +449,7 @@ redef class ANoImport
                assert new_child isa TKwend
                 _n_kwend = new_child
            else
                assert new_child isa TKwend
                 _n_kwend = new_child
            else
-               _n_kwend = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -515,28 +457,16 @@ redef class ANoImport
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class APublicVisibility
@@ -548,9 +478,8 @@ redef class APublicVisibility
         empty_init
     end
 
         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
     do
-        assert old_child != null
     end
 
     redef meth visit_all(v: Visitor)
     end
 
     redef meth visit_all(v: Visitor)
@@ -562,37 +491,32 @@ redef class APublicVisibility
     end
 end
 redef class APrivateVisibility
     end
 end
 redef class APrivateVisibility
-    redef meth n_kwprivate=(n: TKwprivate)
+    redef meth n_kwprivate=(n)
     do
         _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 (
     end
 
     private init empty_init do end
 
     init init_aprivatevisibility (
-            n_kwprivate: TKwprivate 
+            n_kwprivate: nullable TKwprivate 
     )
     do
         empty_init
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -600,50 +524,41 @@ redef class APrivateVisibility
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class AProtectedVisibility
-    redef meth n_kwprotected=(n: TKwprotected)
+    redef meth n_kwprotected=(n)
     do
         _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 (
     end
 
     private init empty_init do end
 
     init init_aprotectedvisibility (
-            n_kwprotected: TKwprotected 
+            n_kwprotected: nullable TKwprotected 
     )
     do
         empty_init
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -651,50 +566,41 @@ redef class AProtectedVisibility
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class AIntrudeVisibility
-    redef meth n_kwintrude=(n: TKwintrude)
+    redef meth n_kwintrude=(n)
     do
         _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 (
     end
 
     private init empty_init do end
 
     init init_aintrudevisibility (
-            n_kwintrude: TKwintrude 
+            n_kwintrude: nullable TKwintrude 
     )
     do
         empty_init
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -702,48 +608,40 @@ redef class AIntrudeVisibility
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     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
     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
     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
     do
         _n_visibility = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_classkind=(n: PClasskind)
+    redef meth n_classkind=(n)
     do
         _n_classkind = n
     do
         _n_classkind = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_id=(n: TClassid)
+    redef meth n_id=(n)
     do
         _n_id = n
         if n != null then
     do
         _n_id = n
         if n != null then
@@ -754,11 +652,11 @@ redef class AClassdef
     private init empty_init do end
 
     init init_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]
             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
        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_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
        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
        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)
        for n in n_propdefs do
                assert n isa PPropdef
                _n_propdefs.add(n)
@@ -805,9 +696,8 @@ redef class AClassdef
        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
     do
-        assert old_child != null
         if _n_doc == old_child then
             if new_child != null then
                 new_child.parent = self
         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
                assert new_child isa PVisibility
                 _n_visibility = new_child
            else
-               _n_visibility = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -844,7 +734,7 @@ redef class AClassdef
                assert new_child isa PClasskind
                 _n_classkind = new_child
            else
                assert new_child isa PClasskind
                 _n_classkind = new_child
            else
-               _n_classkind = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -899,19 +789,15 @@ redef class AClassdef
     redef meth visit_all(v: Visitor)
     do
         if _n_doc != null then
     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
         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
         end
+        v.visit(_n_visibility)
+        v.visit(_n_classkind)
         if _n_id != null then
         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)
         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
     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
         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
         end
+        v.visit(_n_visibility)
+        v.visit(_n_classkind)
         if _n_id != null then
         if _n_id != null then
-            v.visit(_n_id)
+            v.visit(_n_id.as(not null))
         end
        do
            var i = _n_formaldefs.length
         end
        do
            var i = _n_formaldefs.length
@@ -973,7 +855,6 @@ redef class ATopClassdef
     )
     do
         empty_init
     )
     do
         empty_init
-        _n_propdefs = new List[PPropdef]
        for n in n_propdefs do
                assert n isa PPropdef
                _n_propdefs.add(n)
        for n in n_propdefs do
                assert n isa PPropdef
                _n_propdefs.add(n)
@@ -981,9 +862,8 @@ redef class ATopClassdef
        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
     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
         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
     )
     do
         empty_init
-        _n_propdefs = new List[PPropdef]
        for n in n_propdefs do
                assert n isa PPropdef
                _n_propdefs.add(n)
        for n in n_propdefs do
                assert n isa PPropdef
                _n_propdefs.add(n)
@@ -1033,9 +912,8 @@ redef class AMainClassdef
        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
     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
         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
     end
 end
 redef class AConcreteClasskind
-    redef meth n_kwclass=(n: TKwclass)
+    redef meth n_kwclass=(n)
     do
         _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 (
     end
 
     private init empty_init do end
 
     init init_aconcreteclasskind (
-            n_kwclass: TKwclass 
+            n_kwclass: nullable TKwclass 
     )
     do
         empty_init
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -1107,62 +980,49 @@ redef class AConcreteClasskind
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class AAbstractClasskind
-    redef meth n_kwabstract=(n: TKwabstract)
+    redef meth n_kwabstract=(n)
     do
         _n_kwabstract = n
     do
         _n_kwabstract = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_kwclass=(n: TKwclass)
+    redef meth n_kwclass=(n)
     do
         _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 (
     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
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -1172,7 +1032,7 @@ redef class AAbstractClasskind
                assert new_child isa TKwclass
                 _n_kwclass = new_child
            else
                assert new_child isa TKwclass
                 _n_kwclass = new_child
            else
-               _n_kwclass = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -1180,56 +1040,43 @@ redef class AAbstractClasskind
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class AInterfaceClasskind
-    redef meth n_kwinterface=(n: TKwinterface)
+    redef meth n_kwinterface=(n)
     do
         _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 (
     end
 
     private init empty_init do end
 
     init init_ainterfaceclasskind (
-            n_kwinterface: TKwinterface 
+            n_kwinterface: nullable TKwinterface 
     )
     do
         empty_init
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -1237,50 +1084,41 @@ redef class AInterfaceClasskind
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class AUniversalClasskind
-    redef meth n_kwuniversal=(n: TKwuniversal)
+    redef meth n_kwuniversal=(n)
     do
         _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 (
     end
 
     private init empty_init do end
 
     init init_auniversalclasskind (
-            n_kwuniversal: TKwuniversal 
+            n_kwuniversal: nullable TKwuniversal 
     )
     do
         empty_init
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -1288,27 +1126,21 @@ redef class AUniversalClasskind
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class AFormaldef
-    redef meth n_id=(n: TClassid)
+    redef meth n_id=(n)
     do
         _n_id = n
     do
         _n_id = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_type=(n: PType)
+    redef meth n_type=(n)
     do
         _n_type = n
         if n != null then
     do
         _n_type = n
         if n != null then
@@ -1319,31 +1151,28 @@ redef class AFormaldef
     private init empty_init do end
 
     init init_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
     )
     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
 
         _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
     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
         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
             end
             return
        end
@@ -1361,68 +1190,55 @@ redef class AFormaldef
 
     redef meth visit_all(v: Visitor)
     do
 
     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
         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
         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
         if _n_type != null then
-            v.visit(_n_type)
+            v.visit(_n_type.as(not null))
         end
     end
 end
 redef class ASuperclass
         end
     end
 end
 redef class ASuperclass
-    redef meth n_kwspecial=(n: TKwspecial)
+    redef meth n_kwspecial=(n)
     do
         _n_kwspecial = n
     do
         _n_kwspecial = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_type=(n: PType)
+    redef meth n_type=(n)
     do
         _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 (
     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
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -1432,7 +1248,7 @@ redef class ASuperclass
                assert new_child isa PType
                 _n_type = new_child
            else
                assert new_child isa PType
                 _n_type = new_child
            else
-               _n_type = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -1440,89 +1256,77 @@ redef class ASuperclass
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     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
     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
     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
     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
     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
     do
         _n_visibility = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     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
     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
     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
     do
         _n_id = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     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
     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
     do
         _n_expr = n
         if n != null then
@@ -1533,16 +1337,16 @@ redef class AAttrPropdef
     private init empty_init do end
 
     init init_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
     )
     do
         empty_init
@@ -1562,10 +1366,8 @@ redef class AAttrPropdef
        if n_kwredef != null then
                n_kwredef.parent = self
        end
        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
         _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
        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
         _n_type = n_type
        if n_type != null then
                n_type.parent = self
@@ -1588,9 +1388,8 @@ redef class AAttrPropdef
        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
     do
-        assert old_child != null
         if _n_doc == old_child then
             if new_child != null then
                 new_child.parent = self
         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
                assert new_child isa PVisibility
                 _n_visibility = new_child
            else
-               _n_visibility = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -1667,7 +1466,7 @@ redef class AAttrPropdef
                assert new_child isa TAttrid
                 _n_id = new_child
            else
                assert new_child isa TAttrid
                 _n_id = new_child
            else
-               _n_id = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -1696,116 +1495,102 @@ redef class AAttrPropdef
     redef meth visit_all(v: Visitor)
     do
         if _n_doc != null then
     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
         end
         if _n_readable != null then
-            v.visit(_n_readable)
+            v.visit(_n_readable.as(not null))
         end
         if _n_writable != null then
         end
         if _n_writable != null then
-            v.visit(_n_writable)
+            v.visit(_n_writable.as(not null))
         end
         if _n_kwredef != null then
         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
         end
+        v.visit(_n_visibility)
         if _n_kwattr != null then
         if _n_kwattr != null then
-            v.visit(_n_kwattr)
+            v.visit(_n_kwattr.as(not null))
         end
         if _n_kwvar != null then
         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
         end
+        v.visit(_n_id)
         if _n_type != null then
         if _n_type != null then
-            v.visit(_n_type)
+            v.visit(_n_type.as(not null))
         end
         if _n_expr != null then
         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
         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
         end
         if _n_readable != null then
-            v.visit(_n_readable)
+            v.visit(_n_readable.as(not null))
         end
         if _n_writable != null then
         end
         if _n_writable != null then
-            v.visit(_n_writable)
+            v.visit(_n_writable.as(not null))
         end
         if _n_kwredef != null then
         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
         end
+        v.visit(_n_visibility)
         if _n_kwattr != null then
         if _n_kwattr != null then
-            v.visit(_n_kwattr)
+            v.visit(_n_kwattr.as(not null))
         end
         if _n_kwvar != null then
         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
         end
+        v.visit(_n_id)
         if _n_type != null then
         if _n_type != null then
-            v.visit(_n_type)
+            v.visit(_n_type.as(not null))
         end
         if _n_expr != null then
         end
         if _n_expr != null then
-            v.visit(_n_expr)
+            v.visit(_n_expr.as(not null))
         end
     end
 end
 redef class AMethPropdef
         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
     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
     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
     do
         _n_visibility = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_methid=(n: PMethid)
+    redef meth n_methid=(n)
     do
         _n_methid = n
     do
         _n_methid = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_signature=(n: PSignature)
+    redef meth n_signature=(n)
     do
         _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 (
     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
     )
     do
         empty_init
@@ -1817,23 +1602,16 @@ redef class AMethPropdef
        if n_kwredef != null then
                n_kwredef.parent = self
        end
        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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     do
-        assert old_child != null
         if _n_doc == old_child then
             if new_child != null then
                 new_child.parent = self
         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
                assert new_child isa PVisibility
                 _n_visibility = new_child
            else
-               _n_visibility = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -1870,7 +1648,7 @@ redef class AMethPropdef
                assert new_child isa PMethid
                 _n_methid = new_child
            else
                assert new_child isa PMethid
                 _n_methid = new_child
            else
-               _n_methid = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -1880,7 +1658,7 @@ redef class AMethPropdef
                assert new_child isa PSignature
                 _n_signature = new_child
            else
                assert new_child isa PSignature
                 _n_signature = new_child
            else
-               _n_signature = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -1889,94 +1667,74 @@ redef class AMethPropdef
     redef meth visit_all(v: Visitor)
     do
         if _n_doc != null then
     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
         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
         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
     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
         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
         end
+        v.visit(_n_visibility)
+        v.visit(_n_methid)
+        v.visit(_n_signature)
     end
 end
 redef class ADeferredMethPropdef
     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
     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
     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
     do
         _n_visibility = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_kwmeth=(n: TKwmeth)
+    redef meth n_kwmeth=(n)
     do
         _n_kwmeth = n
     do
         _n_kwmeth = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_methid=(n: PMethid)
+    redef meth n_methid=(n)
     do
         _n_methid = n
     do
         _n_methid = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_signature=(n: PSignature)
+    redef meth n_signature=(n)
     do
         _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 (
     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
     )
     do
         empty_init
@@ -1988,27 +1746,18 @@ redef class ADeferredMethPropdef
        if n_kwredef != null then
                n_kwredef.parent = self
        end
        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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     do
-        assert old_child != null
         if _n_doc == old_child then
             if new_child != null then
                 new_child.parent = self
         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
                assert new_child isa PVisibility
                 _n_visibility = new_child
            else
-               _n_visibility = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -2045,7 +1794,7 @@ redef class ADeferredMethPropdef
                assert new_child isa TKwmeth
                 _n_kwmeth = new_child
            else
                assert new_child isa TKwmeth
                 _n_kwmeth = new_child
            else
-               _n_kwmeth = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -2055,7 +1804,7 @@ redef class ADeferredMethPropdef
                assert new_child isa PMethid
                 _n_methid = new_child
            else
                assert new_child isa PMethid
                 _n_methid = new_child
            else
-               _n_methid = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -2065,7 +1814,7 @@ redef class ADeferredMethPropdef
                assert new_child isa PSignature
                 _n_signature = new_child
            else
                assert new_child isa PSignature
                 _n_signature = new_child
            else
-               _n_signature = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -2074,100 +1823,76 @@ redef class ADeferredMethPropdef
     redef meth visit_all(v: Visitor)
     do
         if _n_doc != null then
     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
         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
         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
     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
         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
         end
+        v.visit(_n_visibility)
+        v.visit(_n_kwmeth)
+        v.visit(_n_methid)
+        v.visit(_n_signature)
     end
 end
 redef class AInternMethPropdef
     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
     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
     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
     do
         _n_visibility = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_kwmeth=(n: TKwmeth)
+    redef meth n_kwmeth=(n)
     do
         _n_kwmeth = n
     do
         _n_kwmeth = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_methid=(n: PMethid)
+    redef meth n_methid=(n)
     do
         _n_methid = n
     do
         _n_methid = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_signature=(n: PSignature)
+    redef meth n_signature=(n)
     do
         _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 (
     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
     )
     do
         empty_init
@@ -2179,27 +1904,18 @@ redef class AInternMethPropdef
        if n_kwredef != null then
                n_kwredef.parent = self
        end
        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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     do
-        assert old_child != null
         if _n_doc == old_child then
             if new_child != null then
                 new_child.parent = self
         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
                assert new_child isa PVisibility
                 _n_visibility = new_child
            else
-               _n_visibility = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -2236,7 +1952,7 @@ redef class AInternMethPropdef
                assert new_child isa TKwmeth
                 _n_kwmeth = new_child
            else
                assert new_child isa TKwmeth
                 _n_kwmeth = new_child
            else
-               _n_kwmeth = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -2246,7 +1962,7 @@ redef class AInternMethPropdef
                assert new_child isa PMethid
                 _n_methid = new_child
            else
                assert new_child isa PMethid
                 _n_methid = new_child
            else
-               _n_methid = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -2256,7 +1972,7 @@ redef class AInternMethPropdef
                assert new_child isa PSignature
                 _n_signature = new_child
            else
                assert new_child isa PSignature
                 _n_signature = new_child
            else
-               _n_signature = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -2265,91 +1981,67 @@ redef class AInternMethPropdef
     redef meth visit_all(v: Visitor)
     do
         if _n_doc != null then
     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
         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
         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
     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
         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
         end
+        v.visit(_n_visibility)
+        v.visit(_n_kwmeth)
+        v.visit(_n_methid)
+        v.visit(_n_signature)
     end
 end
 redef class AExternMethPropdef
     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
     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
     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
     do
         _n_visibility = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_kwmeth=(n: TKwmeth)
+    redef meth n_kwmeth=(n)
     do
         _n_kwmeth = n
     do
         _n_kwmeth = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_methid=(n: PMethid)
+    redef meth n_methid=(n)
     do
         _n_methid = n
     do
         _n_methid = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_signature=(n: PSignature)
+    redef meth n_signature=(n)
     do
         _n_signature = n
     do
         _n_signature = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_extern=(n: TString)
+    redef meth n_extern=(n)
     do
         _n_extern = n
         if n != null then
     do
         _n_extern = n
         if n != null then
@@ -2360,13 +2052,13 @@ redef class AExternMethPropdef
     private init empty_init do end
 
     init init_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
     )
     do
         empty_init
@@ -2378,31 +2070,22 @@ redef class AExternMethPropdef
        if n_kwredef != null then
                n_kwredef.parent = self
        end
        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
 
         _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
     do
-        assert old_child != null
         if _n_doc == old_child then
             if new_child != null then
                 new_child.parent = self
         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
                assert new_child isa PVisibility
                 _n_visibility = new_child
            else
-               _n_visibility = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -2439,7 +2122,7 @@ redef class AExternMethPropdef
                assert new_child isa TKwmeth
                 _n_kwmeth = new_child
            else
                assert new_child isa TKwmeth
                 _n_kwmeth = new_child
            else
-               _n_kwmeth = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -2449,7 +2132,7 @@ redef class AExternMethPropdef
                assert new_child isa PMethid
                 _n_methid = new_child
            else
                assert new_child isa PMethid
                 _n_methid = new_child
            else
-               _n_methid = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -2459,7 +2142,7 @@ redef class AExternMethPropdef
                assert new_child isa PSignature
                 _n_signature = new_child
            else
                assert new_child isa PSignature
                 _n_signature = new_child
            else
-               _n_signature = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -2478,97 +2161,73 @@ redef class AExternMethPropdef
     redef meth visit_all(v: Visitor)
     do
         if _n_doc != null then
     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
         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
         end
+        v.visit(_n_visibility)
+        v.visit(_n_kwmeth)
+        v.visit(_n_methid)
+        v.visit(_n_signature)
         if _n_extern != null then
         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
         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
         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
         end
+        v.visit(_n_visibility)
+        v.visit(_n_kwmeth)
+        v.visit(_n_methid)
+        v.visit(_n_signature)
         if _n_extern != null then
         if _n_extern != null then
-            v.visit(_n_extern)
+            v.visit(_n_extern.as(not null))
         end
     end
 end
 redef class AConcreteMethPropdef
         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
     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
     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
     do
         _n_visibility = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_kwmeth=(n: TKwmeth)
+    redef meth n_kwmeth=(n)
     do
         _n_kwmeth = n
     do
         _n_kwmeth = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_methid=(n: PMethid)
+    redef meth n_methid=(n)
     do
         _n_methid = n
     do
         _n_methid = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_signature=(n: PSignature)
+    redef meth n_signature=(n)
     do
         _n_signature = n
     do
         _n_signature = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_block=(n: PExpr)
+    redef meth n_block=(n)
     do
         _n_block = n
         if n != null then
     do
         _n_block = n
         if n != null then
@@ -2579,13 +2238,13 @@ redef class AConcreteMethPropdef
     private init empty_init do end
 
     init init_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
     )
     do
         empty_init
@@ -2597,31 +2256,22 @@ redef class AConcreteMethPropdef
        if n_kwredef != null then
                n_kwredef.parent = self
        end
        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
 
         _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
     do
-        assert old_child != null
         if _n_doc == old_child then
             if new_child != null then
                 new_child.parent = self
         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
                assert new_child isa PVisibility
                 _n_visibility = new_child
            else
-               _n_visibility = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -2658,7 +2308,7 @@ redef class AConcreteMethPropdef
                assert new_child isa TKwmeth
                 _n_kwmeth = new_child
            else
                assert new_child isa TKwmeth
                 _n_kwmeth = new_child
            else
-               _n_kwmeth = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -2668,7 +2318,7 @@ redef class AConcreteMethPropdef
                assert new_child isa PMethid
                 _n_methid = new_child
            else
                assert new_child isa PMethid
                 _n_methid = new_child
            else
-               _n_methid = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -2678,7 +2328,7 @@ redef class AConcreteMethPropdef
                assert new_child isa PSignature
                 _n_signature = new_child
            else
                assert new_child isa PSignature
                 _n_signature = new_child
            else
-               _n_signature = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -2697,97 +2347,75 @@ redef class AConcreteMethPropdef
     redef meth visit_all(v: Visitor)
     do
         if _n_doc != null then
     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
         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
         end
+        v.visit(_n_visibility)
+        v.visit(_n_kwmeth)
+        v.visit(_n_methid)
+        v.visit(_n_signature)
         if _n_block != null then
         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
         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
         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
         end
+        v.visit(_n_visibility)
+        v.visit(_n_kwmeth)
+        v.visit(_n_methid)
+        v.visit(_n_signature)
         if _n_block != null then
         if _n_block != null then
-            v.visit(_n_block)
+            v.visit(_n_block.as(not null))
         end
     end
 end
 redef class AConcreteInitPropdef
         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
     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
     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
     do
         _n_visibility = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_kwinit=(n: TKwinit)
+    redef meth n_kwinit=(n)
     do
         _n_kwinit = n
     do
         _n_kwinit = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     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
     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
     do
         _n_signature = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_block=(n: PExpr)
+    redef meth n_block=(n)
     do
         _n_block = n
         if n != null then
     do
         _n_block = n
         if n != null then
@@ -2798,13 +2426,13 @@ redef class AConcreteInitPropdef
     private init empty_init do end
 
     init init_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
     )
     do
         empty_init
@@ -2816,31 +2444,24 @@ redef class AConcreteInitPropdef
        if n_kwredef != null then
                n_kwredef.parent = self
        end
        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_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
 
         _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
     do
-        assert old_child != null
         if _n_doc == old_child then
             if new_child != null then
                 new_child.parent = self
         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
                assert new_child isa PVisibility
                 _n_visibility = new_child
            else
-               _n_visibility = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -2877,7 +2498,7 @@ redef class AConcreteInitPropdef
                assert new_child isa TKwinit
                 _n_kwinit = new_child
            else
                assert new_child isa TKwinit
                 _n_kwinit = new_child
            else
-               _n_kwinit = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -2897,7 +2518,7 @@ redef class AConcreteInitPropdef
                assert new_child isa PSignature
                 _n_signature = new_child
            else
                assert new_child isa PSignature
                 _n_signature = new_child
            else
-               _n_signature = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -2916,62 +2537,50 @@ redef class AConcreteInitPropdef
     redef meth visit_all(v: Visitor)
     do
         if _n_doc != null then
     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
         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
         end
+        v.visit(_n_visibility)
+        v.visit(_n_kwinit)
         if _n_methid != null then
         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
         end
+        v.visit(_n_signature)
         if _n_block != null then
         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
         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
         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
         end
+        v.visit(_n_visibility)
+        v.visit(_n_kwinit)
         if _n_methid != null then
         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
         end
+        v.visit(_n_signature)
         if _n_block != null then
         if _n_block != null then
-            v.visit(_n_block)
+            v.visit(_n_block.as(not null))
         end
     end
 end
 redef class AMainMethPropdef
         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
     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
     do
         _n_block = n
         if n != null then
@@ -2982,8 +2591,8 @@ redef class AMainMethPropdef
     private init empty_init do end
 
     init init_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
     )
     do
         empty_init
@@ -2997,9 +2606,8 @@ redef class AMainMethPropdef
        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
     do
-        assert old_child != null
         if _n_kwredef == old_child then
             if new_child != null then
                 new_child.parent = self
         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
     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
         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
         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
         end
         if _n_block != null then
-            v.visit(_n_block)
+            v.visit(_n_block.as(not null))
         end
     end
 end
 redef class ATypePropdef
         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
     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
     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
     do
         _n_visibility = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_kwtype=(n: TKwtype)
+    redef meth n_kwtype=(n)
     do
         _n_kwtype = n
     do
         _n_kwtype = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_id=(n: TClassid)
+    redef meth n_id=(n)
     do
         _n_id = n
     do
         _n_id = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_type=(n: PType)
+    redef meth n_type=(n)
     do
         _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 (
     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
     )
     do
         empty_init
@@ -3106,27 +2706,18 @@ redef class ATypePropdef
        if n_kwredef != null then
                n_kwredef.parent = self
        end
        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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     do
-        assert old_child != null
         if _n_doc == old_child then
             if new_child != null then
                 new_child.parent = self
         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
                assert new_child isa PVisibility
                 _n_visibility = new_child
            else
-               _n_visibility = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -3163,7 +2754,7 @@ redef class ATypePropdef
                assert new_child isa TKwtype
                 _n_kwtype = new_child
            else
                assert new_child isa TKwtype
                 _n_kwtype = new_child
            else
-               _n_kwtype = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -3173,7 +2764,7 @@ redef class ATypePropdef
                assert new_child isa TClassid
                 _n_id = new_child
            else
                assert new_child isa TClassid
                 _n_id = new_child
            else
-               _n_id = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -3183,7 +2774,7 @@ redef class ATypePropdef
                assert new_child isa PType
                 _n_type = new_child
            else
                assert new_child isa PType
                 _n_type = new_child
            else
-               _n_type = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -3192,68 +2783,50 @@ redef class ATypePropdef
     redef meth visit_all(v: Visitor)
     do
         if _n_doc != null then
     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
         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
         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
     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
         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
         end
+        v.visit(_n_visibility)
+        v.visit(_n_kwtype)
+        v.visit(_n_id)
+        v.visit(_n_type)
     end
 end
 redef class AReadAble
     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
     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
     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 (
     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
     )
     do
         empty_init
@@ -3261,15 +2834,12 @@ redef class AReadAble
        if n_kwredef != null then
                n_kwredef.parent = self
        end
        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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     do
-        assert old_child != null
         if _n_kwredef == old_child then
             if new_child != null then
                 new_child.parent = self
         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
                assert new_child isa TKwreadable
                 _n_kwreadable = new_child
            else
-               _n_kwreadable = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -3295,44 +2865,38 @@ redef class AReadAble
     redef meth visit_all(v: Visitor)
     do
         if _n_kwredef != null then
     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
         end
+        v.visit(_n_kwreadable)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
         if _n_kwredef != null then
     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
         end
+        v.visit(_n_kwreadable)
     end
 end
 redef class AWriteAble
     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
     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
     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 (
     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
     )
     do
         empty_init
@@ -3340,15 +2904,12 @@ redef class AWriteAble
        if n_kwredef != null then
                n_kwredef.parent = self
        end
        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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     do
-        assert old_child != null
         if _n_kwredef == old_child then
             if new_child != null then
                 new_child.parent = self
         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
                assert new_child isa TKwwritable
                 _n_kwwritable = new_child
            else
-               _n_kwwritable = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -3374,55 +2935,46 @@ redef class AWriteAble
     redef meth visit_all(v: Visitor)
     do
         if _n_kwredef != null then
     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
         end
+        v.visit(_n_kwwritable)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
         if _n_kwredef != null then
     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
         end
+        v.visit(_n_kwwritable)
     end
 end
 redef class AIdMethid
     end
 end
 redef class AIdMethid
-    redef meth n_id=(n: TId)
+    redef meth n_id=(n)
     do
         _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 (
     end
 
     private init empty_init do end
 
     init init_aidmethid (
-            n_id: TId 
+            n_id: nullable TId 
     )
     do
         empty_init
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -3430,50 +2982,41 @@ redef class AIdMethid
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class APlusMethid
-    redef meth n_plus=(n: TPlus)
+    redef meth n_plus=(n)
     do
         _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 (
     end
 
     private init empty_init do end
 
     init init_aplusmethid (
-            n_plus: TPlus 
+            n_plus: nullable TPlus 
     )
     do
         empty_init
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -3481,50 +3024,41 @@ redef class APlusMethid
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class AMinusMethid
-    redef meth n_minus=(n: TMinus)
+    redef meth n_minus=(n)
     do
         _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 (
     end
 
     private init empty_init do end
 
     init init_aminusmethid (
-            n_minus: TMinus 
+            n_minus: nullable TMinus 
     )
     do
         empty_init
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -3532,50 +3066,41 @@ redef class AMinusMethid
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class AStarMethid
-    redef meth n_star=(n: TStar)
+    redef meth n_star=(n)
     do
         _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 (
     end
 
     private init empty_init do end
 
     init init_astarmethid (
-            n_star: TStar 
+            n_star: nullable TStar 
     )
     do
         empty_init
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -3583,50 +3108,41 @@ redef class AStarMethid
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class ASlashMethid
-    redef meth n_slash=(n: TSlash)
+    redef meth n_slash=(n)
     do
         _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 (
     end
 
     private init empty_init do end
 
     init init_aslashmethid (
-            n_slash: TSlash 
+            n_slash: nullable TSlash 
     )
     do
         empty_init
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -3634,50 +3150,41 @@ redef class ASlashMethid
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class APercentMethid
-    redef meth n_percent=(n: TPercent)
+    redef meth n_percent=(n)
     do
         _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 (
     end
 
     private init empty_init do end
 
     init init_apercentmethid (
-            n_percent: TPercent 
+            n_percent: nullable TPercent 
     )
     do
         empty_init
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -3685,50 +3192,41 @@ redef class APercentMethid
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class AEqMethid
-    redef meth n_eq=(n: TEq)
+    redef meth n_eq=(n)
     do
         _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 (
     end
 
     private init empty_init do end
 
     init init_aeqmethid (
-            n_eq: TEq 
+            n_eq: nullable TEq 
     )
     do
         empty_init
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -3736,50 +3234,41 @@ redef class AEqMethid
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class ANeMethid
-    redef meth n_ne=(n: TNe)
+    redef meth n_ne=(n)
     do
         _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 (
     end
 
     private init empty_init do end
 
     init init_anemethid (
-            n_ne: TNe 
+            n_ne: nullable TNe 
     )
     do
         empty_init
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -3787,50 +3276,41 @@ redef class ANeMethid
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class ALeMethid
-    redef meth n_le=(n: TLe)
+    redef meth n_le=(n)
     do
         _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 (
     end
 
     private init empty_init do end
 
     init init_alemethid (
-            n_le: TLe 
+            n_le: nullable TLe 
     )
     do
         empty_init
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -3838,50 +3318,41 @@ redef class ALeMethid
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class AGeMethid
-    redef meth n_ge=(n: TGe)
+    redef meth n_ge=(n)
     do
         _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 (
     end
 
     private init empty_init do end
 
     init init_agemethid (
-            n_ge: TGe 
+            n_ge: nullable TGe 
     )
     do
         empty_init
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -3889,50 +3360,41 @@ redef class AGeMethid
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class ALtMethid
-    redef meth n_lt=(n: TLt)
+    redef meth n_lt=(n)
     do
         _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 (
     end
 
     private init empty_init do end
 
     init init_altmethid (
-            n_lt: TLt 
+            n_lt: nullable TLt 
     )
     do
         empty_init
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -3940,50 +3402,41 @@ redef class ALtMethid
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class AGtMethid
-    redef meth n_gt=(n: TGt)
+    redef meth n_gt=(n)
     do
         _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 (
     end
 
     private init empty_init do end
 
     init init_agtmethid (
-            n_gt: TGt 
+            n_gt: nullable TGt 
     )
     do
         empty_init
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -3991,62 +3444,49 @@ redef class AGtMethid
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class ABraMethid
-    redef meth n_obra=(n: TObra)
+    redef meth n_obra=(n)
     do
         _n_obra = n
     do
         _n_obra = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_cbra=(n: TCbra)
+    redef meth n_cbra=(n)
     do
         _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 (
     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
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -4056,7 +3496,7 @@ redef class ABraMethid
                assert new_child isa TCbra
                 _n_cbra = new_child
            else
                assert new_child isa TCbra
                 _n_cbra = new_child
            else
-               _n_cbra = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -4064,56 +3504,43 @@ redef class ABraMethid
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class AStarshipMethid
-    redef meth n_starship=(n: TStarship)
+    redef meth n_starship=(n)
     do
         _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 (
     end
 
     private init empty_init do end
 
     init init_astarshipmethid (
-            n_starship: TStarship 
+            n_starship: nullable TStarship 
     )
     do
         empty_init
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -4121,62 +3548,49 @@ redef class AStarshipMethid
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class AAssignMethid
-    redef meth n_id=(n: TId)
+    redef meth n_id=(n)
     do
         _n_id = n
     do
         _n_id = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_assign=(n: TAssign)
+    redef meth n_assign=(n)
     do
         _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 (
     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
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -4186,7 +3600,7 @@ redef class AAssignMethid
                assert new_child isa TAssign
                 _n_assign = new_child
            else
                assert new_child isa TAssign
                 _n_assign = new_child
            else
-               _n_assign = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -4194,80 +3608,59 @@ redef class AAssignMethid
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class ABraassignMethid
-    redef meth n_obra=(n: TObra)
+    redef meth n_obra=(n)
     do
         _n_obra = n
     do
         _n_obra = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_cbra=(n: TCbra)
+    redef meth n_cbra=(n)
     do
         _n_cbra = n
     do
         _n_cbra = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_assign=(n: TAssign)
+    redef meth n_assign=(n)
     do
         _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 (
     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
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -4277,7 +3670,7 @@ redef class ABraassignMethid
                assert new_child isa TCbra
                 _n_cbra = new_child
            else
                assert new_child isa TCbra
                 _n_cbra = new_child
            else
-               _n_cbra = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -4287,7 +3680,7 @@ redef class ABraassignMethid
                assert new_child isa TAssign
                 _n_assign = new_child
            else
                assert new_child isa TAssign
                 _n_assign = new_child
            else
-               _n_assign = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -4295,32 +3688,20 @@ redef class ABraassignMethid
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class ASignature
-    redef meth n_type=(n: PType)
+    redef meth n_type=(n)
     do
         _n_type = n
         if n != null then
     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]
 
     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_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)
        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
        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)
        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
 
        end
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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)
            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)
         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
            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
         end
        do
            var i = _n_closure_decls.length
@@ -4429,21 +3807,19 @@ redef class ASignature
     end
 end
 redef class AParam
     end
 end
 redef class AParam
-    redef meth n_id=(n: TId)
+    redef meth n_id=(n)
     do
         _n_id = n
     do
         _n_id = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     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
     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
     do
         _n_dotdotdot = n
         if n != null then
@@ -4454,16 +3830,14 @@ redef class AParam
     private init empty_init do end
 
     init init_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
     )
     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
         _n_type = n_type
        if n_type != null then
                n_type.parent = self
@@ -4474,16 +3848,15 @@ redef class AParam
        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
     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
         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
             end
             return
        end
@@ -4511,60 +3884,50 @@ redef class AParam
 
     redef meth visit_all(v: Visitor)
     do
 
     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
         if _n_type != null then
-            v.visit(_n_type)
+            v.visit(_n_type.as(not null))
         end
         if _n_dotdotdot != null then
         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
         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
         if _n_type != null then
-            v.visit(_n_type)
+            v.visit(_n_type.as(not null))
         end
         if _n_dotdotdot != null then
         end
         if _n_dotdotdot != null then
-            v.visit(_n_dotdotdot)
+            v.visit(_n_dotdotdot.as(not null))
         end
     end
 end
 redef class AClosureDecl
         end
     end
 end
 redef class AClosureDecl
-    redef meth n_kwwith=(n: TKwwith)
+    redef meth n_kwwith=(n)
     do
         _n_kwwith = n
     do
         _n_kwwith = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     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
     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
     do
         _n_id = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_signature=(n: PSignature)
+    redef meth n_signature=(n)
     do
         _n_signature = n
     do
         _n_signature = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
         if n != null then
     do
         _n_expr = n
         if n != null then
@@ -4575,46 +3938,39 @@ redef class AClosureDecl
     private init empty_init do end
 
     init init_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
     )
     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_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
 
         _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
     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
         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
             end
             return
        end
@@ -4634,7 +3990,7 @@ redef class AClosureDecl
                assert new_child isa TId
                 _n_id = new_child
            else
                assert new_child isa TId
                 _n_id = new_child
            else
-               _n_id = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -4644,7 +4000,7 @@ redef class AClosureDecl
                assert new_child isa PSignature
                 _n_signature = new_child
            else
                assert new_child isa PSignature
                 _n_signature = new_child
            else
-               _n_signature = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -4662,63 +4018,49 @@ redef class AClosureDecl
 
     redef meth visit_all(v: Visitor)
     do
 
     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
         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
         end
+        v.visit(_n_id)
+        v.visit(_n_signature)
         if _n_expr != null then
         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
         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
         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
         end
+        v.visit(_n_id)
+        v.visit(_n_signature)
         if _n_expr != null then
         if _n_expr != null then
-            v.visit(_n_expr)
+            v.visit(_n_expr.as(not null))
         end
     end
 end
 redef class AType
         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
     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
     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 (
     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
             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
        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)
        for n in n_types do
                assert n isa PType
                _n_types.add(n)
@@ -4739,9 +4078,8 @@ redef class AType
        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
     do
-        assert old_child != null
         if _n_kwnullable == old_child then
             if new_child != null then
                 new_child.parent = self
         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
                assert new_child isa TClassid
                 _n_id = new_child
            else
-               _n_id = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -4779,11 +4117,9 @@ redef class AType
     redef meth visit_all(v: Visitor)
     do
         if _n_kwnullable != null then
     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
         end
+        v.visit(_n_id)
             for n in _n_types do
                 v.visit(n)
            end
             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
     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
         end
+        v.visit(_n_id)
        do
            var i = _n_types.length
             while i >= 0 do
        do
            var i = _n_types.length
             while i >= 0 do
@@ -4815,7 +4149,6 @@ redef class ABlockExpr
     )
     do
         empty_init
     )
     do
         empty_init
-        _n_expr = new List[PExpr]
        for n in n_expr do
                assert n isa PExpr
                _n_expr.add(n)
        for n in n_expr do
                assert n isa PExpr
                _n_expr.add(n)
@@ -4823,9 +4156,8 @@ redef class ABlockExpr
        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
     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
         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
     end
 end
 redef class AVardeclExpr
-    redef meth n_kwvar=(n: TKwvar)
+    redef meth n_kwvar=(n)
     do
         _n_kwvar = n
     do
         _n_kwvar = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_id=(n: TId)
+    redef meth n_id=(n)
     do
         _n_id = n
     do
         _n_id = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     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
     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
     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
     do
         _n_expr = n
         if n != null then
@@ -4898,22 +4226,18 @@ redef class AVardeclExpr
     private init empty_init do end
 
     init init_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
     )
     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
         _n_type = n_type
        if n_type != null then
                n_type.parent = self
@@ -4928,16 +4252,15 @@ redef class AVardeclExpr
        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
     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
         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
             end
             return
        end
@@ -4947,7 +4270,7 @@ redef class AVardeclExpr
                assert new_child isa TId
                 _n_id = new_child
            else
                assert new_child isa TId
                 _n_id = new_child
            else
-               _n_id = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -4985,51 +4308,41 @@ redef class AVardeclExpr
 
     redef meth visit_all(v: Visitor)
     do
 
     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
         if _n_type != null then
-            v.visit(_n_type)
+            v.visit(_n_type.as(not null))
         end
         if _n_assign != null then
         end
         if _n_assign != null then
-            v.visit(_n_assign)
+            v.visit(_n_assign.as(not null))
         end
         if _n_expr != null then
         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
         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
         if _n_type != null then
-            v.visit(_n_type)
+            v.visit(_n_type.as(not null))
         end
         if _n_assign != null then
         end
         if _n_assign != null then
-            v.visit(_n_assign)
+            v.visit(_n_assign.as(not null))
         end
         if _n_expr != null then
         end
         if _n_expr != null then
-            v.visit(_n_expr)
+            v.visit(_n_expr.as(not null))
         end
     end
 end
 redef class AReturnExpr
         end
     end
 end
 redef class AReturnExpr
-    redef meth n_kwreturn=(n: TKwreturn)
+    redef meth n_kwreturn=(n)
     do
         _n_kwreturn = n
     do
         _n_kwreturn = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
         if n != null then
     do
         _n_expr = n
         if n != null then
@@ -5040,31 +4353,28 @@ redef class AReturnExpr
     private init empty_init do end
 
     init init_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
     )
     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
 
         _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
     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
         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
             end
             return
        end
@@ -5082,33 +4392,27 @@ redef class AReturnExpr
 
     redef meth visit_all(v: Visitor)
     do
 
     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
         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
         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
         if _n_expr != null then
-            v.visit(_n_expr)
+            v.visit(_n_expr.as(not null))
         end
     end
 end
 redef class ABreakExpr
         end
     end
 end
 redef class ABreakExpr
-    redef meth n_kwbreak=(n: TKwbreak)
+    redef meth n_kwbreak=(n)
     do
         _n_kwbreak = n
     do
         _n_kwbreak = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
         if n != null then
     do
         _n_expr = n
         if n != null then
@@ -5119,31 +4423,28 @@ redef class ABreakExpr
     private init empty_init do end
 
     init init_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
     )
     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
 
         _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
     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
         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
             end
             return
        end
@@ -5161,56 +4462,47 @@ redef class ABreakExpr
 
     redef meth visit_all(v: Visitor)
     do
 
     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
         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
         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
         if _n_expr != null then
-            v.visit(_n_expr)
+            v.visit(_n_expr.as(not null))
         end
     end
 end
 redef class AAbortExpr
         end
     end
 end
 redef class AAbortExpr
-    redef meth n_kwabort=(n: TKwabort)
+    redef meth n_kwabort=(n)
     do
         _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 (
     end
 
     private init empty_init do end
 
     init init_aabortexpr (
-            n_kwabort: TKwabort 
+            n_kwabort: nullable TKwabort 
     )
     do
         empty_init
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -5218,27 +4510,21 @@ redef class AAbortExpr
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class AContinueExpr
-    redef meth n_kwcontinue=(n: TKwcontinue)
+    redef meth n_kwcontinue=(n)
     do
         _n_kwcontinue = n
     do
         _n_kwcontinue = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
         if n != null then
     do
         _n_expr = n
         if n != null then
@@ -5249,31 +4535,28 @@ redef class AContinueExpr
     private init empty_init do end
 
     init init_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
     )
     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
 
         _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
     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
         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
             end
             return
        end
@@ -5291,33 +4574,27 @@ redef class AContinueExpr
 
     redef meth visit_all(v: Visitor)
     do
 
     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
         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
         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
         if _n_expr != null then
-            v.visit(_n_expr)
+            v.visit(_n_expr.as(not null))
         end
     end
 end
 redef class ADoExpr
         end
     end
 end
 redef class ADoExpr
-    redef meth n_kwdo=(n: TKwdo)
+    redef meth n_kwdo=(n)
     do
         _n_kwdo = n
     do
         _n_kwdo = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_block=(n: PExpr)
+    redef meth n_block=(n)
     do
         _n_block = n
         if n != null then
     do
         _n_block = n
         if n != null then
@@ -5328,31 +4605,28 @@ redef class ADoExpr
     private init empty_init do end
 
     init init_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
     )
     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
 
         _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
     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
         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
             end
             return
        end
@@ -5370,47 +4644,39 @@ redef class ADoExpr
 
     redef meth visit_all(v: Visitor)
     do
 
     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
         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
         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
         if _n_block != null then
-            v.visit(_n_block)
+            v.visit(_n_block.as(not null))
         end
     end
 end
 redef class AIfExpr
         end
     end
 end
 redef class AIfExpr
-    redef meth n_kwif=(n: TKwif)
+    redef meth n_kwif=(n)
     do
         _n_kwif = n
     do
         _n_kwif = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     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
     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
     do
         _n_else = n
         if n != null then
@@ -5421,21 +4687,17 @@ redef class AIfExpr
     private init empty_init do end
 
     init init_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
     )
     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
         _n_then = n_then
        if n_then != null then
                n_then.parent = self
@@ -5446,16 +4708,15 @@ redef class AIfExpr
        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
     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
         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
             end
             return
        end
@@ -5465,7 +4726,7 @@ redef class AIfExpr
                assert new_child isa PExpr
                 _n_expr = new_child
            else
                assert new_child isa PExpr
                 _n_expr = new_child
            else
-               _n_expr = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -5493,128 +4754,95 @@ redef class AIfExpr
 
     redef meth visit_all(v: Visitor)
     do
 
     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
         if _n_then != null then
-            v.visit(_n_then)
+            v.visit(_n_then.as(not null))
         end
         if _n_else != null then
         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
         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
         if _n_then != null then
-            v.visit(_n_then)
+            v.visit(_n_then.as(not null))
         end
         if _n_else != null then
         end
         if _n_else != null then
-            v.visit(_n_else)
+            v.visit(_n_else.as(not null))
         end
     end
 end
 redef class AIfexprExpr
         end
     end
 end
 redef class AIfexprExpr
-    redef meth n_kwif=(n: TKwif)
+    redef meth n_kwif=(n)
     do
         _n_kwif = n
     do
         _n_kwif = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_kwthen=(n: TKwthen)
+    redef meth n_kwthen=(n)
     do
         _n_kwthen = n
     do
         _n_kwthen = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_then=(n: PExpr)
+    redef meth n_then=(n)
     do
         _n_then = n
     do
         _n_then = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_kwelse=(n: TKwelse)
+    redef meth n_kwelse=(n)
     do
         _n_kwelse = n
     do
         _n_kwelse = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_else=(n: PExpr)
+    redef meth n_else=(n)
     do
         _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 (
     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
     )
     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
     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
         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
             end
             return
        end
@@ -5624,7 +4852,7 @@ redef class AIfexprExpr
                assert new_child isa PExpr
                 _n_expr = new_child
            else
                assert new_child isa PExpr
                 _n_expr = new_child
            else
-               _n_expr = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -5634,7 +4862,7 @@ redef class AIfexprExpr
                assert new_child isa TKwthen
                 _n_kwthen = new_child
            else
                assert new_child isa TKwthen
                 _n_kwthen = new_child
            else
-               _n_kwthen = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -5644,7 +4872,7 @@ redef class AIfexprExpr
                assert new_child isa PExpr
                 _n_then = new_child
            else
                assert new_child isa PExpr
                 _n_then = new_child
            else
-               _n_then = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -5654,7 +4882,7 @@ redef class AIfexprExpr
                assert new_child isa TKwelse
                 _n_kwelse = new_child
            else
                assert new_child isa TKwelse
                 _n_kwelse = new_child
            else
-               _n_kwelse = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -5664,7 +4892,7 @@ redef class AIfexprExpr
                assert new_child isa PExpr
                 _n_else = new_child
            else
                assert new_child isa PExpr
                 _n_else = new_child
            else
-               _n_else = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -5672,71 +4900,41 @@ redef class AIfexprExpr
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class AWhileExpr
-    redef meth n_kwwhile=(n: TKwwhile)
+    redef meth n_kwwhile=(n)
     do
         _n_kwwhile = n
     do
         _n_kwwhile = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_kwdo=(n: TKwdo)
+    redef meth n_kwdo=(n)
     do
         _n_kwdo = n
     do
         _n_kwdo = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_block=(n: PExpr)
+    redef meth n_block=(n)
     do
         _n_block = n
         if n != null then
     do
         _n_block = n
         if n != null then
@@ -5747,41 +4945,34 @@ redef class AWhileExpr
     private init empty_init do end
 
     init init_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
     )
     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
 
         _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
     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
         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
             end
             return
        end
@@ -5791,7 +4982,7 @@ redef class AWhileExpr
                assert new_child isa PExpr
                 _n_expr = new_child
            else
                assert new_child isa PExpr
                 _n_expr = new_child
            else
-               _n_expr = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -5801,7 +4992,7 @@ redef class AWhileExpr
                assert new_child isa TKwdo
                 _n_kwdo = new_child
            else
                assert new_child isa TKwdo
                 _n_kwdo = new_child
            else
-               _n_kwdo = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -5819,66 +5010,46 @@ redef class AWhileExpr
 
     redef meth visit_all(v: Visitor)
     do
 
     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
         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
         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
         if _n_block != null then
-            v.visit(_n_block)
+            v.visit(_n_block.as(not null))
         end
     end
 end
 redef class AForExpr
         end
     end
 end
 redef class AForExpr
-    redef meth n_kwfor=(n: TKwfor)
+    redef meth n_kwfor=(n)
     do
         _n_kwfor = n
     do
         _n_kwfor = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_id=(n: TId)
+    redef meth n_id=(n)
     do
         _n_id = n
     do
         _n_id = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_kwdo=(n: TKwdo)
+    redef meth n_kwdo=(n)
     do
         _n_kwdo = n
     do
         _n_kwdo = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_block=(n: PExpr)
+    redef meth n_block=(n)
     do
         _n_block = n
         if n != null then
     do
         _n_block = n
         if n != null then
@@ -5889,46 +5060,37 @@ redef class AForExpr
     private init empty_init do end
 
     init init_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
     )
     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
 
         _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
     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
         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
             end
             return
        end
@@ -5938,7 +5100,7 @@ redef class AForExpr
                assert new_child isa TId
                 _n_id = new_child
            else
                assert new_child isa TId
                 _n_id = new_child
            else
-               _n_id = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -5948,7 +5110,7 @@ redef class AForExpr
                assert new_child isa PExpr
                 _n_expr = new_child
            else
                assert new_child isa PExpr
                 _n_expr = new_child
            else
-               _n_expr = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -5958,7 +5120,7 @@ redef class AForExpr
                assert new_child isa TKwdo
                 _n_kwdo = new_child
            else
                assert new_child isa TKwdo
                 _n_kwdo = new_child
            else
-               _n_kwdo = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -5976,98 +5138,73 @@ redef class AForExpr
 
     redef meth visit_all(v: Visitor)
     do
 
     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
         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
         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
         if _n_block != null then
-            v.visit(_n_block)
+            v.visit(_n_block.as(not null))
         end
     end
 end
 redef class AAssertExpr
         end
     end
 end
 redef class AAssertExpr
-    redef meth n_kwassert=(n: TKwassert)
+    redef meth n_kwassert=(n)
     do
         _n_kwassert = n
     do
         _n_kwassert = n
-        if n != null then
-           n.parent = self
-        end
+       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
     end
     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
     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 (
     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
     )
     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_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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -6087,7 +5224,7 @@ redef class AAssertExpr
                assert new_child isa PExpr
                 _n_expr = new_child
            else
                assert new_child isa PExpr
                 _n_expr = new_child
            else
-               _n_expr = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -6095,74 +5232,57 @@ redef class AAssertExpr
 
     redef meth visit_all(v: Visitor)
     do
 
     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
         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
         end
+        v.visit(_n_expr)
     end
 
     redef meth visit_all_reverse(v: Visitor)
     do
     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
         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
         end
+        v.visit(_n_expr)
     end
 end
 redef class AOnceExpr
     end
 end
 redef class AOnceExpr
-    redef meth n_kwonce=(n: TKwonce)
+    redef meth n_kwonce=(n)
     do
         _n_kwonce = n
     do
         _n_kwonce = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _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 (
     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
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -6172,7 +5292,7 @@ redef class AOnceExpr
                assert new_child isa PExpr
                 _n_expr = new_child
            else
                assert new_child isa PExpr
                 _n_expr = new_child
            else
-               _n_expr = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -6180,56 +5300,43 @@ redef class AOnceExpr
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class ASendExpr
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _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 (
     end
 
     private init empty_init do end
 
     init init_asendexpr (
-            n_expr: PExpr 
+            n_expr: nullable PExpr 
     )
     do
         empty_init
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -6237,62 +5344,49 @@ redef class ASendExpr
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class ABinopExpr
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_expr2=(n: PExpr)
+    redef meth n_expr2=(n)
     do
         _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 (
     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
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -6302,7 +5396,7 @@ redef class ABinopExpr
                assert new_child isa PExpr
                 _n_expr2 = new_child
            else
                assert new_child isa PExpr
                 _n_expr2 = new_child
            else
-               _n_expr2 = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -6310,68 +5404,51 @@ redef class ABinopExpr
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class AOrExpr
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_expr2=(n: PExpr)
+    redef meth n_expr2=(n)
     do
         _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 (
     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
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -6381,7 +5458,7 @@ redef class AOrExpr
                assert new_child isa PExpr
                 _n_expr2 = new_child
            else
                assert new_child isa PExpr
                 _n_expr2 = new_child
            else
-               _n_expr2 = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -6389,68 +5466,51 @@ redef class AOrExpr
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class AAndExpr
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_expr2=(n: PExpr)
+    redef meth n_expr2=(n)
     do
         _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 (
     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
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -6460,7 +5520,7 @@ redef class AAndExpr
                assert new_child isa PExpr
                 _n_expr2 = new_child
            else
                assert new_child isa PExpr
                 _n_expr2 = new_child
            else
-               _n_expr2 = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -6468,68 +5528,51 @@ redef class AAndExpr
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class ANotExpr
-    redef meth n_kwnot=(n: TKwnot)
+    redef meth n_kwnot=(n)
     do
         _n_kwnot = n
     do
         _n_kwnot = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _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 (
     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
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -6539,7 +5582,7 @@ redef class ANotExpr
                assert new_child isa PExpr
                 _n_expr = new_child
            else
                assert new_child isa PExpr
                 _n_expr = new_child
            else
-               _n_expr = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -6547,68 +5590,51 @@ redef class ANotExpr
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class AEqExpr
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_expr2=(n: PExpr)
+    redef meth n_expr2=(n)
     do
         _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 (
     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
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -6618,7 +5644,7 @@ redef class AEqExpr
                assert new_child isa PExpr
                 _n_expr2 = new_child
            else
                assert new_child isa PExpr
                 _n_expr2 = new_child
            else
-               _n_expr2 = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -6626,68 +5652,51 @@ redef class AEqExpr
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class AEeExpr
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_expr2=(n: PExpr)
+    redef meth n_expr2=(n)
     do
         _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 (
     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
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -6697,7 +5706,7 @@ redef class AEeExpr
                assert new_child isa PExpr
                 _n_expr2 = new_child
            else
                assert new_child isa PExpr
                 _n_expr2 = new_child
            else
-               _n_expr2 = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -6705,68 +5714,51 @@ redef class AEeExpr
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class ANeExpr
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_expr2=(n: PExpr)
+    redef meth n_expr2=(n)
     do
         _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 (
     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
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -6776,7 +5768,7 @@ redef class ANeExpr
                assert new_child isa PExpr
                 _n_expr2 = new_child
            else
                assert new_child isa PExpr
                 _n_expr2 = new_child
            else
-               _n_expr2 = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -6784,68 +5776,51 @@ redef class ANeExpr
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class ALtExpr
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_expr2=(n: PExpr)
+    redef meth n_expr2=(n)
     do
         _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 (
     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
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -6855,7 +5830,7 @@ redef class ALtExpr
                assert new_child isa PExpr
                 _n_expr2 = new_child
            else
                assert new_child isa PExpr
                 _n_expr2 = new_child
            else
-               _n_expr2 = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -6863,68 +5838,51 @@ redef class ALtExpr
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class ALeExpr
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_expr2=(n: PExpr)
+    redef meth n_expr2=(n)
     do
         _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 (
     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
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -6934,7 +5892,7 @@ redef class ALeExpr
                assert new_child isa PExpr
                 _n_expr2 = new_child
            else
                assert new_child isa PExpr
                 _n_expr2 = new_child
            else
-               _n_expr2 = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -6942,68 +5900,51 @@ redef class ALeExpr
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class AGtExpr
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_expr2=(n: PExpr)
+    redef meth n_expr2=(n)
     do
         _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 (
     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
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -7013,7 +5954,7 @@ redef class AGtExpr
                assert new_child isa PExpr
                 _n_expr2 = new_child
            else
                assert new_child isa PExpr
                 _n_expr2 = new_child
            else
-               _n_expr2 = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -7021,68 +5962,51 @@ redef class AGtExpr
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class AGeExpr
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_expr2=(n: PExpr)
+    redef meth n_expr2=(n)
     do
         _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 (
     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
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -7092,7 +6016,7 @@ redef class AGeExpr
                assert new_child isa PExpr
                 _n_expr2 = new_child
            else
                assert new_child isa PExpr
                 _n_expr2 = new_child
            else
-               _n_expr2 = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -7100,68 +6024,51 @@ redef class AGeExpr
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class AIsaExpr
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_type=(n: PType)
+    redef meth n_type=(n)
     do
         _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 (
     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
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -7171,7 +6078,7 @@ redef class AIsaExpr
                assert new_child isa PType
                 _n_type = new_child
            else
                assert new_child isa PType
                 _n_type = new_child
            else
-               _n_type = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -7179,68 +6086,51 @@ redef class AIsaExpr
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class APlusExpr
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_expr2=(n: PExpr)
+    redef meth n_expr2=(n)
     do
         _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 (
     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
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -7250,7 +6140,7 @@ redef class APlusExpr
                assert new_child isa PExpr
                 _n_expr2 = new_child
            else
                assert new_child isa PExpr
                 _n_expr2 = new_child
            else
-               _n_expr2 = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -7258,68 +6148,51 @@ redef class APlusExpr
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class AMinusExpr
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_expr2=(n: PExpr)
+    redef meth n_expr2=(n)
     do
         _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 (
     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
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -7329,7 +6202,7 @@ redef class AMinusExpr
                assert new_child isa PExpr
                 _n_expr2 = new_child
            else
                assert new_child isa PExpr
                 _n_expr2 = new_child
            else
-               _n_expr2 = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -7337,68 +6210,51 @@ redef class AMinusExpr
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class AStarshipExpr
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_expr2=(n: PExpr)
+    redef meth n_expr2=(n)
     do
         _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 (
     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
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -7408,7 +6264,7 @@ redef class AStarshipExpr
                assert new_child isa PExpr
                 _n_expr2 = new_child
            else
                assert new_child isa PExpr
                 _n_expr2 = new_child
            else
-               _n_expr2 = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -7416,68 +6272,51 @@ redef class AStarshipExpr
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class AStarExpr
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_expr2=(n: PExpr)
+    redef meth n_expr2=(n)
     do
         _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 (
     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
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -7487,7 +6326,7 @@ redef class AStarExpr
                assert new_child isa PExpr
                 _n_expr2 = new_child
            else
                assert new_child isa PExpr
                 _n_expr2 = new_child
            else
-               _n_expr2 = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -7495,68 +6334,51 @@ redef class AStarExpr
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class ASlashExpr
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_expr2=(n: PExpr)
+    redef meth n_expr2=(n)
     do
         _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 (
     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
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -7566,7 +6388,7 @@ redef class ASlashExpr
                assert new_child isa PExpr
                 _n_expr2 = new_child
            else
                assert new_child isa PExpr
                 _n_expr2 = new_child
            else
-               _n_expr2 = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -7574,68 +6396,51 @@ redef class ASlashExpr
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class APercentExpr
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_expr2=(n: PExpr)
+    redef meth n_expr2=(n)
     do
         _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 (
     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
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -7645,7 +6450,7 @@ redef class APercentExpr
                assert new_child isa PExpr
                 _n_expr2 = new_child
            else
                assert new_child isa PExpr
                 _n_expr2 = new_child
            else
-               _n_expr2 = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -7653,68 +6458,51 @@ redef class APercentExpr
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class AUminusExpr
-    redef meth n_minus=(n: TMinus)
+    redef meth n_minus=(n)
     do
         _n_minus = n
     do
         _n_minus = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _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 (
     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
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -7724,7 +6512,7 @@ redef class AUminusExpr
                assert new_child isa PExpr
                 _n_expr = new_child
            else
                assert new_child isa PExpr
                 _n_expr = new_child
            else
-               _n_expr = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -7732,40 +6520,28 @@ redef class AUminusExpr
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class ANewExpr
-    redef meth n_kwnew=(n: TKwnew)
+    redef meth n_kwnew=(n)
     do
         _n_kwnew = n
     do
         _n_kwnew = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_type=(n: PType)
+    redef meth n_type=(n)
     do
         _n_type = n
     do
         _n_type = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_id=(n: TId)
+    redef meth n_id=(n)
     do
         _n_id = n
         if n != null then
     do
         _n_id = n
         if n != null then
@@ -7776,26 +6552,21 @@ redef class ANewExpr
     private init empty_init do end
 
     init init_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_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_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)
        for n in n_args do
                assert n isa PExpr
                _n_args.add(n)
@@ -7803,16 +6574,15 @@ redef class ANewExpr
        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
     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
         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
             end
             return
        end
@@ -7822,7 +6592,7 @@ redef class ANewExpr
                assert new_child isa PType
                 _n_type = new_child
            else
                assert new_child isa PType
                 _n_type = new_child
            else
-               _n_type = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -7852,14 +6622,10 @@ redef class ANewExpr
 
     redef meth visit_all(v: Visitor)
     do
 
     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
         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)
         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
 
     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
         if _n_id != null then
-            v.visit(_n_id)
+            v.visit(_n_id.as(not null))
         end
        do
            var i = _n_args.length
         end
        do
            var i = _n_args.length
@@ -7887,49 +6649,40 @@ redef class ANewExpr
     end
 end
 redef class AAttrExpr
     end
 end
 redef class AAttrExpr
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_id=(n: TAttrid)
+    redef meth n_id=(n)
     do
         _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 (
     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
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -7939,7 +6692,7 @@ redef class AAttrExpr
                assert new_child isa TAttrid
                 _n_id = new_child
            else
                assert new_child isa TAttrid
                 _n_id = new_child
            else
-               _n_id = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -7947,92 +6700,67 @@ redef class AAttrExpr
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class AAttrAssignExpr
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_id=(n: TAttrid)
+    redef meth n_id=(n)
     do
         _n_id = n
     do
         _n_id = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_assign=(n: TAssign)
+    redef meth n_assign=(n)
     do
         _n_assign = n
     do
         _n_assign = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_value=(n: PExpr)
+    redef meth n_value=(n)
     do
         _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 (
     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
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -8042,7 +6770,7 @@ redef class AAttrAssignExpr
                assert new_child isa TAttrid
                 _n_id = new_child
            else
                assert new_child isa TAttrid
                 _n_id = new_child
            else
-               _n_id = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -8052,7 +6780,7 @@ redef class AAttrAssignExpr
                assert new_child isa TAssign
                 _n_assign = new_child
            else
                assert new_child isa TAssign
                 _n_assign = new_child
            else
-               _n_assign = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -8062,7 +6790,7 @@ redef class AAttrAssignExpr
                assert new_child isa PExpr
                 _n_value = new_child
            else
                assert new_child isa PExpr
                 _n_value = new_child
            else
-               _n_value = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -8070,104 +6798,71 @@ redef class AAttrAssignExpr
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class AAttrReassignExpr
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_id=(n: TAttrid)
+    redef meth n_id=(n)
     do
         _n_id = n
     do
         _n_id = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_assign_op=(n: PAssignOp)
+    redef meth n_assign_op=(n)
     do
         _n_assign_op = n
     do
         _n_assign_op = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_value=(n: PExpr)
+    redef meth n_value=(n)
     do
         _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 (
     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
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -8177,7 +6872,7 @@ redef class AAttrReassignExpr
                assert new_child isa TAttrid
                 _n_id = new_child
            else
                assert new_child isa TAttrid
                 _n_id = new_child
            else
-               _n_id = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -8187,7 +6882,7 @@ redef class AAttrReassignExpr
                assert new_child isa PAssignOp
                 _n_assign_op = new_child
            else
                assert new_child isa PAssignOp
                 _n_assign_op = new_child
            else
-               _n_assign_op = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -8197,7 +6892,7 @@ redef class AAttrReassignExpr
                assert new_child isa PExpr
                 _n_value = new_child
            else
                assert new_child isa PExpr
                 _n_value = new_child
            else
-               _n_value = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -8205,77 +6900,51 @@ redef class AAttrReassignExpr
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class ACallExpr
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_id=(n: TId)
+    redef meth n_id=(n)
     do
         _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 (
     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_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
        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)
        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
 
        end
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -8302,7 +6970,7 @@ redef class ACallExpr
                assert new_child isa TId
                 _n_id = new_child
            else
                assert new_child isa TId
                 _n_id = new_child
            else
-               _n_id = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -8334,12 +7002,8 @@ redef class ACallExpr
 
     redef meth visit_all(v: Visitor)
     do
 
     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
             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
 
     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
        do
            var i = _n_args.length
             while i >= 0 do
@@ -8373,80 +7033,62 @@ redef class ACallExpr
     end
 end
 redef class ACallAssignExpr
     end
 end
 redef class ACallAssignExpr
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_id=(n: TId)
+    redef meth n_id=(n)
     do
         _n_id = n
     do
         _n_id = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_assign=(n: TAssign)
+    redef meth n_assign=(n)
     do
         _n_assign = n
     do
         _n_assign = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_value=(n: PExpr)
+    redef meth n_value=(n)
     do
         _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 (
     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_args: Collection[Object] , # Should be Collection[PExpr]
-            n_assign: TAssign ,
-            n_value: PExpr 
+            n_assign: nullable TAssign ,
+            n_value: nullable PExpr 
     )
     do
         empty_init
     )
     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
        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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -8456,7 +7098,7 @@ redef class ACallAssignExpr
                assert new_child isa TId
                 _n_id = new_child
            else
                assert new_child isa TId
                 _n_id = new_child
            else
-               _n_id = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -8478,7 +7120,7 @@ redef class ACallAssignExpr
                assert new_child isa TAssign
                 _n_assign = new_child
            else
                assert new_child isa TAssign
                 _n_assign = new_child
            else
-               _n_assign = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -8488,7 +7130,7 @@ redef class ACallAssignExpr
                assert new_child isa PExpr
                 _n_value = new_child
            else
                assert new_child isa PExpr
                 _n_value = new_child
            else
-               _n_value = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -8496,31 +7138,19 @@ redef class ACallAssignExpr
 
     redef meth visit_all(v: Visitor)
     do
 
     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
             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
     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
        do
            var i = _n_args.length
             while i >= 0 do
@@ -8528,89 +7158,67 @@ redef class ACallAssignExpr
                i = i - 1
            end
        end
                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
     end
 end
 redef class ACallReassignExpr
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_id=(n: TId)
+    redef meth n_id=(n)
     do
         _n_id = n
     do
         _n_id = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_assign_op=(n: PAssignOp)
+    redef meth n_assign_op=(n)
     do
         _n_assign_op = n
     do
         _n_assign_op = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_value=(n: PExpr)
+    redef meth n_value=(n)
     do
         _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 (
     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_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
     )
     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
        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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -8620,7 +7228,7 @@ redef class ACallReassignExpr
                assert new_child isa TId
                 _n_id = new_child
            else
                assert new_child isa TId
                 _n_id = new_child
            else
-               _n_id = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -8642,7 +7250,7 @@ redef class ACallReassignExpr
                assert new_child isa PAssignOp
                 _n_assign_op = new_child
            else
                assert new_child isa PAssignOp
                 _n_assign_op = new_child
            else
-               _n_assign_op = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -8652,7 +7260,7 @@ redef class ACallReassignExpr
                assert new_child isa PExpr
                 _n_value = new_child
            else
                assert new_child isa PExpr
                 _n_value = new_child
            else
-               _n_value = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -8660,31 +7268,19 @@ redef class ACallReassignExpr
 
     redef meth visit_all(v: Visitor)
     do
 
     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
             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
     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
        do
            var i = _n_args.length
             while i >= 0 do
@@ -8692,35 +7288,29 @@ redef class ACallReassignExpr
                i = i - 1
            end
        end
                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
     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
     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
     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 (
     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
             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
        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)
        for n in n_args do
                assert n isa PExpr
                _n_args.add(n)
@@ -8741,9 +7328,8 @@ redef class ASuperExpr
        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
     do
-        assert old_child != null
         if _n_qualified == old_child then
             if new_child != null then
                 new_child.parent = self
         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
                assert new_child isa TKwsuper
                 _n_kwsuper = new_child
            else
-               _n_kwsuper = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -8781,11 +7367,9 @@ redef class ASuperExpr
     redef meth visit_all(v: Visitor)
     do
         if _n_qualified != null then
     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
         end
+        v.visit(_n_kwsuper)
             for n in _n_args do
                 v.visit(n)
            end
             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
     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
         end
+        v.visit(_n_kwsuper)
        do
            var i = _n_args.length
             while i >= 0 do
        do
            var i = _n_args.length
             while i >= 0 do
@@ -8809,39 +7391,30 @@ redef class ASuperExpr
     end
 end
 redef class AInitExpr
     end
 end
 redef class AInitExpr
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_kwinit=(n: TKwinit)
+    redef meth n_kwinit=(n)
     do
         _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 (
     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_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)
        for n in n_args do
                assert n isa PExpr
                _n_args.add(n)
@@ -8849,16 +7422,15 @@ redef class AInitExpr
        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
     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
         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
             end
             return
        end
@@ -8868,7 +7440,7 @@ redef class AInitExpr
                assert new_child isa TKwinit
                 _n_kwinit = new_child
            else
                assert new_child isa TKwinit
                 _n_kwinit = new_child
            else
-               _n_kwinit = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -8888,12 +7460,8 @@ redef class AInitExpr
 
     redef meth visit_all(v: Visitor)
     do
 
     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
             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
 
     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
        do
            var i = _n_args.length
             while i >= 0 do
@@ -8917,34 +7481,28 @@ redef class AInitExpr
     end
 end
 redef class ABraExpr
     end
 end
 redef class ABraExpr
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _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 (
     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_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
        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)
        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
 
        end
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -8993,9 +7550,7 @@ redef class ABraExpr
 
     redef meth visit_all(v: Visitor)
     do
 
     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
             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
 
     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
        do
            var i = _n_args.length
             while i >= 0 do
@@ -9026,68 +7579,54 @@ redef class ABraExpr
     end
 end
 redef class ABraAssignExpr
     end
 end
 redef class ABraAssignExpr
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_assign=(n: TAssign)
+    redef meth n_assign=(n)
     do
         _n_assign = n
     do
         _n_assign = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_value=(n: PExpr)
+    redef meth n_value=(n)
     do
         _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 (
     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_args: Collection[Object] , # Should be Collection[PExpr]
-            n_assign: TAssign ,
-            n_value: PExpr 
+            n_assign: nullable TAssign ,
+            n_value: nullable PExpr 
     )
     do
         empty_init
     )
     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
        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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -9109,7 +7648,7 @@ redef class ABraAssignExpr
                assert new_child isa TAssign
                 _n_assign = new_child
            else
                assert new_child isa TAssign
                 _n_assign = new_child
            else
-               _n_assign = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -9119,7 +7658,7 @@ redef class ABraAssignExpr
                assert new_child isa PExpr
                 _n_value = new_child
            else
                assert new_child isa PExpr
                 _n_value = new_child
            else
-               _n_value = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -9127,25 +7666,17 @@ redef class ABraAssignExpr
 
     redef meth visit_all(v: Visitor)
     do
 
     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
             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
     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
        do
            var i = _n_args.length
             while i >= 0 do
@@ -9153,77 +7684,59 @@ redef class ABraAssignExpr
                i = i - 1
            end
        end
                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
     end
 end
 redef class ABraReassignExpr
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_assign_op=(n: PAssignOp)
+    redef meth n_assign_op=(n)
     do
         _n_assign_op = n
     do
         _n_assign_op = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_value=(n: PExpr)
+    redef meth n_value=(n)
     do
         _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 (
     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_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
     )
     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
        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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -9245,7 +7758,7 @@ redef class ABraReassignExpr
                assert new_child isa PAssignOp
                 _n_assign_op = new_child
            else
                assert new_child isa PAssignOp
                 _n_assign_op = new_child
            else
-               _n_assign_op = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -9255,7 +7768,7 @@ redef class ABraReassignExpr
                assert new_child isa PExpr
                 _n_value = new_child
            else
                assert new_child isa PExpr
                 _n_value = new_child
            else
-               _n_value = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -9263,25 +7776,17 @@ redef class ABraReassignExpr
 
     redef meth visit_all(v: Visitor)
     do
 
     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
             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
     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
        do
            var i = _n_args.length
             while i >= 0 do
@@ -9289,43 +7794,33 @@ redef class ABraReassignExpr
                i = i - 1
            end
        end
                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
     end
 end
 redef class AClosureCallExpr
-    redef meth n_id=(n: TId)
+    redef meth n_id=(n)
     do
         _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 (
     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_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
        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)
        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
 
        end
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -9374,9 +7868,7 @@ redef class AClosureCallExpr
 
     redef meth visit_all(v: Visitor)
     do
 
     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
             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
 
     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
        do
            var i = _n_args.length
             while i >= 0 do
@@ -9407,37 +7897,32 @@ redef class AClosureCallExpr
     end
 end
 redef class AVarExpr
     end
 end
 redef class AVarExpr
-    redef meth n_id=(n: TId)
+    redef meth n_id=(n)
     do
         _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 (
     end
 
     private init empty_init do end
 
     init init_avarexpr (
-            n_id: TId 
+            n_id: nullable TId 
     )
     do
         empty_init
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -9445,74 +7930,57 @@ redef class AVarExpr
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class AVarAssignExpr
-    redef meth n_id=(n: TId)
+    redef meth n_id=(n)
     do
         _n_id = n
     do
         _n_id = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_assign=(n: TAssign)
+    redef meth n_assign=(n)
     do
         _n_assign = n
     do
         _n_assign = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_value=(n: PExpr)
+    redef meth n_value=(n)
     do
         _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 (
     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
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -9522,7 +7990,7 @@ redef class AVarAssignExpr
                assert new_child isa TAssign
                 _n_assign = new_child
            else
                assert new_child isa TAssign
                 _n_assign = new_child
            else
-               _n_assign = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -9532,7 +8000,7 @@ redef class AVarAssignExpr
                assert new_child isa PExpr
                 _n_value = new_child
            else
                assert new_child isa PExpr
                 _n_value = new_child
            else
-               _n_value = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -9540,86 +8008,61 @@ redef class AVarAssignExpr
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class AVarReassignExpr
-    redef meth n_id=(n: TId)
+    redef meth n_id=(n)
     do
         _n_id = n
     do
         _n_id = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_assign_op=(n: PAssignOp)
+    redef meth n_assign_op=(n)
     do
         _n_assign_op = n
     do
         _n_assign_op = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_value=(n: PExpr)
+    redef meth n_value=(n)
     do
         _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 (
     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
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -9629,7 +8072,7 @@ redef class AVarReassignExpr
                assert new_child isa PAssignOp
                 _n_assign_op = new_child
            else
                assert new_child isa PAssignOp
                 _n_assign_op = new_child
            else
-               _n_assign_op = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -9639,7 +8082,7 @@ redef class AVarReassignExpr
                assert new_child isa PExpr
                 _n_value = new_child
            else
                assert new_child isa PExpr
                 _n_value = new_child
            else
-               _n_value = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -9647,74 +8090,53 @@ redef class AVarReassignExpr
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class ARangeExpr
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_expr2=(n: PExpr)
+    redef meth n_expr2=(n)
     do
         _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 (
     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
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -9724,7 +8146,7 @@ redef class ARangeExpr
                assert new_child isa PExpr
                 _n_expr2 = new_child
            else
                assert new_child isa PExpr
                 _n_expr2 = new_child
            else
-               _n_expr2 = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -9732,68 +8154,51 @@ redef class ARangeExpr
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class ACrangeExpr
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_expr2=(n: PExpr)
+    redef meth n_expr2=(n)
     do
         _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 (
     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
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -9803,7 +8208,7 @@ redef class ACrangeExpr
                assert new_child isa PExpr
                 _n_expr2 = new_child
            else
                assert new_child isa PExpr
                 _n_expr2 = new_child
            else
-               _n_expr2 = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -9811,68 +8216,51 @@ redef class ACrangeExpr
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class AOrangeExpr
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_expr2=(n: PExpr)
+    redef meth n_expr2=(n)
     do
         _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 (
     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
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -9882,7 +8270,7 @@ redef class AOrangeExpr
                assert new_child isa PExpr
                 _n_expr2 = new_child
            else
                assert new_child isa PExpr
                 _n_expr2 = new_child
            else
-               _n_expr2 = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -9890,22 +8278,14 @@ redef class AOrangeExpr
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class AArrayExpr
@@ -9917,7 +8297,6 @@ redef class AArrayExpr
     )
     do
         empty_init
     )
     do
         empty_init
-        _n_exprs = new List[PExpr]
        for n in n_exprs do
                assert n isa PExpr
                _n_exprs.add(n)
        for n in n_exprs do
                assert n isa PExpr
                _n_exprs.add(n)
@@ -9925,9 +8304,8 @@ redef class AArrayExpr
        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
     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
         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
     end
 end
 redef class ASelfExpr
-    redef meth n_kwself=(n: TKwself)
+    redef meth n_kwself=(n)
     do
         _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 (
     end
 
     private init empty_init do end
 
     init init_aselfexpr (
-            n_kwself: TKwself 
+            n_kwself: nullable TKwself 
     )
     do
         empty_init
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -9999,16 +8372,12 @@ redef class ASelfExpr
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class AImplicitSelfExpr
@@ -10020,9 +8389,8 @@ redef class AImplicitSelfExpr
         empty_init
     end
 
         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
     do
-        assert old_child != null
     end
 
     redef meth visit_all(v: Visitor)
     end
 
     redef meth visit_all(v: Visitor)
@@ -10034,37 +8402,32 @@ redef class AImplicitSelfExpr
     end
 end
 redef class ATrueExpr
     end
 end
 redef class ATrueExpr
-    redef meth n_kwtrue=(n: TKwtrue)
+    redef meth n_kwtrue=(n)
     do
         _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 (
     end
 
     private init empty_init do end
 
     init init_atrueexpr (
-            n_kwtrue: TKwtrue 
+            n_kwtrue: nullable TKwtrue 
     )
     do
         empty_init
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -10072,50 +8435,41 @@ redef class ATrueExpr
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class AFalseExpr
-    redef meth n_kwfalse=(n: TKwfalse)
+    redef meth n_kwfalse=(n)
     do
         _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 (
     end
 
     private init empty_init do end
 
     init init_afalseexpr (
-            n_kwfalse: TKwfalse 
+            n_kwfalse: nullable TKwfalse 
     )
     do
         empty_init
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -10123,50 +8477,41 @@ redef class AFalseExpr
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class ANullExpr
-    redef meth n_kwnull=(n: TKwnull)
+    redef meth n_kwnull=(n)
     do
         _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 (
     end
 
     private init empty_init do end
 
     init init_anullexpr (
-            n_kwnull: TKwnull 
+            n_kwnull: nullable TKwnull 
     )
     do
         empty_init
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -10174,50 +8519,41 @@ redef class ANullExpr
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class AIntExpr
-    redef meth n_number=(n: TNumber)
+    redef meth n_number=(n)
     do
         _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 (
     end
 
     private init empty_init do end
 
     init init_aintexpr (
-            n_number: TNumber 
+            n_number: nullable TNumber 
     )
     do
         empty_init
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -10225,50 +8561,41 @@ redef class AIntExpr
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class AFloatExpr
-    redef meth n_float=(n: TFloat)
+    redef meth n_float=(n)
     do
         _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 (
     end
 
     private init empty_init do end
 
     init init_afloatexpr (
-            n_float: TFloat 
+            n_float: nullable TFloat 
     )
     do
         empty_init
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -10276,50 +8603,41 @@ redef class AFloatExpr
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class ACharExpr
-    redef meth n_char=(n: TChar)
+    redef meth n_char=(n)
     do
         _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 (
     end
 
     private init empty_init do end
 
     init init_acharexpr (
-            n_char: TChar 
+            n_char: nullable TChar 
     )
     do
         empty_init
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -10327,50 +8645,41 @@ redef class ACharExpr
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class AStringExpr
-    redef meth n_string=(n: TString)
+    redef meth n_string=(n)
     do
         _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 (
     end
 
     private init empty_init do end
 
     init init_astringexpr (
-            n_string: TString 
+            n_string: nullable TString 
     )
     do
         empty_init
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -10378,50 +8687,41 @@ redef class AStringExpr
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class AStartStringExpr
-    redef meth n_string=(n: TStartString)
+    redef meth n_string=(n)
     do
         _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 (
     end
 
     private init empty_init do end
 
     init init_astartstringexpr (
-            n_string: TStartString 
+            n_string: nullable TStartString 
     )
     do
         empty_init
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -10429,50 +8729,41 @@ redef class AStartStringExpr
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class AMidStringExpr
-    redef meth n_string=(n: TMidString)
+    redef meth n_string=(n)
     do
         _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 (
     end
 
     private init empty_init do end
 
     init init_amidstringexpr (
-            n_string: TMidString 
+            n_string: nullable TMidString 
     )
     do
         empty_init
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -10480,50 +8771,41 @@ redef class AMidStringExpr
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class AEndStringExpr
-    redef meth n_string=(n: TEndString)
+    redef meth n_string=(n)
     do
         _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 (
     end
 
     private init empty_init do end
 
     init init_aendstringexpr (
-            n_string: TEndString 
+            n_string: nullable TEndString 
     )
     do
         empty_init
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -10531,16 +8813,12 @@ redef class AEndStringExpr
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class ASuperstringExpr
@@ -10552,7 +8830,6 @@ redef class ASuperstringExpr
     )
     do
         empty_init
     )
     do
         empty_init
-        _n_exprs = new List[PExpr]
        for n in n_exprs do
                assert n isa PExpr
                _n_exprs.add(n)
        for n in n_exprs do
                assert n isa PExpr
                _n_exprs.add(n)
@@ -10560,9 +8837,8 @@ redef class ASuperstringExpr
        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
     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
         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
     end
 end
 redef class AParExpr
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _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 (
     end
 
     private init empty_init do end
 
     init init_aparexpr (
-            n_expr: PExpr 
+            n_expr: nullable PExpr 
     )
     do
         empty_init
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -10634,74 +8905,57 @@ redef class AParExpr
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class AAsCastExpr
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_kwas=(n: TKwas)
+    redef meth n_kwas=(n)
     do
         _n_kwas = n
     do
         _n_kwas = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_type=(n: PType)
+    redef meth n_type=(n)
     do
         _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 (
     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
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -10711,7 +8965,7 @@ redef class AAsCastExpr
                assert new_child isa TKwas
                 _n_kwas = new_child
            else
                assert new_child isa TKwas
                 _n_kwas = new_child
            else
-               _n_kwas = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -10721,7 +8975,7 @@ redef class AAsCastExpr
                assert new_child isa PType
                 _n_type = new_child
            else
                assert new_child isa PType
                 _n_type = new_child
            else
-               _n_type = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -10729,98 +8983,69 @@ redef class AAsCastExpr
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class AAsNotnullExpr
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_kwas=(n: TKwas)
+    redef meth n_kwas=(n)
     do
         _n_kwas = n
     do
         _n_kwas = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_kwnot=(n: TKwnot)
+    redef meth n_kwnot=(n)
     do
         _n_kwnot = n
     do
         _n_kwnot = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_kwnull=(n: TKwnull)
+    redef meth n_kwnull=(n)
     do
         _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 (
     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
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -10830,7 +9055,7 @@ redef class AAsNotnullExpr
                assert new_child isa TKwas
                 _n_kwas = new_child
            else
                assert new_child isa TKwas
                 _n_kwas = new_child
            else
-               _n_kwas = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -10840,7 +9065,7 @@ redef class AAsNotnullExpr
                assert new_child isa TKwnot
                 _n_kwnot = new_child
            else
                assert new_child isa TKwnot
                 _n_kwnot = new_child
            else
-               _n_kwnot = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -10850,7 +9075,7 @@ redef class AAsNotnullExpr
                assert new_child isa TKwnull
                 _n_kwnull = new_child
            else
                assert new_child isa TKwnull
                 _n_kwnull = new_child
            else
-               _n_kwnull = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -10858,92 +9083,63 @@ redef class AAsNotnullExpr
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class AIssetAttrExpr
-    redef meth n_kwisset=(n: TKwisset)
+    redef meth n_kwisset=(n)
     do
         _n_kwisset = n
     do
         _n_kwisset = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
     do
         _n_expr = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_id=(n: TAttrid)
+    redef meth n_id=(n)
     do
         _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 (
     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
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -10953,7 +9149,7 @@ redef class AIssetAttrExpr
                assert new_child isa PExpr
                 _n_expr = new_child
            else
                assert new_child isa PExpr
                 _n_expr = new_child
            else
-               _n_expr = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -10963,7 +9159,7 @@ redef class AIssetAttrExpr
                assert new_child isa TAttrid
                 _n_id = new_child
            else
                assert new_child isa TAttrid
                 _n_id = new_child
            else
-               _n_id = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -10971,62 +9167,45 @@ redef class AIssetAttrExpr
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class APlusAssignOp
-    redef meth n_pluseq=(n: TPluseq)
+    redef meth n_pluseq=(n)
     do
         _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 (
     end
 
     private init empty_init do end
 
     init init_aplusassignop (
-            n_pluseq: TPluseq 
+            n_pluseq: nullable TPluseq 
     )
     do
         empty_init
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -11034,50 +9213,41 @@ redef class APlusAssignOp
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class AMinusAssignOp
-    redef meth n_minuseq=(n: TMinuseq)
+    redef meth n_minuseq=(n)
     do
         _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 (
     end
 
     private init empty_init do end
 
     init init_aminusassignop (
-            n_minuseq: TMinuseq 
+            n_minuseq: nullable TMinuseq 
     )
     do
         empty_init
     )
     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
 
     end
 
-    redef meth replace_child(old_child: PNode, new_child: PNode)
+    redef meth replace_child(old_child: PNode, new_child: nullable PNode)
     do
     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
         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
             end
             return
        end
@@ -11085,34 +9255,26 @@ redef class AMinusAssignOp
 
     redef meth visit_all(v: Visitor)
     do
 
     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
     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
     end
 end
 redef class AClosureDef
-    redef meth n_kwwith=(n: TKwwith)
+    redef meth n_kwwith=(n)
     do
         _n_kwwith = n
     do
         _n_kwwith = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_kwdo=(n: TKwdo)
+    redef meth n_kwdo=(n)
     do
         _n_kwdo = n
     do
         _n_kwdo = n
-        if n != null then
-           n.parent = self
-        end
+       n.parent = self
     end
     end
-    redef meth n_expr=(n: PExpr)
+    redef meth n_expr=(n)
     do
         _n_expr = n
         if n != null then
     do
         _n_expr = n
         if n != null then
@@ -11123,43 +9285,37 @@ redef class AClosureDef
     private init empty_init do end
 
     init init_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_id: Collection[Object] , # Should be Collection[TId]
-            n_kwdo: TKwdo ,
-            n_expr: PExpr 
+            n_kwdo: nullable TKwdo ,
+            n_expr: nullable PExpr 
     )
     do
         empty_init
     )
     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
        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
 
         _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
     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
         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
             end
             return
        end
@@ -11181,7 +9337,7 @@ redef class AClosureDef
                assert new_child isa TKwdo
                 _n_kwdo = new_child
            else
                assert new_child isa TKwdo
                 _n_kwdo = new_child
            else
-               _n_kwdo = null
+               abort
             end
             return
        end
             end
             return
        end
@@ -11199,25 +9355,19 @@ redef class AClosureDef
 
     redef meth visit_all(v: Visitor)
     do
 
     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
             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
         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
         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
        do
            var i = _n_id.length
             while i >= 0 do
@@ -11225,16 +9375,14 @@ redef class AClosureDef
                i = i - 1
            end
        end
                i = i - 1
            end
        end
-        if _n_kwdo != null then
-            v.visit(_n_kwdo)
-        end
+        v.visit(_n_kwdo)
         if _n_expr != null then
         if _n_expr != null then
-            v.visit(_n_expr)
+            v.visit(_n_expr.as(not null))
         end
     end
 end
 redef class AQualified
         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
     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]
 
     init init_aqualified (
             n_id: Collection[Object] , # Should be Collection[TId]
-            n_classid: TClassid 
+            n_classid: nullable TClassid 
     )
     do
         empty_init
     )
     do
         empty_init
-        _n_id = new List[TId]
        for n in n_id do
                assert n isa TId
                _n_id.add(n)
        for n in n_id do
                assert n isa TId
                _n_id.add(n)
@@ -11262,9 +9409,8 @@ redef class AQualified
        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
     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
         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)
            end
         if _n_classid != null then
-            v.visit(_n_classid)
+            v.visit(_n_classid.as(not null))
         end
     end
 
         end
     end
 
@@ -11309,7 +9455,7 @@ redef class AQualified
            end
        end
         if _n_classid != null then
            end
        end
         if _n_classid != null then
-            v.visit(_n_classid)
+            v.visit(_n_classid.as(not null))
         end
     end
 end
         end
     end
 end
@@ -11322,7 +9468,6 @@ redef class ADoc
     )
     do
         empty_init
     )
     do
         empty_init
-        _n_comment = new List[TComment]
        for n in n_comment do
                assert n isa TComment
                _n_comment.add(n)
        for n in n_comment do
                assert n isa TComment
                _n_comment.add(n)
@@ -11330,9 +9475,8 @@ redef class ADoc
        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
     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
         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(
 
 redef class Start
     init(
-        n_base: PModule,
+        n_base: nullable PModule,
         n_eof: EOF)
     do
         _n_base = n_base
         _n_eof = n_eof
     end
 
         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
     do
-        assert old_child != null
         if _n_base == old_child then
             if new_child == null then
             else
         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
     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
         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
         end
     end
 end
index f1040fa..f1c6b59 100644 (file)
@@ -4,7 +4,7 @@ package parser_tables
 
 # Parser that build a full AST
 abstract class ParserTable
 
 # 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 [ 
        private meth build_action_table
        do
                _action_table = once [ 
@@ -18117,7 +18117,7 @@ abstract class ParserTable
                        ]
        end
 
                        ]
        end
 
-       attr _goto_table: Array[Array[Int]] = null
+       attr _goto_table: Array[Array[Int]]
        private meth build_goto_table
        do
                _goto_table = once [ 
        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
                        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
 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
 # 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
 
        # Lexer current state
        attr _state: Int = 0
@@ -77,7 +77,7 @@ $ end foreach
                while _token == null do
                        _token = get_token
                end
                while _token == null do
                        _token = get_token
                end
-               return _token
+               return _token.as(not null)
        end
 
        # Give and consume the next token
        end
 
        # Give and consume the next token
@@ -88,11 +88,11 @@ $ end foreach
                        result = get_token
                end
                _token = null
                        result = get_token
                end
                _token = null
-               return result
+               return result.as(not null)
        end
 
        # Get a token, or null if it is discarded
        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
 
        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
 $ 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)
 
        # 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
        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)
 
        # 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 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
 
        redef meth locate: String
        do
@@ -90,10 +90,10 @@ end
 
 redef class Prod
        # The first token of the production node
 
 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
 
        # 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
 
        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.
         # 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
 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 _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
        do
                _state = state
                _nodes = nodes
@@ -80,7 +80,7 @@ special ParserTable
        end
 
        # Push someting in the state stack
        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
        do
                var pos = _stack_pos + 1
                _stack_pos = pos
@@ -100,7 +100,7 @@ special ParserTable
        end
 
        # Pop something from the stack state
        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
        do
                var res = _stack[_stack_pos].nodes
                _stack_pos = _stack_pos -1
@@ -112,7 +112,6 @@ special ParserTable
        do
                push(0, null)
 
        do
                push(0, null)
 
-               var ign: List[Token] = null
                var lexer = _lexer
                while true do
                        var token = lexer.peek
                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
                        var last_line = token.line
 
                        if token isa PError then
-                               assert token isa PError
                                return new Start(null, token)
                        end
 
                                return new Start(null, token)
                        end
 
@@ -165,7 +163,7 @@ special ParserTable
                                return node
                        end
                end
                                return node
                        end
                end
-               return null
+               abort
        end
 
        attr _reduce_table: Array[ReduceAction]
        end
 
        attr _reduce_table: Array[ReduceAction]
@@ -183,11 +181,12 @@ end
 private class SearchTokensVisitor
 special Visitor
        attr _untokenned_nodes: Array[Prod]
 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
        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
                        _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
 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'}
 $   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 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
 $     end
 $     when {@cmd='ADDNODE'}
                                        if ${translate(@node,"ABCDEFGHIJKLMNOPQRSTUVWXYZ","abcdefghijklmnopqrstuvwxyz")} != null then
@@ -236,19 +235,19 @@ $     when {@cmd='ADDNODE'}
                                        end
 $     end
 $     when {@cmd='ADDLIST'}
                                        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
                                                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'}
 $     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 ','-]
 $       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
 $ 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 [ 
        private meth build_action_table
        do
                _action_table = once [ 
@@ -301,7 +300,7 @@ $   end foreach
        end
 $ 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 [ 
        private meth build_goto_table
        do
                _goto_table = once [ 
@@ -330,5 +329,7 @@ $ end
                        [-foreach {parser_data/errors/i}-]${.} [-sep ','-] [-end-]
                ]
        end
                        [-foreach {parser_data/errors/i}-]${.} [-sep ','-] [-end-]
                ]
        end
+
+       init do end
 end
 $ end template
 end
 $ end template
index c03b85a..cd2f9df 100644 (file)
@@ -28,9 +28,13 @@ class @ename
 special ${../@ename}
 $ foreach {elem}
 $   if @is_list
 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
 $   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
 $   end
 $ end
 end
@@ -38,7 +42,7 @@ $ end
 
 class Start
 special Prod
 
 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
     readable writable attr _n_eof: EOF 
 end
 $ end template
@@ -50,12 +54,16 @@ redef class @ename
 $ foreach {elem}
 $   if @is_list
 $   else
 $ foreach {elem}
 $   if @is_list
 $   else
-    redef meth n_@name=(n: @etype)
+    redef meth n_@name=(n)
     do
         _n_@name = n
     do
         _n_@name = n
+$   if @modifier
         if n != null then
            n.parent = self
         end
         if n != null then
            n.parent = self
         end
+$   else
+       n.parent = self
+$   end
     end
 $   end
 $ end
     end
 $   end
 $ end
@@ -68,7 +76,7 @@ $ foreach {elem}
 $   if {@is_list}
             n_@{name}: Collection[Object] [-sep ','-] # Should be Collection[@etype]
 $   else
 $   if {@is_list}
             n_@{name}: Collection[Object] [-sep ','-] # Should be Collection[@etype]
 $   else
-            n_@{name}: @etype [-sep ','-]
+            n_@{name}: nullable @etype [-sep ','-]
 $   end
 $ end
     )
 $   end
 $ end
     )
@@ -79,24 +87,27 @@ $ end
         empty_init
 $ foreach {elem}
 $   if @is_list
         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
        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
         _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
 
 $   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
     do
-        assert old_child != null
 $ foreach {elem}
 $   if @is_list
         for i in [0.._n_@{name}.length[ do
 $ 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
                assert new_child isa @etype
                 _n_@{name} = new_child
            else
+$   if @modifier
                _n_@{name} = null
                _n_@{name} = null
+$   else
+               abort
+$   end
             end
             return
        end
             end
             return
        end
@@ -134,9 +149,13 @@ $     if @is_list
                 v.visit(n)
            end
 $     else
                 v.visit(n)
            end
 $     else
+$       if @modifier
         if _n_@{name} != null then
         if _n_@{name} != null then
-            v.visit(_n_@{name})
+            v.visit(_n_@{name}.as(not null))
         end
         end
+$       else
+        v.visit(_n_@{name})
+$       end
 $     end
 $   end foreach
     end
 $     end
 $   end foreach
     end
@@ -153,9 +172,13 @@ $     if @is_list
            end
        end
 $     else
            end
        end
 $     else
+$       if @modifier
         if _n_@{name} != null then
         if _n_@{name} != null then
-            v.visit(_n_@{name})
+            v.visit(_n_@{name}.as(not null))
         end
         end
+$       else
+        v.visit(_n_@{name})
+$       end
 $     end
 $   end foreach
     end
 $     end
 $   end foreach
     end
@@ -164,16 +187,15 @@ $ end foreach
 
 redef class Start
     init(
 
 redef class Start
     init(
-        n_base: $baseprod,
+        n_base: nullable $baseprod,
         n_eof: EOF)
     do
         _n_base = n_base
         _n_eof = n_eof
     end
 
         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
     do
-        assert old_child != null
         if _n_base == old_child then
             if new_child == null then
             else
         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
     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
         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
         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
 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]
        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
 
        # 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]
        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
 
        # 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
        do
                _stypes[v] = t
        end
@@ -87,7 +87,7 @@ abstract class VariableContext
        attr _all_variables: Set[Variable]
 
        # Updated static type of variables
        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
 
        # 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
                                # 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
                                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)
                                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
 # 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
 
        # 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
        # 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)
 
        # 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
 
        init(node: PNode)
        do
@@ -85,11 +85,11 @@ special EscapableBlock
 
        redef meth is_break_block do return _closure.is_break
 
 
        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
 
 
        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
        do
                super(node)
                _closure = closure
@@ -102,13 +102,13 @@ end
 class AEscapeExpr
 special PNode
        # The associated escapable block
 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
 
        # 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
        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
                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
                                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
                        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(", ")}.")
 
                        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
                                        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}.")
 
                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
 
                # 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
 
                        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
                        prop.new_global
                        prop.global.is_init = prop.is_init
                end
@@ -266,10 +261,10 @@ redef class MMLocalProperty
 end
 
 redef class MMImplicitInit
 end
 
 redef class MMImplicitInit
-       readable attr _super_init: MMLocalProperty = null
+       readable attr _super_init: nullable MMLocalProperty = null
        redef meth accept_property_visitor(v)
        do
        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
                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
                        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
                end
                signature = new MMSignature(params, null, local_class.get_type)
        end
@@ -319,10 +316,10 @@ end
 private class ClassBuilderVisitor
 special AbsSyntaxVisitor
        # Current class arity
 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
 
        # 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
 
        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 _closure_decls: Array[AClosureDecl] = new Array[AClosureDecl]
 
        # Current signature
-       readable writable attr _signature: MMSignature = null 
+       readable writable attr _signature: nullable MMSignature = null 
 end
 
 ###############################################################################
 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]
                # 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
                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)
 
 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
 
        # Visibility level (intrude/public/private)
        meth visibility_level: Int is abstract
@@ -498,7 +495,8 @@ end
 
 
 redef class PClassdef
 
 
 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
 
        # 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
                end
                _local_class = local_class
                v.local_class_arity = 0
-               v.formals = new HashMap[Symbol, MMTypeFormalParameter]
+               v.formals = local_class.formal_dict
 
                #####
                super
                #####
 
 
                #####
                super
                #####
 
-               _local_class.formal_dict = v.formals
                v.formals = null
        end
 
                v.formals = null
        end
 
@@ -668,7 +665,7 @@ end
 
 redef class AFormaldef
        # The associated formal generic parameter (MM entity)
 
 redef class AFormaldef
        # The associated formal generic parameter (MM entity)
-       attr _formal: MMSrcTypeFormalParameter
+       attr _formal: nullable MMSrcTypeFormalParameter
 
        redef meth accept_class_builder(v)
        do
 
        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
                        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
                        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
                                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
 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)
 
        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)
                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)
                                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
                                end
                        end
                end
@@ -908,27 +904,31 @@ redef class PPropdef
 end
 
 redef class AAttrPropdef
 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
 
        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
                _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
                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
        
                end
        end
        
@@ -937,31 +937,35 @@ redef class AAttrPropdef
                super
                var t: MMType
                if n_type != null then
                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
 
                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)
                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
                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
                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
                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
                end
        end
 
        redef meth accept_abs_syntax_visitor(v)
        do
-               v.local_property = prop
+               v.local_property = _prop
                super
                v.local_property = null
        end
                super
                v.local_property = null
        end
@@ -969,30 +973,33 @@ end
 
 redef class AMethPropdef
        # Name of the method
 
 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
 
        redef meth accept_property_builder(v)
        do
                super
+               var name: Symbol
                if n_methid == null then
                        if self isa AConcreteInitPropdef then
                if n_methid == null then
                        if self isa AConcreteInitPropdef then
-                               _name = once "init".to_symbol
+                               name = once "init".to_symbol
                        else
                        else
-                               _name = once "main".to_symbol
+                               name = once "main".to_symbol
                        end
                        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
                        # 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
                                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
                _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
                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
                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
        end
 
        redef meth accept_abs_syntax_visitor(v)
        do
-               v.local_property = method
+               v.local_property = _method
                super
                v.local_property = null
        end
                super
                v.local_property = null
        end
@@ -1033,7 +1040,8 @@ redef class AMainMethPropdef
 end
 
 redef class ATypePropdef
 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
 
        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)
        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
                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
        end
        
        redef meth accept_abs_syntax_visitor(v)
        do
-               v.local_property = prop
+               v.local_property = _prop
                super
                v.local_property = null
        end
                super
                v.local_property = null
        end
@@ -1077,7 +1085,7 @@ end
 
 redef class PMethid
        # Method name
 
 redef class PMethid
        # Method name
-       readable attr _name: Symbol 
+       readable attr _name: nullable Symbol 
 
        redef meth accept_property_builder(v)
        do
 
        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
                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
                        end
-                       var ret: MMType = null
+                       var ret: nullable MMType = null
                        if n_type != null then
                                ret = n_type.get_stype(v)
                        end
                        if n_type != null then
                                ret = n_type.get_stype(v)
                        end
@@ -1132,12 +1140,13 @@ redef class ASignature
 end
 
 redef class PParam
 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
 
        # 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
 
        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
                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
                        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
                                        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
                                end
                                p.variable.stype = stype
                        end
@@ -1172,7 +1181,8 @@ redef class AParam
 end
 
 redef class AClosureDecl
 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
 
        redef meth accept_property_verifier(v)
        do
@@ -1188,7 +1198,7 @@ redef class AClosureDecl
                end
 
                # Add the finalizer to the closure signature
                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)
 
                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
                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
                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 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
 
        # 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
 
        init(mod: MMSrcModule, n: Symbol, cla: PClassdef, a: Int)
        do
@@ -101,7 +101,7 @@ end
 
 redef class MMLocalProperty
        # The attached node (if any)
 
 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
 
        # 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
 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
        do
                super(name, cla)
                _node = n
@@ -193,22 +193,20 @@ end
 # Local variables
 abstract class Variable
        # Name of the variable
 # Local variables
 abstract class Variable
        # Name of the variable
-       readable attr _name: Symbol 
+       readable attr _name: Symbol
 
        # Declaration AST node
 
        # Declaration AST node
-       readable attr _decl: PNode
+       readable attr _decl: nullable PNode
 
        # Static type
 
        # 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
 
 
        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
        do
-               #assert n != null
-               #assert d != null
                _name = n
                _decl = d
        end
                _name = n
                _decl = d
        end
@@ -225,7 +223,7 @@ end
 class ParamVariable
 special Variable
        redef meth kind do return once "parameter"
 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)
 end
 
 # Automatic variable (like in the 'for' statement)
@@ -323,43 +321,45 @@ special Visitor
        end
 
        # The current module
        end
 
        # The current module
-       readable writable attr _module: MMSrcModule 
+       readable attr _module: MMSrcModule
 
        # The current class
 
        # 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
 
        # 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
 
        # 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
        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
 
        #
        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
        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
        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
                        return true
                end
                # Do not enforce nullable subtype rules yet
@@ -392,8 +392,9 @@ special Visitor
        end
 
        # Combine check_conform and check_expr
        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
        do
+               if stype == null then return false
                if check_expr(n) then return check_conform(n, n.stype, stype) else return false
        end
 
                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
        #   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
        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
                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
                                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
                                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
                                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
 end
 
 redef class Token
-       attr _symbol: Symbol
+       attr _symbol_cache: nullable Symbol
 
        # Symbol associated with the text
        # Lazily computed
        meth to_symbol: Symbol
        do
 
        # 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
                if s == null then
                        s = text.to_symbol
-                       _symbol = s
+                       _symbol_cache = s
                end
                return s
        end
                end
                return s
        end
@@ -475,10 +476,10 @@ redef class AAttrPropdef
        meth prop: MMSrcAttribute is abstract
 
        # Associated read accessor (MM entity)
        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)
 
        # Associated write accessor (MM entity)
-       meth writemethod: MMSrcMethod is abstract
+       meth writemethod: nullable MMSrcMethod is abstract
 end
 
 redef class AMethPropdef
 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)
        # 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
 
        # 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
 
        # 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
 
        # 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
 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)
        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
 
                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
                        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 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
 
                if cla.formal_dict.has_key(name) then
                        if n_types.length > 0 then
@@ -577,7 +578,7 @@ redef class AType
                        return t
                end
 
                        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
                        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
                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
                        end
                        t = local_class.get_instantiate_type(tab)
                else
@@ -661,33 +664,39 @@ end
 
 redef class AVardeclExpr
        # Assiociated local variable
 
 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
 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
 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
 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
 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
 end
 
 redef class PClosureDef
        # Associated closure
-       readable writable attr _closure: MMClosure
+       #readable writable attr _closure: nullable MMClosure
+       meth closure: MMClosure is abstract
 
        # Automatic variables
 
        # Automatic variables
-       readable writable attr _variables: Array[AutoVariable]
+       readable writable attr _variables: nullable Array[AutoVariable]
 end
 end
index 6717511..878de83 100644 (file)
@@ -44,25 +44,28 @@ special AbsSyntaxVisitor
        end
 
        # Current knowledge about variables names and types
        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
 
        # 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
 
        # 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
 
        # 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
 
        # 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
 
        # 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)
 
        # 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
 
 
        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
        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
                        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
                                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
        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
                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)
        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
                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)
                        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
                                        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]
                                        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
 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
        end
 end
 
 redef class AClosureDecl
        # The corresponding escapable object
-       readable attr _escapable: EscapableBlock
+       readable attr _escapable: nullable EscapableBlock
 
        redef meth accept_typing(v)
        do
 
        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)
 
                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
 
 
                super
 
@@ -280,7 +282,9 @@ redef class AClosureDecl
 end
 
 redef class PType
 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)
        redef meth after_typing(v)
        do
                _stype = get_stype(v)
@@ -300,9 +304,9 @@ redef class PExpr
                        print "{locate}: is_statement"
                        abort
                end
                        print "{locate}: is_statement"
                        abort
                end
-               return _stype
+               return _stype.as(not null)
        end
        end
-       attr _stype: MMType
+       attr _stype: nullable MMType
 
        # Is the expression the implicit receiver
        meth is_implicit_self: Bool do return false
 
        # 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 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
 
        # 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
 
        # 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
 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)
        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.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
                        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
                        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
        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.")
                        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.")
                        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
                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
                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
                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
                        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
                end
                _is_typed = true
        end
@@ -440,7 +448,7 @@ redef class AIfExpr
 
                # Process the 'then'
                if n_then != null then
 
                # 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
 
                        v.visit(n_then)
                end
 
@@ -453,7 +461,7 @@ redef class AIfExpr
 
                # Process the 'else'
                if n_else != null then
 
                # 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
 
                        v.visit(n_else)
                end
 
@@ -466,12 +474,13 @@ end
 
 redef class AWhileExpr
        # The corresponding escapable block
 
 redef class AWhileExpr
        # The corresponding escapable block
-       readable attr _escapable: EscapableBlock
+       readable attr _escapable: nullable EscapableBlock
 
        redef meth accept_typing(v)
        do
 
        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
                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
 
                # 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
 
                        v.visit(n_block)
                end
 
@@ -498,36 +507,45 @@ redef class AWhileExpr
 end
 
 redef class AForExpr
 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
        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)
 
                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
                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
                _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")
                _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
 
        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
 
 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
        # 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
        do
                if type_lvalue == null then
                        return null
@@ -618,7 +641,7 @@ redef class AReassignFormExpr
        end
 
        # Method used through the reassigment operator (once computed)
        end
 
        # Method used through the reassigment operator (once computed)
-       readable attr _assign_method: MMMethod
+       readable attr _assign_method: nullable MMMethod
 end
 
 redef class AVarReassignExpr
 end
 
 redef class AVarReassignExpr
@@ -652,11 +675,14 @@ redef class AMinusAssignOp
 end
 
 redef class ASelfExpr
 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
        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
                _stype = v.variable_ctx.stype(variable)
                _is_typed = true
        end
@@ -782,7 +808,8 @@ redef class ACharExpr
 end
 
 redef class AStringFormExpr
 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
        redef meth after_typing(v)
        do
                _stype = v.type_string
@@ -793,17 +820,22 @@ redef class AStringFormExpr
 end
 
 redef class ASuperstringExpr
 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
        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.")
                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.")
                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
 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)
 
        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)
        end
 
        private meth do_typing(v: TypingVisitor, element_type: MMType)
@@ -844,7 +877,8 @@ redef class AArrayExpr
 end
 
 redef class ARangeExpr
 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
        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
 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
        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
                        _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
                                _arguments = process_signature(v, signature, p.name, n_args.to_a)
                        end
                else
@@ -917,19 +951,19 @@ special ASuperInitCall
                        return
                end
 
                        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 stypes = new Array[MMType]
-                       var stype: MMType = null
+                       var stype: nullable MMType = null
                        for prop in precs do
                                assert prop isa MMMethod
                        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
                                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
                        end
                        _stype = stype
                end
@@ -942,10 +976,10 @@ end
 
 redef class AAttrFormExpr
        # Attribute accessed
 
 redef class AAttrFormExpr
        # Attribute accessed
-       readable attr _prop: MMAttribute
+       readable attr _prop: nullable MMAttribute
 
        # Attribute type of the acceded attribute
 
        # 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)
 
        # 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
 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)
 
        # 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.
 
        # 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
        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
        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
        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)
                                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
                                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
 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)
        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)
                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
 
                _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
        do
-               if type_recv == null then return null
                var lc = type_recv.local_class
                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)
                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)
        end
 
        # The invoked method (once computed)
-       readable attr _prop: MMMethod
+       readable attr _prop: nullable MMMethod
 
        # The return type (if any) (once computed)
 
        # 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
 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]
                        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
                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
                                        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
                                        break
                                end
                        end
@@ -1207,8 +1240,8 @@ redef class ANewExpr
 special AAbsSendExpr
        redef meth after_typing(v)
        do
 special AAbsSendExpr
        redef meth after_typing(v)
        do
+               if n_type._stype == null then return
                var t = n_type.stype
                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
                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 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
 
        # 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
 
        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)
        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
 
                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
 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)
        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
                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
                                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)
                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)
                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.")
                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
 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)
                        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
                                        n.after_typing(v)
                                        return
                                else
@@ -1423,7 +1457,7 @@ redef class ACallFormExpr
                                                return
                                        end
                                        var vform = variable_create(variable)
                                                return
                                        end
                                        var vform = variable_create(variable)
-                                       vform.variable = variable
+                                       vform._variable = variable
                                        replace_with(vform)
                                        vform.after_typing(v)
                                        return
                                        replace_with(vform)
                                        vform.after_typing(v)
                                        return
@@ -1436,7 +1470,7 @@ redef class ACallFormExpr
 
        redef meth closure_defs
        do
 
        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
                        return null
                else
                        return n_closure_defs.to_a
@@ -1509,6 +1543,9 @@ end
 
 redef class AClosureCallExpr
 special AAbsAbsSendExpr
 
 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
        redef meth after_typing(v)
        do
                var va = variable
@@ -1527,10 +1564,13 @@ special AAbsAbsSendExpr
 end
 
 redef class PClosureDef
 end
 
 redef class PClosureDef
+       attr _closure: nullable MMClosure
+       redef meth closure do return _closure.as(not null)
+
        # The corresponding escapable object
        # 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)
        redef meth accept_typing(v)
        do
                # Typing is deferred, wait accept_typing2(v)
@@ -1551,7 +1591,7 @@ redef class AClosureDef
                        return
                end
 
                        return
                end
 
-               closure = esc.closure
+               _closure = esc.closure
 
                var old_var_ctx = v.variable_ctx
                var old_base_var_ctx = v.base_variable_ctx
 
                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
 
 class B
 special A
-       redef meth ==(a: Object): Bool
+       redef meth ==(a: nullable Object): Bool
        do
                if not a isa B then
                        return false
        do
                if not a isa B then
                        return false
index 7dde9d5..2d48bd9 100644 (file)
@@ -22,7 +22,7 @@ class Foo
                10.output
        end
 
                10.output
        end
 
-       redef meth ==(o: Object): Bool
+       redef meth ==(o: nullable Object): Bool
        do
                return true
        end
        do
                return true
        end
index c0b974d..2a2a403 100644 (file)
@@ -46,7 +46,7 @@ class A
           5.output
           return self
    end
           5.output
           return self
    end
-   redef meth ==(a: Object): Bool
+   redef meth ==(a: nullable Object): Bool
    do
           7.output
           return true
    do
           7.output
           return true
index eac89d2..3045dd8 100644 (file)
@@ -20,5 +20,5 @@ print('1')
 print("1")
 print(true)
 print(false)
 print("1")
 print(true)
 print(false)
-print(null)
+print("")
 print(["1"])
 print(["1"])