DefinitionTree { definitions: [ Interface( InterfaceDefinition { comments: CommentGroup { comments: [], }, attributes: [], interface: Keyword { value: "interface", position: 0, }, name: Identifier { position: 10, value: "A", }, templates: None, extends: None, body: InterfaceDefinitionBody { left_brace: 12, members: [], right_brace: 13, }, }, ), Interface( InterfaceDefinition { comments: CommentGroup { comments: [], }, attributes: [], interface: Keyword { value: "interface", position: 15, }, name: Identifier { position: 25, value: "B", }, templates: None, extends: None, body: InterfaceDefinitionBody { left_brace: 27, members: [], right_brace: 28, }, }, ), Interface( InterfaceDefinition { comments: CommentGroup { comments: [], }, attributes: [], interface: Keyword { value: "interface", position: 30, }, name: Identifier { position: 40, value: "C", }, templates: None, extends: None, body: InterfaceDefinitionBody { left_brace: 42, members: [], right_brace: 43, }, }, ), Interface( InterfaceDefinition { comments: CommentGroup { comments: [], }, attributes: [], interface: Keyword { value: "interface", position: 45, }, name: Identifier { position: 55, value: "D", }, templates: None, extends: None, body: InterfaceDefinitionBody { left_brace: 57, members: [], right_brace: 58, }, }, ), Function( FunctionDefinition { comments: CommentGroup { comments: [], }, attributes: [], function: Keyword { value: "function", position: 61, }, name: Identifier { position: 70, value: "foo", }, templates: None, parameters: FunctionLikeParameterListDefinition { comments: CommentGroup { comments: [], }, left_parenthesis: 73, parameters: CommaSeparated { inner: [ FunctionLikeParameterDefinition { comments: CommentGroup { comments: [], }, attributes: [], type_definition: Union( [ Identifier( TemplatedIdentifier { name: Identifier { position: 74, value: "A", }, templates: None, }, ), Parenthesized { left_parenthesis: 76, type_definition: Intersection( [ Identifier( TemplatedIdentifier { name: Identifier { position: 77, value: "B", }, templates: None, }, ), Identifier( TemplatedIdentifier { name: Identifier { position: 79, value: "C", }, templates: None, }, ), Identifier( TemplatedIdentifier { name: Identifier { position: 81, value: "D", }, templates: None, }, ), ], ), right_parenthesis: 82, }, ], ), ellipsis: None, variable: Variable { position: 84, name: "$a", }, default: None, }, ], commas: [], }, right_parenthesis: 86, }, return_type: FunctionLikeReturnTypeDefinition { colon: 87, type_definition: Intersection( [ Identifier( TemplatedIdentifier { name: Identifier { position: 89, value: "A", }, templates: None, }, ), Parenthesized { left_parenthesis: 91, type_definition: Union( [ Identifier( TemplatedIdentifier { name: Identifier { position: 92, value: "B", }, templates: None, }, ), Identifier( TemplatedIdentifier { name: Identifier { position: 94, value: "C", }, templates: None, }, ), Identifier( TemplatedIdentifier { name: Identifier { position: 96, value: "D", }, templates: None, }, ), ], ), right_parenthesis: 97, }, ], ), }, body: BlockStatement { comments: CommentGroup { comments: [], }, left_brace: 99, statements: [ Expression( ExpressionStatement { comments: CommentGroup { comments: [], }, expression: ExitConstruct( ExitWith { comments: CommentGroup { comments: [], }, exit: Keyword { value: "exit", position: 105, }, left_parenthesis: 109, value: Some( Literal( Integer( LiteralInteger { comments: CommentGroup { comments: [], }, value: "0", position: 110, }, ), ), ), right_parenthesis: 111, }, ), semicolon: 112, }, ), ], right_brace: 114, }, }, ), ], eof: 116, }