[ FullOpeningTag( FullOpeningTagStatement { span: Span { line: 1, column: 1, position: 0, }, }, ), Interface( InterfaceStatement { attributes: [], interface: Span { line: 3, column: 1, position: 7, }, name: SimpleIdentifier { span: Span { line: 3, column: 11, position: 17, }, value: "A", }, extends: None, body: InterfaceBody { left_brace: Span { line: 3, column: 13, position: 19, }, members: [], right_brace: Span { line: 3, column: 14, position: 20, }, }, }, ), Interface( InterfaceStatement { attributes: [], interface: Span { line: 4, column: 1, position: 22, }, name: SimpleIdentifier { span: Span { line: 4, column: 11, position: 32, }, value: "B", }, extends: None, body: InterfaceBody { left_brace: Span { line: 4, column: 13, position: 34, }, members: [], right_brace: Span { line: 4, column: 14, position: 35, }, }, }, ), Interface( InterfaceStatement { attributes: [], interface: Span { line: 5, column: 1, position: 37, }, name: SimpleIdentifier { span: Span { line: 5, column: 11, position: 47, }, value: "C", }, extends: None, body: InterfaceBody { left_brace: Span { line: 5, column: 13, position: 49, }, members: [], right_brace: Span { line: 5, column: 14, position: 50, }, }, }, ), Interface( InterfaceStatement { attributes: [], interface: Span { line: 6, column: 1, position: 52, }, name: SimpleIdentifier { span: Span { line: 6, column: 11, position: 62, }, value: "D", }, extends: None, body: InterfaceBody { left_brace: Span { line: 6, column: 13, position: 64, }, members: [], right_brace: Span { line: 6, column: 14, position: 65, }, }, }, ), Function( FunctionStatement { comments: CommentGroup { comments: [], }, attributes: [], function: Span { line: 8, column: 1, position: 68, }, ampersand: None, name: SimpleIdentifier { span: Span { line: 8, column: 10, position: 77, }, value: "foo", }, parameters: FunctionParameterList { comments: CommentGroup { comments: [], }, left_parenthesis: Span { line: 8, column: 13, position: 80, }, parameters: CommaSeparated { inner: [ FunctionParameter { comments: CommentGroup { comments: [], }, name: SimpleVariable { span: Span { line: 8, column: 24, position: 91, }, name: "$a", }, attributes: [], data_type: Some( Union( [ Named( Span { line: 8, column: 14, position: 81, }, "A", ), Intersection( [ Named( Span { line: 8, column: 17, position: 84, }, "B", ), Named( Span { line: 8, column: 19, position: 86, }, "C", ), Named( Span { line: 8, column: 21, position: 88, }, "D", ), ], ), ], ), ), ellipsis: None, default: None, ampersand: None, }, ], commas: [], }, right_parenthesis: Span { line: 8, column: 26, position: 93, }, }, return_type: Some( ReturnType { colon: Span { line: 8, column: 27, position: 94, }, data_type: Intersection( [ Named( Span { line: 8, column: 29, position: 96, }, "A", ), Union( [ Named( Span { line: 8, column: 32, position: 99, }, "B", ), Named( Span { line: 8, column: 34, position: 101, }, "C", ), Named( Span { line: 8, column: 36, position: 103, }, "D", ), ], ), ], ), }, ), body: FunctionBody { comments: CommentGroup { comments: [], }, left_brace: Span { line: 8, column: 39, position: 106, }, statements: [ Expression( ExpressionStatement { expression: Exit( ExitExpression { exit: Span { line: 9, column: 5, position: 112, }, argument: Some( SingleArgument { comments: CommentGroup { comments: [], }, left_parenthesis: Span { line: 9, column: 9, position: 116, }, argument: Positional( PositionalArgument { comments: CommentGroup { comments: [], }, ellipsis: None, value: Literal( Integer( LiteralInteger { value: "0", span: Span { line: 9, column: 10, position: 117, }, }, ), ), }, ), right_parenthesis: Span { line: 9, column: 11, position: 118, }, }, ), }, ), ending: Semicolon( Span { line: 9, column: 12, position: 119, }, ), }, ), ], right_brace: Span { line: 10, column: 1, position: 121, }, }, }, ), ]