+- TopLevel
   +- Statements
   |  +- Statement
   |  |  +- Declaration
   |  |     +- ImportDeclaration
   |  |        +- T-import
   |  |        +- ImportPath
   |  |           +- ImportPathIdentifier
   |  |              +- Identifier
   |  |                 +- T-Identifier
   |  +- Statement
   |  |  +- Declaration
   |  |     +- StructDeclaration
   |  |        +- T-struct
   |  |        +- StructName
   |  |        |  +- Identifier
   |  |        |     +- T-Identifier
   |  |        +- TypeInheritanceClause
   |  |        |  +- T-colon
   |  |        |  +- TypeInheritanceList
   |  |        |     +- TypeIdentifier
   |  |        |        +- TypeName
   |  |        |           +- Identifier
   |  |        |              +- T-Identifier
   |  |        +- StructBody
   |  |           +- T-lbrace
   |  |           +- StructMembers
   |  |           |  +- StructMember
   |  |           |     +- Declaration
   |  |           |        +- VariableDeclaration
   |  |           |           +- VariableDeclarationHead
   |  |           |           |  +- T-var
   |  |           |           +- VariableName
   |  |           |           |  +- Identifier
   |  |           |           |     +- T-Identifier
   |  |           |           +- TypeAnnotation
   |  |           |           |  +- T-colon
   |  |           |           |  +- SType
   |  |           |           |     +- T-some
   |  |           |           |     +- SType
   |  |           |           |        +- TypeIdentifier
   |  |           |           |           +- TypeName
   |  |           |           |              +- Identifier
   |  |           |           |                 +- T-Identifier
   |  |           |           +- CodeBlock
   |  |           |              +- T-lbrace
   |  |           |              +- Statements
   |  |           |              |  +- Statement
   |  |           |              |     +- Expression
   |  |           |              |        +- PrefixExpression
   |  |           |              |           +- PostfixExpression
   |  |           |              |              +- PostfixExpression
   |  |           |              |              |  +- PrimaryExpression
   |  |           |              |              |     +- Identifier
   |  |           |              |              |        +- T-Identifier
   |  |           |              |              +- FunctionCallArgumentClause
   |  |           |              |                 +- T-lparen
   |  |           |              |                 +- T-rparen
   |  |           |              +- T-rbrace
   |  |           +- T-rbrace
   |  +- Statement
   |  |  +- Expression
   |  |     +- PrefixExpression
   |  |        +- PostfixExpression
   |  |           +- PostfixExpression
   |  |           |  +- PrimaryExpression
   |  |           |     +- MacroExpansionExpression
   |  |           |        +- T-hash
   |  |           |        +- Identifier
   |  |           |           +- T-Identifier
   |  |           +- ClosureExpression
   |  |              +- T-lbrace
   |  |              +- Statements
   |  |              |  +- Statement
   |  |              |     +- Expression
   |  |              |        +- PrefixExpression
   |  |              |           +- PostfixExpression
   |  |              |              +- PostfixExpression
   |  |              |              |  +- PrimaryExpression
   |  |              |              |     +- Identifier
   |  |              |              |        +- T-Identifier
   |  |              |              +- FunctionCallArgumentClause
   |  |              |                 +- T-lparen
   |  |              |                 +- T-rparen
   |  |              +- T-rbrace
   |  +- Statement
   |  |  +- Declaration
   |  |     +- ConstantDeclaration
   |  |        +- T-let
   |  |        +- PatternInitializerList
   |  |           +- PatternInitializer
   |  |              +- Pattern
   |  |              |  +- WildcardPattern
   |  |              |  |  +- T-underscore
   |  |              |  +- TypeAnnotation
   |  |              |     +- T-colon
   |  |              |     +- SType
   |  |              |        +- TypeIdentifier
   |  |              |           +- TypeName
   |  |              |              +- Identifier
   |  |              |                 +- T-Identifier
   |  |              +- Initializer
   |  |                 +- T-eq
   |  |                 +- Expression
   |  |                    +- PrefixExpression
   |  |                       +- PostfixExpression
   |  |                          +- PrimaryExpression
   |  |                             +- MacroExpansionExpression
   |  |                                +- T-hash
   |  |                                +- Identifier
   |  |                                |  +- T-Identifier
   |  |                                +- FunctionCallArgumentClause
   |  |                                   +- T-lparen
   |  |                                   +- FunctionCallArgumentList
   |  |                                   |  +- FunctionCallArgument
   |  |                                   |  |  +- FunctionCallIdentifier
   |  |                                   |  |  |  +- Identifier
   |  |                                   |  |  |     +- T-Identifier
   |  |                                   |  |  +- T-colon
   |  |                                   |  |  +- Expression
   |  |                                   |  |     +- PrefixExpression
   |  |                                   |  |        +- PostfixExpression
   |  |                                   |  |           +- PrimaryExpression
   |  |                                   |  |              +- LiteralExpression
   |  |                                   |  |                 +- Literal
   |  |                                   |  |                    +- T-SingleStringLiteral
   |  |                                   |  +- T-comma
   |  |                                   |  +- FunctionCallArgument
   |  |                                   |  |  +- FunctionCallIdentifier
   |  |                                   |  |  |  +- Identifier
   |  |                                   |  |  |     +- T-Identifier
   |  |                                   |  |  +- T-colon
   |  |                                   |  |  +- Expression
   |  |                                   |  |     +- PrefixExpression
   |  |                                   |  |        +- PostfixExpression
   |  |                                   |  |           +- PrimaryExpression
   |  |                                   |  |              +- LiteralExpression
   |  |                                   |  |                 +- Literal
   |  |                                   |  |                    +- NumericLiteral
   |  |                                   |  |                       +- IntegerLiteral
   |  |                                   |  |                          +- T-DecimalLiteral
   |  |                                   |  +- T-comma
   |  |                                   |  +- FunctionCallArgument
   |  |                                   |     +- FunctionCallIdentifier
   |  |                                   |     |  +- Identifier
   |  |                                   |     |     +- T-Identifier
   |  |                                   |     +- T-colon
   |  |                                   |     +- Expression
   |  |                                   |        +- PrefixExpression
   |  |                                   |           +- PostfixExpression
   |  |                                   |              +- PrimaryExpression
   |  |                                   |                 +- ImplicitMemberExpression
   |  |                                   |                    +- T-dot
   |  |                                   |                    +- Identifier
   |  |                                   |                       +- T-Identifier
   |  |                                   +- T-rparen
   |  +- Statement
   |  |  +- Expression
   |  |     +- PrefixExpression
   |  |        +- PostfixExpression
   |  |           +- PrimaryExpression
   |  |              +- Keyword
   |  |                 +- T-func
   |  +- Statement
   |  |  +- Expression
   |  |     +- PrefixExpression
   |  |        +- PostfixExpression
   |  |           +- PostfixExpression
   |  |           |  +- PrimaryExpression
   |  |           |     +- Identifier
   |  |           |        +- T-Identifier
   |  |           +- PostfixOperator
   |  |              +- Operator
   |  |                 +- OperatorHead
   |  |                    +- T-lt
   |  +- Statement
   |  |  +- Expression
   |  |     +- PrefixExpression
   |  |        +- PostfixExpression
   |  |           +- PrimaryExpression
   |  |              +- Identifier
   |  |                 +- T-Identifier
   |  +- Statement
   |  |  +- Expression
   |  |     +- PrefixExpression
   |  |        +- PostfixExpression
   |  |           +- PrimaryExpression
   |  |              +- Identifier
   |  |                 +- T-Identifier
   |  +- Statement
   |  |  +- Expression
   |  |     +- PrefixExpression
   |  |        +- PostfixExpression
   |  |           +- PrimaryExpression
   |  |              +- Operator
   |  |                 +- OperatorHead
   |  |                    +- T-gt
   |  +- Statement
   |  |  +- Expression
   |  |     +- PrefixExpression
   |  |        +- PostfixExpression
   |  |           +- PrimaryExpression
   |  +- Statement
   |  |  +- Expression
   |  |     +- PrefixExpression
   |  |        +- PostfixExpression
   |  |           +- PrimaryExpression
   |  |              +- Error
   |  +- Statement
   |  |  +- Expression
   |  |     +- PrefixExpression
   |  |        +- PostfixExpression
   |  |           +- PrimaryExpression
   |  |              +- Keyword
   |  |                 +- T-underscore
   |  +- Statement
   |     +- LabeledStatement
   |        +- StatementLabel
   |        |  +- LabelName
   |        |  |  +- Identifier
   |        |  |     +- ContextSensitiveKeyword
   |        |  |        +- T-optional
   |        |  +- T-colon
   |        +- LoopStatement
   |           +- RepeatWhileStatement
   |              +- T-repeat
   |              +- CodeBlock
   |              |  +- Error
   |              |  +- Statements
   |              |  |  +- Statement
   |              |  |  |  +- Expression
   |              |  |  |     +- PrefixExpression
   |              |  |  |        +- PostfixExpression
   |              |  |  |           +- PrimaryExpression
   |              |  |  +- Statement
   |              |  |  |  +- Expression
   |              |  |  |     +- PrefixExpression
   |              |  |  |        +- PostfixExpression
   |              |  |  |           +- PrimaryExpression
   |              |  |  |              +- Error
   |              |  |  +- Statement
   |              |  |  |  +- Expression
   |              |  |  |     +- PrefixExpression
   |              |  |  |        +- PostfixExpression
   |              |  |  |           +- PrimaryExpression
   |              |  |  |              +- Identifier
   |              |  |  |                 +- T-Identifier
   |              |  |  +- Statement
   |              |  |     +- Expression
   |              |  |        +- PrefixExpression
   |              |  |           +- PostfixExpression
   |              |  |              +- PrimaryExpression
   |              |  |                 +- Identifier
   |              |  |                    +- T-Identifier
   |              |  +- Error
   |              +- Error
   |              +- Expression
   |                 +- PrefixExpression
   |                    +- PostfixExpression
   |                       +- PrimaryExpression
   |                          +- Operator
   |                             +- OperatorHead
   |                                +- T-question
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
   +- Error
