DefinitionTree { definitions: [ Namespace( NamespaceDefinition { namespace: Keyword { value: "namespace", position: 0, }, name: Identifier { position: 10, value: "Dict", }, semicolon: 14, definitions: [ Use( Default { use: Keyword { value: "use", position: 17, }, name: Identifier { position: 21, value: "Psl\Dict", }, alias: Some( UseDefinitionSymbolAlias { as: Keyword { value: "as", position: 30, }, alias: Identifier { position: 33, value: "Dict", }, }, ), semicolon: 37, }, ), Function( FunctionDefinition { comments: CommentGroup { comments: [], }, attributes: [], function: Keyword { value: "function", position: 40, }, name: Identifier { position: 49, value: "bar", }, templates: None, parameters: FunctionLikeParameterListDefinition { comments: CommentGroup { comments: [], }, left_parenthesis: 52, parameters: CommaSeparated { inner: [], commas: [], }, right_parenthesis: 53, }, return_type: FunctionLikeReturnTypeDefinition { colon: 54, type_definition: Void( Keyword { value: "void", position: 56, }, ), }, body: BlockStatement { comments: CommentGroup { comments: [], }, left_brace: 61, statements: [ Expression( ExpressionStatement { comments: CommentGroup { comments: [], }, expression: AssignmentOperation( Assignment { comments: CommentGroup { comments: [], }, left: Variable( Variable { position: 67, name: "$a", }, ), equals: 70, right: Dict( DictExpression { comments: CommentGroup { comments: [], }, dict: Keyword { value: "dict", position: 72, }, left_bracket: 76, elements: CommaSeparated { inner: [ DictElementExpression { key: Literal( Integer( LiteralInteger { comments: CommentGroup { comments: [], }, value: "1", position: 77, }, ), ), double_arrow: 79, value: Literal( Integer( LiteralInteger { comments: CommentGroup { comments: [], }, value: "2", position: 82, }, ), ), }, DictElementExpression { key: Literal( Integer( LiteralInteger { comments: CommentGroup { comments: [], }, value: "2", position: 85, }, ), ), double_arrow: 87, value: Literal( Integer( LiteralInteger { comments: CommentGroup { comments: [], }, value: "3", position: 90, }, ), ), }, DictElementExpression { key: Literal( Integer( LiteralInteger { comments: CommentGroup { comments: [], }, value: "3", position: 93, }, ), ), double_arrow: 95, value: Literal( Integer( LiteralInteger { comments: CommentGroup { comments: [], }, value: "4", position: 98, }, ), ), }, ], commas: [ 83, 91, ], }, right_bracket: 99, }, ), }, ), semicolon: 100, }, ), Expression( ExpressionStatement { comments: CommentGroup { comments: [], }, expression: FunctionOperation( Call { comments: CommentGroup { comments: [], }, function: Identifier( Identifier { position: 107, value: "Dict\map", }, ), generics: None, arguments: ArgumentListExpression { comments: CommentGroup { comments: [], }, left_parenthesis: 115, arguments: CommaSeparated { inner: [ Value { comments: CommentGroup { comments: [], }, value: Variable( Variable { position: 116, name: "$a", }, ), }, Value { comments: CommentGroup { comments: [], }, value: ArrowFunction( ArrowFunctionExpression { comments: CommentGroup { comments: [], }, attributes: [], static: None, fn: Keyword { value: "fn", position: 120, }, parameters: FunctionLikeParameterListDefinition { comments: CommentGroup { comments: [], }, left_parenthesis: 122, parameters: CommaSeparated { inner: [ FunctionLikeParameterDefinition { comments: CommentGroup { comments: [], }, attributes: [], type_definition: SignedInteger( Default( Keyword { value: "int", position: 123, }, ), ), ellipsis: None, variable: Variable { position: 127, name: "$x", }, default: None, }, ], commas: [], }, right_parenthesis: 129, }, return_type: FunctionLikeReturnTypeDefinition { colon: 130, type_definition: SignedInteger( Default( Keyword { value: "int", position: 132, }, ), ), }, double_arrow: 136, body: ArithmeticOperation( Addition { comments: CommentGroup { comments: [], }, left: Variable( Variable { position: 139, name: "$x", }, ), plus: 142, right: Literal( Integer( LiteralInteger { comments: CommentGroup { comments: [], }, value: "1", position: 144, }, ), ), }, ), }, ), }, ], commas: [ 118, ], }, right_parenthesis: 145, }, }, ), semicolon: 146, }, ), ], right_brace: 148, }, }, ), ], }, ), Namespace( NamespaceDefinition { namespace: Keyword { value: "namespace", position: 151, }, name: Identifier { position: 161, value: "Vec", }, semicolon: 164, definitions: [ Use( Default { use: Keyword { value: "use", position: 167, }, name: Identifier { position: 171, value: "Psl\Vec", }, alias: Some( UseDefinitionSymbolAlias { as: Keyword { value: "as", position: 179, }, alias: Identifier { position: 182, value: "Vec", }, }, ), semicolon: 185, }, ), Function( FunctionDefinition { comments: CommentGroup { comments: [], }, attributes: [], function: Keyword { value: "function", position: 188, }, name: Identifier { position: 197, value: "bar", }, templates: None, parameters: FunctionLikeParameterListDefinition { comments: CommentGroup { comments: [], }, left_parenthesis: 200, parameters: CommaSeparated { inner: [], commas: [], }, right_parenthesis: 201, }, return_type: FunctionLikeReturnTypeDefinition { colon: 202, type_definition: Void( Keyword { value: "void", position: 204, }, ), }, body: BlockStatement { comments: CommentGroup { comments: [], }, left_brace: 209, statements: [ Expression( ExpressionStatement { comments: CommentGroup { comments: [], }, expression: AssignmentOperation( Assignment { comments: CommentGroup { comments: [], }, left: Variable( Variable { position: 215, name: "$a", }, ), equals: 218, right: Vec( VecExpression { comments: CommentGroup { comments: [], }, vec: Keyword { value: "vec", position: 220, }, left_bracket: 223, elements: CommaSeparated { inner: [ VecElementExpression { value: Literal( Integer( LiteralInteger { comments: CommentGroup { comments: [], }, value: "1", position: 224, }, ), ), }, VecElementExpression { value: Literal( Integer( LiteralInteger { comments: CommentGroup { comments: [], }, value: "2", position: 227, }, ), ), }, VecElementExpression { value: Literal( Integer( LiteralInteger { comments: CommentGroup { comments: [], }, value: "3", position: 230, }, ), ), }, ], commas: [ 225, 228, ], }, right_bracket: 231, }, ), }, ), semicolon: 232, }, ), Expression( ExpressionStatement { comments: CommentGroup { comments: [], }, expression: FunctionOperation( Call { comments: CommentGroup { comments: [], }, function: Identifier( Identifier { position: 239, value: "Vec\map", }, ), generics: None, arguments: ArgumentListExpression { comments: CommentGroup { comments: [], }, left_parenthesis: 246, arguments: CommaSeparated { inner: [ Value { comments: CommentGroup { comments: [], }, value: Variable( Variable { position: 247, name: "$a", }, ), }, Value { comments: CommentGroup { comments: [], }, value: ArrowFunction( ArrowFunctionExpression { comments: CommentGroup { comments: [], }, attributes: [], static: None, fn: Keyword { value: "fn", position: 251, }, parameters: FunctionLikeParameterListDefinition { comments: CommentGroup { comments: [], }, left_parenthesis: 253, parameters: CommaSeparated { inner: [ FunctionLikeParameterDefinition { comments: CommentGroup { comments: [], }, attributes: [], type_definition: SignedInteger( Default( Keyword { value: "int", position: 254, }, ), ), ellipsis: None, variable: Variable { position: 258, name: "$x", }, default: None, }, ], commas: [], }, right_parenthesis: 260, }, return_type: FunctionLikeReturnTypeDefinition { colon: 261, type_definition: SignedInteger( Default( Keyword { value: "int", position: 263, }, ), ), }, double_arrow: 267, body: ArithmeticOperation( Addition { comments: CommentGroup { comments: [], }, left: Variable( Variable { position: 270, name: "$x", }, ), plus: 273, right: Literal( Integer( LiteralInteger { comments: CommentGroup { comments: [], }, value: "1", position: 275, }, ), ), }, ), }, ), }, ], commas: [ 249, ], }, right_parenthesis: 276, }, }, ), semicolon: 277, }, ), ], right_brace: 279, }, }, ), ], }, ), Namespace( NamespaceDefinition { namespace: Keyword { value: "namespace", position: 282, }, name: Identifier { position: 292, value: "True", }, semicolon: 296, definitions: [], }, ), Namespace( NamespaceDefinition { namespace: Keyword { value: "namespace", position: 298, }, name: Identifier { position: 308, value: "False", }, semicolon: 313, definitions: [], }, ), Namespace( NamespaceDefinition { namespace: Keyword { value: "namespace", position: 315, }, name: Identifier { position: 325, value: "Null", }, semicolon: 329, definitions: [], }, ), Namespace( NamespaceDefinition { namespace: Keyword { value: "namespace", position: 331, }, name: Identifier { position: 341, value: "Int", }, semicolon: 344, definitions: [], }, ), Namespace( NamespaceDefinition { namespace: Keyword { value: "namespace", position: 346, }, name: Identifier { position: 356, value: "Float", }, semicolon: 361, definitions: [], }, ), Namespace( NamespaceDefinition { namespace: Keyword { value: "namespace", position: 363, }, name: Identifier { position: 373, value: "String", }, semicolon: 379, definitions: [], }, ), Namespace( NamespaceDefinition { namespace: Keyword { value: "namespace", position: 381, }, name: Identifier { position: 391, value: "List", }, semicolon: 395, definitions: [], }, ), Namespace( NamespaceDefinition { namespace: Keyword { value: "namespace", position: 397, }, name: Identifier { position: 407, value: "Array", }, semicolon: 412, definitions: [], }, ), Namespace( NamespaceDefinition { namespace: Keyword { value: "namespace", position: 414, }, name: Identifier { position: 424, value: "Object", }, semicolon: 430, definitions: [], }, ), Namespace( NamespaceDefinition { namespace: Keyword { value: "namespace", position: 432, }, name: Identifier { position: 442, value: "Resource", }, semicolon: 450, definitions: [], }, ), Namespace( NamespaceDefinition { namespace: Keyword { value: "namespace", position: 452, }, name: Identifier { position: 462, value: "Mixed", }, semicolon: 467, definitions: [], }, ), Namespace( NamespaceDefinition { namespace: Keyword { value: "namespace", position: 469, }, name: Identifier { position: 479, value: "Num", }, semicolon: 482, definitions: [], }, ), Namespace( NamespaceDefinition { namespace: Keyword { value: "namespace", position: 484, }, name: Identifier { position: 494, value: "Scalar", }, semicolon: 500, definitions: [], }, ), Namespace( NamespaceDefinition { namespace: Keyword { value: "namespace", position: 502, }, name: Identifier { position: 512, value: "Callable", }, semicolon: 520, definitions: [], }, ), Namespace( NamespaceDefinition { namespace: Keyword { value: "namespace", position: 522, }, name: Identifier { position: 532, value: "Void", }, semicolon: 536, definitions: [], }, ), Namespace( NamespaceDefinition { namespace: Keyword { value: "namespace", position: 538, }, name: Identifier { position: 548, value: "Fn", }, semicolon: 550, definitions: [], }, ), Namespace( NamespaceDefinition { namespace: Keyword { value: "namespace", position: 552, }, name: Identifier { position: 562, value: "Iterable", }, semicolon: 570, definitions: [], }, ), Namespace( NamespaceDefinition { namespace: Keyword { value: "namespace", position: 572, }, name: Identifier { position: 582, value: "Never", }, semicolon: 587, definitions: [], }, ), Namespace( NamespaceDefinition { namespace: Keyword { value: "namespace", position: 590, }, name: Identifier { position: 600, value: "True\Foo\Bar", }, semicolon: 612, definitions: [], }, ), Namespace( NamespaceDefinition { namespace: Keyword { value: "namespace", position: 614, }, name: Identifier { position: 624, value: "False\Foo\Bar", }, semicolon: 637, definitions: [], }, ), Namespace( NamespaceDefinition { namespace: Keyword { value: "namespace", position: 639, }, name: Identifier { position: 649, value: "Null\Foo\Bar", }, semicolon: 661, definitions: [], }, ), Namespace( NamespaceDefinition { namespace: Keyword { value: "namespace", position: 663, }, name: Identifier { position: 673, value: "Int\Foo\Bar", }, semicolon: 684, definitions: [], }, ), Namespace( NamespaceDefinition { namespace: Keyword { value: "namespace", position: 686, }, name: Identifier { position: 696, value: "Float\Foo\Bar", }, semicolon: 709, definitions: [], }, ), Namespace( NamespaceDefinition { namespace: Keyword { value: "namespace", position: 711, }, name: Identifier { position: 721, value: "String\Foo\Bar", }, semicolon: 735, definitions: [], }, ), Namespace( NamespaceDefinition { namespace: Keyword { value: "namespace", position: 737, }, name: Identifier { position: 747, value: "List\Foo\Bar", }, semicolon: 759, definitions: [], }, ), Namespace( NamespaceDefinition { namespace: Keyword { value: "namespace", position: 761, }, name: Identifier { position: 771, value: "Array\Foo\Bar", }, semicolon: 784, definitions: [], }, ), Namespace( NamespaceDefinition { namespace: Keyword { value: "namespace", position: 786, }, name: Identifier { position: 796, value: "Object\Foo\Bar", }, semicolon: 810, definitions: [], }, ), Namespace( NamespaceDefinition { namespace: Keyword { value: "namespace", position: 812, }, name: Identifier { position: 822, value: "Resource\Foo\Bar", }, semicolon: 838, definitions: [], }, ), Namespace( NamespaceDefinition { namespace: Keyword { value: "namespace", position: 840, }, name: Identifier { position: 850, value: "Mixed\Foo\Bar", }, semicolon: 863, definitions: [], }, ), Namespace( NamespaceDefinition { namespace: Keyword { value: "namespace", position: 865, }, name: Identifier { position: 875, value: "Num\Foo\Bar", }, semicolon: 886, definitions: [], }, ), Namespace( NamespaceDefinition { namespace: Keyword { value: "namespace", position: 888, }, name: Identifier { position: 898, value: "Scalar\Foo\Bar", }, semicolon: 912, definitions: [], }, ), Namespace( NamespaceDefinition { namespace: Keyword { value: "namespace", position: 914, }, name: Identifier { position: 924, value: "Callable\Foo\Bar", }, semicolon: 940, definitions: [], }, ), Namespace( NamespaceDefinition { namespace: Keyword { value: "namespace", position: 942, }, name: Identifier { position: 952, value: "Void\Foo\Bar", }, semicolon: 964, definitions: [], }, ), Namespace( NamespaceDefinition { namespace: Keyword { value: "namespace", position: 966, }, name: Identifier { position: 976, value: "Iterable\Foo\Bar", }, semicolon: 992, definitions: [], }, ), Namespace( NamespaceDefinition { namespace: Keyword { value: "namespace", position: 994, }, name: Identifier { position: 1004, value: "Never\Foo\Bar", }, semicolon: 1017, definitions: [], }, ), Namespace( NamespaceDefinition { namespace: Keyword { value: "namespace", position: 1020, }, name: Identifier { position: 1030, value: "Foo\Bar\True", }, semicolon: 1042, definitions: [], }, ), Namespace( NamespaceDefinition { namespace: Keyword { value: "namespace", position: 1044, }, name: Identifier { position: 1054, value: "Foo\Bar\False", }, semicolon: 1067, definitions: [], }, ), Namespace( NamespaceDefinition { namespace: Keyword { value: "namespace", position: 1069, }, name: Identifier { position: 1079, value: "Foo\Bar\Null", }, semicolon: 1091, definitions: [], }, ), Namespace( NamespaceDefinition { namespace: Keyword { value: "namespace", position: 1093, }, name: Identifier { position: 1103, value: "Foo\Bar\Int", }, semicolon: 1114, definitions: [], }, ), Namespace( NamespaceDefinition { namespace: Keyword { value: "namespace", position: 1116, }, name: Identifier { position: 1126, value: "Foo\Bar\Float", }, semicolon: 1139, definitions: [], }, ), Namespace( NamespaceDefinition { namespace: Keyword { value: "namespace", position: 1141, }, name: Identifier { position: 1151, value: "Foo\Bar\String", }, semicolon: 1165, definitions: [], }, ), Namespace( NamespaceDefinition { namespace: Keyword { value: "namespace", position: 1167, }, name: Identifier { position: 1177, value: "Foo\Bar\List", }, semicolon: 1189, definitions: [], }, ), Namespace( NamespaceDefinition { namespace: Keyword { value: "namespace", position: 1191, }, name: Identifier { position: 1201, value: "Foo\Bar\Array", }, semicolon: 1214, definitions: [], }, ), Namespace( NamespaceDefinition { namespace: Keyword { value: "namespace", position: 1216, }, name: Identifier { position: 1226, value: "Foo\Bar\Object", }, semicolon: 1240, definitions: [], }, ), Namespace( NamespaceDefinition { namespace: Keyword { value: "namespace", position: 1242, }, name: Identifier { position: 1252, value: "Foo\Bar\Resource", }, semicolon: 1268, definitions: [], }, ), Namespace( NamespaceDefinition { namespace: Keyword { value: "namespace", position: 1270, }, name: Identifier { position: 1280, value: "Foo\Bar\Mixed", }, semicolon: 1293, definitions: [], }, ), Namespace( NamespaceDefinition { namespace: Keyword { value: "namespace", position: 1295, }, name: Identifier { position: 1305, value: "Foo\Bar\Num", }, semicolon: 1316, definitions: [], }, ), Namespace( NamespaceDefinition { namespace: Keyword { value: "namespace", position: 1318, }, name: Identifier { position: 1328, value: "Foo\Bar\Scalar", }, semicolon: 1342, definitions: [], }, ), Namespace( NamespaceDefinition { namespace: Keyword { value: "namespace", position: 1344, }, name: Identifier { position: 1354, value: "Foo\Bar\Callable", }, semicolon: 1370, definitions: [], }, ), Namespace( NamespaceDefinition { namespace: Keyword { value: "namespace", position: 1372, }, name: Identifier { position: 1382, value: "Foo\Bar\Void", }, semicolon: 1394, definitions: [], }, ), Namespace( NamespaceDefinition { namespace: Keyword { value: "namespace", position: 1396, }, name: Identifier { position: 1406, value: "Foo\Bar\Iterable", }, semicolon: 1422, definitions: [], }, ), Namespace( NamespaceDefinition { namespace: Keyword { value: "namespace", position: 1424, }, name: Identifier { position: 1434, value: "Foo\Bar\Never", }, semicolon: 1447, definitions: [], }, ), ], eof: 1449, }