class CaseItem(GPRNode): choice = Field() decls = Field()
class PackageExtension(GPRNode): extended_name = Field(type=T.Identifier.list)
class PackageRenaming(GPRNode): renamed_name = Field(type=T.Identifier.list)
class ProjectDeclaration(GPRNode): qualifier = Field(type=T.ProjectQualifier) project_name = Field(type=T.Expr) extension = Field(type=T.ProjectExtension) decls = Field(type=T.GPRNode.list) end_name = Field(type=T.Expr)
class VariableDecl(GPRNode): var_name = Field(type=T.Identifier) var_type = Field(type=T.TypeReference) expr = Field(type=T.TermList)
class AdaAccessSubp(AdaPreludeNode): subp_kind = Field(type=AdaEntityKind) skips = Field(type=T.AdaSkip.list)
class WithDecl(GPRNode): is_limited = Field(type=T.Limited) path_names = Field(T.Expr.list)
class BarCode(FooNode): a = Field() prop_1 = Property(Self.a.prop_2)
class Plus(Expression): left = Field() right = Field() result = Property(Self.left.result + Self.right.result)
class Plus(Expr): lhs = Field() rhs = Field()
class UnreferencedNode(FooNode): untyped_field = Field()
class SynthNode(FooNode): name = Field(type=Name) items = Field(type=Literal.list)
class BlockVar(DefNode): name_field = Field(type=T.Name) name = Property(Self.name_field.symbol)
class Param(DefNode): name_field = Field(type=T.Name) name = Property(Self.name_field.symbol)
class AdaGeneric(AdaPreludeNode): skips = Field(type=T.GPRNode)
class AdaPragma(AdaContextClause): skips = Field(type=T.AdaSkip.list)
class AdaWithFormal(AdaPreludeNode): kind = Field(T.AdaEntityKind) skips = Field(type=T.AdaSkip.list)
class AdaWith(AdaContextClause): has_limited = Field(type=T.Limited) has_private = Field(type=T.Private) packages = Field(T.Expr.list)
class AdaPrelude(AdaPreludeNode): context_clauses = Field(type=T.AdaContextClause.list) library_item = Field(type=T.AdaLibraryItem)
class AdaSubp(AdaMain): subp_kind = Field(type=AdaEntityKind) name = Field(type=T.Expr)
class ProjectExtension(GPRNode): is_all = Field(type=T.AllQualifier) path_name = Field(type=T.StringLiteral)
class AdaPkg(AdaMain): has_private = Field(type=T.Private) name = Field(type=T.Expr)
class Project(GPRNode): context_clauses = Field(type=T.WithDecl.list) project_decl = Field(type=T.ProjectDeclaration)
class AdaPkgBody(AdaMain): name = Field(type=T.Expr)
class AttributeDecl(GPRNode): attr_name = Field(type=T.Identifier) attr_index = Field(type=T.GPRNode) expr = Field(type=T.TermList)
class AdaLibraryItem(AdaPreludeNode): generic_stub = Field(type=T.AdaGeneric) separate = Field(type=T.AdaSeparate) main = Field(type=T.AdaMain)
class PackageDecl(GPRNode): pkg_name = Field(type=T.Identifier) pkg_spec = Field(type=T.GPRNode)
class AdaSeparate(AdaPreludeNode): parent_name = Field(type=T.Expr)
class PackageSpec(GPRNode): extension = Field(type=T.PackageExtension) decls = Field(type=T.GPRNode.list) end_name = Field(type=T.Identifier)
class CaseConstruction(GPRNode): var_ref = Field() items = Field()