class ListNode(FooNode): nb_list = Field() prop = Property(expr)
class Name(FooNode): tok = Field()
class LiteralSequence(FooNode): name = Field() items = Field() prop = Property(New(SynthNode, name=Self.name, items=Self.items), memoized=True)
class Compound(Expression): prefix = Field() suffix = Field()
class IndentNode(FooNode): lit_1 = Field() lit_2 = Field()
class Literal(FooNode): tok = Field()
class ListNode(FooNode): items = Field()
class Plus(Expression): left = Field() right = Field() result = Property(Self.left.result + Self.right.result)
class Literal(FooNode): tok = Field() a = AbstractProperty(runtime_check=True, type=FooNode.env_el()) b = Property(Self.a.cast(BarNode.env_el()))
class Def(Stmt): id = Field() body = Field() env_spec = EnvSpec(add_env=True, add_to_env=add_to_env(Self.id.symbol, Self))
class Name(FooNode): tok = Field(type=T.Token)
class Names(Struct): label = Field(type=T.Name) name_list = Field(type=T.Name.array_type())
class NumberNode(FooNode): tok = Field()
class Literal(Expression): tok = Field() result = ExternalProperty()
class Num(FooNode): field = Field()
class Name(Expression): tok = Field() designated_unit = ExternalProperty(type=AnalysisUnitType) result = Property(Self.designated_unit.root.cast(Expression).result)
class UnreferencedNode(FooNode): untyped_field = Field()
class NewLineNode(FooNode): lit_1 = Field() lit_2 = Field()
class MyStruct(Struct): a = Field(type=LongType) b = Field(type=LongType)
class CompositeNode(FooNode): lit_1 = Field() lit_2 = Field() lit_3 = Field() lit_4 = Field()
class Def(FooNode): name = Field() body = Field() env_spec = EnvSpec(add_env=True, add_to_env=(Self.name, Self))
class SynthNode(FooNode): name = Field(type=Token) items = Field(type=Literal.list_type())
class Block(Stmt): items = Field() env_spec = EnvSpec(add_env=True)
class Number(Expression): tok = Field()
class Example(FooNode): name = Field() prop = Property(expr_fn)
class ExampleNode(FooNode): body = Field() prop = Property(match_expr)
class BarNode(FooNode): list_node = Field()