DefinitionTree { definitions: [ Namespace( NamespaceDefinition { namespace: Keyword { value: "namespace", position: 0, }, name: Identifier { position: 10, value: "A\B\C\D\E", }, semicolon: 19, definitions: [ Function( FunctionDefinition { comments: CommentGroup { comments: [], }, attributes: [], function: Keyword { value: "function", position: 22, }, name: Identifier { position: 31, value: "foo", }, templates: None, parameters: FunctionLikeParameterListDefinition { comments: CommentGroup { comments: [], }, left_parenthesis: 34, parameters: CommaSeparated { inner: [ FunctionLikeParameterDefinition { comments: CommentGroup { comments: [], }, attributes: [], type_definition: String( Keyword { value: "string", position: 35, }, ), ellipsis: None, variable: Variable { position: 42, name: "$s", }, default: None, }, ], commas: [], }, right_parenthesis: 44, }, return_type: FunctionLikeReturnTypeDefinition { colon: 45, type_definition: Identifier( TemplatedIdentifier { name: Identifier { position: 47, value: "self", }, templates: None, }, ), }, body: BlockStatement { comments: CommentGroup { comments: [], }, left_brace: 52, statements: [ Expression( ExpressionStatement { comments: CommentGroup { comments: [], }, expression: ExitConstruct( ExitWith { comments: CommentGroup { comments: [], }, exit: Keyword { value: "exit", position: 59, }, left_parenthesis: 63, value: Some( Literal( Integer( LiteralInteger { comments: CommentGroup { comments: [], }, value: "0", position: 64, }, ), ), ), right_parenthesis: 65, }, ), semicolon: 66, }, ), ], right_brace: 68, }, }, ), ], }, ), ], eof: 70, }