DefinitionTree { definitions: [ Function( FunctionDefinition { comments: CommentGroup { comments: [], }, attributes: [], function: Keyword { value: "function", position: 0, }, name: Identifier { position: 9, value: "main", }, templates: None, parameters: FunctionLikeParameterListDefinition { comments: CommentGroup { comments: [], }, left_parenthesis: 13, parameters: CommaSeparated { inner: [], commas: [], }, right_parenthesis: 14, }, return_type: FunctionLikeReturnTypeDefinition { colon: 15, type_definition: Void( Keyword { value: "void", position: 17, }, ), }, body: BlockStatement { comments: CommentGroup { comments: [], }, left_brace: 22, statements: [ Try( TryStatement { comments: CommentGroup { comments: [], }, try: Keyword { value: "try", position: 28, }, block: BlockStatement { comments: CommentGroup { comments: [], }, left_brace: 32, statements: [], right_brace: 39, }, catches: [ TryCatchBlockStatement { comments: CommentGroup { comments: [], }, catch: Keyword { value: "catch", position: 41, }, left_parenthesis: 47, types: Identifier( Identifier { position: 48, value: "Exception", }, ), variable: Some( Variable { position: 58, name: "$e", }, ), right_parenthesis: 60, block: BlockStatement { comments: CommentGroup { comments: [], }, left_brace: 62, statements: [], right_brace: 69, }, }, TryCatchBlockStatement { comments: CommentGroup { comments: [], }, catch: Keyword { value: "catch", position: 71, }, left_parenthesis: 77, types: Identifier( Identifier { position: 78, value: "CustomException", }, ), variable: Some( Variable { position: 94, name: "$e", }, ), right_parenthesis: 96, block: BlockStatement { comments: CommentGroup { comments: [], }, left_brace: 98, statements: [], right_brace: 113, }, }, ], finally: None, }, ), Try( TryStatement { comments: CommentGroup { comments: [], }, try: Keyword { value: "try", position: 120, }, block: BlockStatement { comments: CommentGroup { comments: [], }, left_brace: 124, statements: [], right_brace: 131, }, catches: [ TryCatchBlockStatement { comments: CommentGroup { comments: [], }, catch: Keyword { value: "catch", position: 133, }, left_parenthesis: 139, types: Identifier( Identifier { position: 140, value: "Exception", }, ), variable: Some( Variable { position: 150, name: "$e", }, ), right_parenthesis: 152, block: BlockStatement { comments: CommentGroup { comments: [], }, left_brace: 154, statements: [], right_brace: 161, }, }, ], finally: Some( TryFinallyBlockStatement { comments: CommentGroup { comments: [], }, finally: Keyword { value: "finally", position: 163, }, block: BlockStatement { comments: CommentGroup { comments: [], }, left_brace: 171, statements: [], right_brace: 178, }, }, ), }, ), Try( TryStatement { comments: CommentGroup { comments: [], }, try: Keyword { value: "try", position: 185, }, block: BlockStatement { comments: CommentGroup { comments: [], }, left_brace: 189, statements: [], right_brace: 196, }, catches: [], finally: Some( TryFinallyBlockStatement { comments: CommentGroup { comments: [], }, finally: Keyword { value: "finally", position: 198, }, block: BlockStatement { comments: CommentGroup { comments: [], }, left_brace: 206, statements: [], right_brace: 207, }, }, ), }, ), Try( TryStatement { comments: CommentGroup { comments: [], }, try: Keyword { value: "try", position: 214, }, block: BlockStatement { comments: CommentGroup { comments: [], }, left_brace: 218, statements: [], right_brace: 225, }, catches: [ TryCatchBlockStatement { comments: CommentGroup { comments: [], }, catch: Keyword { value: "catch", position: 227, }, left_parenthesis: 233, types: Identifier( Identifier { position: 234, value: "Exception", }, ), variable: None, right_parenthesis: 243, block: BlockStatement { comments: CommentGroup { comments: [], }, left_brace: 245, statements: [], right_brace: 252, }, }, ], finally: None, }, ), Try( TryStatement { comments: CommentGroup { comments: [], }, try: Keyword { value: "try", position: 259, }, block: BlockStatement { comments: CommentGroup { comments: [], }, left_brace: 263, statements: [], right_brace: 270, }, catches: [ TryCatchBlockStatement { comments: CommentGroup { comments: [], }, catch: Keyword { value: "catch", position: 272, }, left_parenthesis: 278, types: Identifier( Identifier { position: 279, value: "Exception", }, ), variable: Some( Variable { position: 289, name: "$e", }, ), right_parenthesis: 291, block: BlockStatement { comments: CommentGroup { comments: [], }, left_brace: 293, statements: [], right_brace: 300, }, }, ], finally: None, }, ), ], right_brace: 302, }, }, ), ], eof: 303, }