[ Interface( Interface { start: ( 3, 1, ), end: ( 3, 14, ), attributes: [], name: Identifier { start: ( 3, 11, ), name: "A", end: ( 3, 13, ), }, extends: None, members: [], }, ), Interface( Interface { start: ( 4, 1, ), end: ( 4, 14, ), attributes: [], name: Identifier { start: ( 4, 11, ), name: "B", end: ( 4, 13, ), }, extends: None, members: [], }, ), Interface( Interface { start: ( 5, 1, ), end: ( 5, 14, ), attributes: [], name: Identifier { start: ( 5, 11, ), name: "C", end: ( 5, 13, ), }, extends: None, members: [], }, ), Interface( Interface { start: ( 6, 1, ), end: ( 6, 14, ), attributes: [], name: Identifier { start: ( 6, 11, ), name: "D", end: ( 6, 13, ), }, extends: None, members: [], }, ), Function( Function { start: ( 8, 1, ), end: ( 10, 1, ), name: Identifier { start: ( 8, 10, ), name: "foo", end: ( 8, 13, ), }, attributes: [], parameters: FunctionParameterList { start: ( 8, 13, ), end: ( 8, 27, ), members: [ FunctionParameter { start: ( 8, 14, ), end: ( 8, 26, ), name: Variable { start: ( 8, 24, ), name: "a", end: ( 8, 26, ), }, attributes: [], type: Some( Union( [ Identifier( Identifier { start: ( 8, 14, ), name: "A", end: ( 8, 15, ), }, ), Intersection( [ Identifier( Identifier { start: ( 8, 17, ), name: "B", end: ( 8, 18, ), }, ), Identifier( Identifier { start: ( 8, 19, ), name: "C", end: ( 8, 20, ), }, ), Identifier( Identifier { start: ( 8, 21, ), name: "D", end: ( 8, 22, ), }, ), ], ), ], ), ), variadic: false, default: None, by_ref: false, }, ], }, return_type: Some( Intersection( [ Identifier( Identifier { start: ( 8, 29, ), name: "A", end: ( 8, 30, ), }, ), Union( [ Identifier( Identifier { start: ( 8, 32, ), name: "B", end: ( 8, 33, ), }, ), Identifier( Identifier { start: ( 8, 34, ), name: "C", end: ( 8, 35, ), }, ), Identifier( Identifier { start: ( 8, 36, ), name: "D", end: ( 8, 37, ), }, ), ], ), ], ), ), by_ref: false, body: [ Expression { expr: Call { target: Identifier( Identifier { start: ( 9, 5, ), name: "exit", end: ( 9, 9, ), }, ), args: [ Arg { name: None, value: LiteralInteger { i: "0", }, unpack: false, }, ], }, }, ], }, ), ]