DefinitionTree { definitions: [ Function( FunctionDefinition { comments: CommentGroup { comments: [], }, attributes: [], function: Keyword { value: "function", position: 0, }, name: Identifier { position: 9, value: "foo", }, templates: None, parameters: FunctionLikeParameterListDefinition { comments: CommentGroup { comments: [], }, left_parenthesis: 12, parameters: CommaSeparated { inner: [], commas: [], }, right_parenthesis: 13, }, return_type: FunctionLikeReturnTypeDefinition { colon: 14, type_definition: Vec( Keyword { value: "vec", position: 16, }, TypeTemplateGroupDefinition { comments: CommentGroup { comments: [], }, less_than: 19, members: CommaSeparated { inner: [ SignedInteger( Default( Keyword { value: "int", position: 20, }, ), ), ], commas: [], }, greater_than: 23, }, ), }, body: BlockStatement { comments: CommentGroup { comments: [], }, left_brace: 25, statements: [ Expression( ExpressionStatement { comments: CommentGroup { comments: [], }, expression: AssignmentOperation( Assignment { comments: CommentGroup { comments: [], }, left: Variable( Variable { position: 31, name: "$a", }, ), equals: 34, right: TypeOperation( As { comments: CommentGroup { comments: [], }, left: Variable( Variable { position: 36, name: "$b", }, ), as: Keyword { value: "as", position: 39, }, right: String( Keyword { value: "string", position: 42, }, ), }, ), }, ), semicolon: 48, }, ), Expression( ExpressionStatement { comments: CommentGroup { comments: [], }, expression: AssignmentOperation( Assignment { comments: CommentGroup { comments: [], }, left: Variable( Variable { position: 54, name: "$a", }, ), equals: 57, right: TypeOperation( Into { comments: CommentGroup { comments: [], }, left: Variable( Variable { position: 59, name: "$b", }, ), into: Keyword { value: "into", position: 62, }, right: String( Keyword { value: "string", position: 67, }, ), }, ), }, ), semicolon: 73, }, ), Expression( ExpressionStatement { comments: CommentGroup { comments: [], }, expression: AssignmentOperation( Assignment { comments: CommentGroup { comments: [], }, left: Variable( Variable { position: 79, name: "$a", }, ), equals: 82, right: TypeOperation( As { comments: CommentGroup { comments: [], }, left: Variable( Variable { position: 84, name: "$b", }, ), as: Keyword { value: "as", position: 87, }, right: SignedInteger( Default( Keyword { value: "int", position: 90, }, ), ), }, ), }, ), semicolon: 93, }, ), Expression( ExpressionStatement { comments: CommentGroup { comments: [], }, expression: AssignmentOperation( Assignment { comments: CommentGroup { comments: [], }, left: Variable( Variable { position: 99, name: "$a", }, ), equals: 102, right: TypeOperation( Into { comments: CommentGroup { comments: [], }, left: Variable( Variable { position: 104, name: "$b", }, ), into: Keyword { value: "into", position: 107, }, right: SignedInteger( Default( Keyword { value: "int", position: 112, }, ), ), }, ), }, ), semicolon: 115, }, ), Expression( ExpressionStatement { comments: CommentGroup { comments: [], }, expression: AssignmentOperation( Assignment { comments: CommentGroup { comments: [], }, left: Variable( Variable { position: 121, name: "$a", }, ), equals: 124, right: TypeOperation( As { comments: CommentGroup { comments: [], }, left: Variable( Variable { position: 126, name: "$b", }, ), as: Keyword { value: "as", position: 129, }, right: FloatingPoint( Default( Keyword { value: "float", position: 132, }, ), ), }, ), }, ), semicolon: 137, }, ), Expression( ExpressionStatement { comments: CommentGroup { comments: [], }, expression: AssignmentOperation( Assignment { comments: CommentGroup { comments: [], }, left: Variable( Variable { position: 143, name: "$a", }, ), equals: 146, right: TypeOperation( Into { comments: CommentGroup { comments: [], }, left: Variable( Variable { position: 148, name: "$b", }, ), into: Keyword { value: "into", position: 151, }, right: FloatingPoint( Default( Keyword { value: "float", position: 156, }, ), ), }, ), }, ), semicolon: 161, }, ), Expression( ExpressionStatement { comments: CommentGroup { comments: [], }, expression: AssignmentOperation( Assignment { comments: CommentGroup { comments: [], }, left: Variable( Variable { position: 167, name: "$a", }, ), equals: 170, right: TypeOperation( As { comments: CommentGroup { comments: [], }, left: Variable( Variable { position: 172, name: "$b", }, ), as: Keyword { value: "as", position: 175, }, right: Boolean( Keyword { value: "bool", position: 178, }, ), }, ), }, ), semicolon: 182, }, ), Expression( ExpressionStatement { comments: CommentGroup { comments: [], }, expression: AssignmentOperation( Assignment { comments: CommentGroup { comments: [], }, left: Variable( Variable { position: 188, name: "$a", }, ), equals: 191, right: TypeOperation( Into { comments: CommentGroup { comments: [], }, left: Variable( Variable { position: 193, name: "$b", }, ), into: Keyword { value: "into", position: 196, }, right: Boolean( Keyword { value: "bool", position: 201, }, ), }, ), }, ), semicolon: 205, }, ), Expression( ExpressionStatement { comments: CommentGroup { comments: [], }, expression: AssignmentOperation( Assignment { comments: CommentGroup { comments: [], }, left: Variable( Variable { position: 211, name: "$a", }, ), equals: 214, right: TypeOperation( As { comments: CommentGroup { comments: [], }, left: Variable( Variable { position: 216, name: "$b", }, ), as: Keyword { value: "as", position: 219, }, right: Vec( Keyword { value: "vec", position: 222, }, TypeTemplateGroupDefinition { comments: CommentGroup { comments: [], }, less_than: 225, members: CommaSeparated { inner: [ SignedInteger( Default( Keyword { value: "int", position: 226, }, ), ), ], commas: [], }, greater_than: 229, }, ), }, ), }, ), semicolon: 230, }, ), Expression( ExpressionStatement { comments: CommentGroup { comments: [], }, expression: AssignmentOperation( Assignment { comments: CommentGroup { comments: [], }, left: Variable( Variable { position: 236, name: "$a", }, ), equals: 239, right: TypeOperation( Into { comments: CommentGroup { comments: [], }, left: Variable( Variable { position: 241, name: "$b", }, ), into: Keyword { value: "into", position: 244, }, right: Vec( Keyword { value: "vec", position: 249, }, TypeTemplateGroupDefinition { comments: CommentGroup { comments: [], }, less_than: 252, members: CommaSeparated { inner: [ SignedInteger( Default( Keyword { value: "int", position: 253, }, ), ), ], commas: [], }, greater_than: 256, }, ), }, ), }, ), semicolon: 257, }, ), Expression( ExpressionStatement { comments: CommentGroup { comments: [], }, expression: AssignmentOperation( Assignment { comments: CommentGroup { comments: [], }, left: Variable( Variable { position: 263, name: "$a", }, ), equals: 266, right: TypeOperation( As { comments: CommentGroup { comments: [], }, left: Variable( Variable { position: 268, name: "$b", }, ), as: Keyword { value: "as", position: 271, }, right: Union( [ Vec( Keyword { value: "vec", position: 274, }, TypeTemplateGroupDefinition { comments: CommentGroup { comments: [], }, less_than: 277, members: CommaSeparated { inner: [ SignedInteger( Default( Keyword { value: "int", position: 278, }, ), ), ], commas: [], }, greater_than: 281, }, ), Dict( Keyword { value: "dict", position: 283, }, TypeTemplateGroupDefinition { comments: CommentGroup { comments: [], }, less_than: 287, members: CommaSeparated { inner: [ String( Keyword { value: "string", position: 288, }, ), SignedInteger( Default( Keyword { value: "int", position: 296, }, ), ), ], commas: [ 294, ], }, greater_than: 299, }, ), Tuple { left_parenthesis: 301, type_definitions: CommaSeparated { inner: [ String( Keyword { value: "string", position: 302, }, ), SignedInteger( Default( Keyword { value: "int", position: 310, }, ), ), ], commas: [ 308, ], }, right_parenthesis: 313, }, ], ), }, ), }, ), semicolon: 314, }, ), Expression( ExpressionStatement { comments: CommentGroup { comments: [], }, expression: AssignmentOperation( Assignment { comments: CommentGroup { comments: [], }, left: Variable( Variable { position: 320, name: "$a", }, ), equals: 323, right: TypeOperation( Into { comments: CommentGroup { comments: [], }, left: Variable( Variable { position: 325, name: "$b", }, ), into: Keyword { value: "into", position: 328, }, right: Union( [ Vec( Keyword { value: "vec", position: 333, }, TypeTemplateGroupDefinition { comments: CommentGroup { comments: [], }, less_than: 336, members: CommaSeparated { inner: [ SignedInteger( Default( Keyword { value: "int", position: 337, }, ), ), ], commas: [], }, greater_than: 340, }, ), Dict( Keyword { value: "dict", position: 342, }, TypeTemplateGroupDefinition { comments: CommentGroup { comments: [], }, less_than: 346, members: CommaSeparated { inner: [ String( Keyword { value: "string", position: 347, }, ), SignedInteger( Default( Keyword { value: "int", position: 355, }, ), ), ], commas: [ 353, ], }, greater_than: 358, }, ), Tuple { left_parenthesis: 360, type_definitions: CommaSeparated { inner: [ String( Keyword { value: "string", position: 361, }, ), SignedInteger( Default( Keyword { value: "int", position: 369, }, ), ), ], commas: [ 367, ], }, right_parenthesis: 372, }, ], ), }, ), }, ), semicolon: 373, }, ), ], right_brace: 375, }, }, ), ], eof: 377, }