[ FullOpeningTag( FullOpeningTagStatement { span: Span { line: 1, column: 1, position: 0, }, }, ), Constant( ConstantStatement { comments: CommentGroup { comments: [], }, const: Span { line: 3, column: 1, position: 7, }, entries: [ ConstantEntry { name: SimpleIdentifier { span: Span { line: 3, column: 7, position: 13, }, value: "\xe2\x86\xaa", }, equals: Span { line: 3, column: 11, position: 17, }, value: Literal( String( LiteralString { value: "\n", span: Span { line: 3, column: 13, position: 19, }, kind: DoubleQuoted, }, ), ), }, ], semicolon: Span { line: 3, column: 17, position: 23, }, }, ), Interface( InterfaceStatement { attributes: [], interface: Span { line: 5, column: 1, position: 26, }, name: SimpleIdentifier { span: Span { line: 5, column: 11, position: 36, }, value: "\xf0\x9f\x94\x8a", }, extends: None, body: InterfaceBody { left_brace: Span { line: 5, column: 16, position: 41, }, members: [ Method( AbstractMethod { comments: CommentGroup { comments: [], }, attributes: [], modifiers: MethodModifierGroup { modifiers: [ Public( Span { line: 6, column: 3, position: 45, }, ), ], }, function: Span { line: 6, column: 10, position: 52, }, ampersand: None, name: SimpleIdentifier { span: Span { line: 6, column: 19, position: 61, }, value: "\xf0\x9f\x93\x9d", }, parameters: FunctionParameterList { comments: CommentGroup { comments: [], }, left_parenthesis: Span { line: 6, column: 23, position: 65, }, parameters: CommaSeparated { inner: [ FunctionParameter { comments: CommentGroup { comments: [], }, name: SimpleVariable { span: Span { line: 6, column: 31, position: 73, }, name: "$\xf0\x9f\x93\x83", }, attributes: [], data_type: Some( String( Span { line: 6, column: 24, position: 66, }, ), ), ellipsis: None, default: None, ampersand: None, }, ], commas: [], }, right_parenthesis: Span { line: 6, column: 36, position: 78, }, }, return_type: Some( ReturnType { colon: Span { line: 6, column: 37, position: 79, }, data_type: Void( Span { line: 6, column: 39, position: 81, }, ), }, ), semicolon: Span { line: 6, column: 43, position: 85, }, }, ), ], right_brace: Span { line: 7, column: 1, position: 87, }, }, }, ), Class( ClassStatement { attributes: [], modifiers: ClassModifierGroup { modifiers: [ Final( Span { line: 9, column: 1, position: 90, }, ), ], }, class: Span { line: 9, column: 7, position: 96, }, name: SimpleIdentifier { span: Span { line: 9, column: 13, position: 102, }, value: "\xf0\x9f\x92\xbb", }, extends: None, implements: Some( ClassImplements { implements: Span { line: 9, column: 18, position: 107, }, interfaces: CommaSeparated { inner: [ SimpleIdentifier { span: Span { line: 9, column: 29, position: 118, }, value: "\xf0\x9f\x94\x8a", }, ], commas: [], }, }, ), body: ClassBody { left_brace: Span { line: 9, column: 34, position: 123, }, members: [ ConcreteMethod( ConcreteMethod { comments: CommentGroup { comments: [], }, attributes: [], modifiers: MethodModifierGroup { modifiers: [ Public( Span { line: 10, column: 3, position: 127, }, ), ], }, function: Span { line: 10, column: 10, position: 134, }, ampersand: None, name: SimpleIdentifier { span: Span { line: 10, column: 19, position: 143, }, value: "\xf0\x9f\x93\x9d", }, parameters: FunctionParameterList { comments: CommentGroup { comments: [], }, left_parenthesis: Span { line: 10, column: 23, position: 147, }, parameters: CommaSeparated { inner: [ FunctionParameter { comments: CommentGroup { comments: [], }, name: SimpleVariable { span: Span { line: 10, column: 31, position: 155, }, name: "$\xf0\x9f\x93\x83", }, attributes: [], data_type: Some( String( Span { line: 10, column: 24, position: 148, }, ), ), ellipsis: None, default: None, ampersand: None, }, ], commas: [], }, right_parenthesis: Span { line: 10, column: 36, position: 160, }, }, return_type: Some( ReturnType { colon: Span { line: 10, column: 37, position: 161, }, data_type: Void( Span { line: 10, column: 39, position: 163, }, ), }, ), body: MethodBody { comments: CommentGroup { comments: [], }, left_brace: Span { line: 10, column: 44, position: 168, }, statements: [ Expression( ExpressionStatement { expression: Print( PrintExpression { print: Span { line: 11, column: 5, position: 174, }, value: None, argument: Some( SingleArgument { comments: CommentGroup { comments: [], }, left_parenthesis: Span { line: 11, column: 10, position: 179, }, argument: Positional( PositionalArgument { comments: CommentGroup { comments: [], }, ellipsis: None, value: Concat( ConcatExpression { left: Variable( SimpleVariable( SimpleVariable { span: Span { line: 11, column: 11, position: 180, }, name: "$\xf0\x9f\x93\x83", }, ), ), dot: Span { line: 11, column: 17, position: 186, }, right: Identifier( SimpleIdentifier( SimpleIdentifier { span: Span { line: 11, column: 19, position: 188, }, value: "\xe2\x86\xaa", }, ), ), }, ), }, ), right_parenthesis: Span { line: 11, column: 22, position: 191, }, }, ), }, ), ending: Semicolon( Span { line: 11, column: 23, position: 192, }, ), }, ), ], right_brace: Span { line: 12, column: 3, position: 196, }, }, }, ), ], right_brace: Span { line: 13, column: 1, position: 198, }, }, }, ), Function( FunctionStatement { comments: CommentGroup { comments: [], }, attributes: [], function: Span { line: 15, column: 1, position: 201, }, ampersand: None, name: SimpleIdentifier { span: Span { line: 15, column: 10, position: 210, }, value: "\xf0\x9f\x9a\xaa", }, parameters: FunctionParameterList { comments: CommentGroup { comments: [], }, left_parenthesis: Span { line: 15, column: 14, position: 214, }, parameters: CommaSeparated { inner: [], commas: [], }, right_parenthesis: Span { line: 15, column: 15, position: 215, }, }, return_type: Some( ReturnType { colon: Span { line: 15, column: 16, position: 216, }, data_type: Void( Span { line: 15, column: 18, position: 218, }, ), }, ), body: FunctionBody { comments: CommentGroup { comments: [], }, left_brace: Span { line: 15, column: 23, position: 223, }, statements: [ Expression( ExpressionStatement { expression: AssignmentOperation( Assign { left: Variable( SimpleVariable( SimpleVariable { span: Span { line: 16, column: 3, position: 227, }, name: "$\xf0\x9f\x92\xbb", }, ), ), equals: Span { line: 16, column: 9, position: 233, }, right: New( NewExpression { new: Span { line: 16, column: 11, position: 235, }, target: Identifier( SimpleIdentifier( SimpleIdentifier { span: Span { line: 16, column: 15, position: 239, }, value: "\xf0\x9f\x92\xbb", }, ), ), arguments: Some( ArgumentList { comments: CommentGroup { comments: [], }, left_parenthesis: Span { line: 16, column: 19, position: 243, }, arguments: [], right_parenthesis: Span { line: 16, column: 20, position: 244, }, }, ), }, ), }, ), ending: Semicolon( Span { line: 16, column: 21, position: 245, }, ), }, ), Expression( ExpressionStatement { expression: AssignmentOperation( Assign { left: Variable( SimpleVariable( SimpleVariable { span: Span { line: 17, column: 3, position: 249, }, name: "$\xf0\x9f\x93\x84", }, ), ), equals: Span { line: 17, column: 9, position: 255, }, right: Literal( String( LiteralString { value: "hello, world", span: Span { line: 17, column: 11, position: 257, }, kind: DoubleQuoted, }, ), ), }, ), ending: Semicolon( Span { line: 17, column: 25, position: 271, }, ), }, ), Expression( ExpressionStatement { expression: MethodCall( MethodCallExpression { target: Variable( SimpleVariable( SimpleVariable { span: Span { line: 18, column: 3, position: 275, }, name: "$\xf0\x9f\x92\xbb", }, ), ), arrow: Span { line: 18, column: 8, position: 280, }, method: Identifier( SimpleIdentifier( SimpleIdentifier { span: Span { line: 18, column: 10, position: 282, }, value: "\xf0\x9f\x93\x9d", }, ), ), arguments: ArgumentList { comments: CommentGroup { comments: [], }, left_parenthesis: Span { line: 18, column: 14, position: 286, }, arguments: [ Named( NamedArgument { comments: CommentGroup { comments: [], }, name: SimpleIdentifier { span: Span { line: 18, column: 15, position: 287, }, value: "\xf0\x9f\x93\x83", }, colon: Span { line: 18, column: 19, position: 291, }, ellipsis: None, value: Variable( SimpleVariable( SimpleVariable { span: Span { line: 18, column: 21, position: 293, }, name: "$\xf0\x9f\x93\x84", }, ), ), }, ), ], right_parenthesis: Span { line: 18, column: 26, position: 298, }, }, }, ), ending: Semicolon( Span { line: 18, column: 27, position: 299, }, ), }, ), ], right_brace: Span { line: 19, column: 1, position: 301, }, }, }, ), Expression( ExpressionStatement { expression: FunctionCall( FunctionCallExpression { target: Identifier( SimpleIdentifier( SimpleIdentifier { span: Span { line: 21, column: 1, position: 304, }, value: "\xf0\x9f\x9a\xaa", }, ), ), arguments: ArgumentList { comments: CommentGroup { comments: [], }, left_parenthesis: Span { line: 21, column: 5, position: 308, }, arguments: [], right_parenthesis: Span { line: 21, column: 6, position: 309, }, }, }, ), ending: Semicolon( Span { line: 21, column: 7, position: 310, }, ), }, ), Expression( ExpressionStatement { expression: AssignmentOperation( Assign { left: Variable( SimpleVariable( SimpleVariable { span: Span { line: 23, column: 1, position: 313, }, name: "$var\xef\xbf\xbd", }, ), ), equals: Span { line: 23, column: 9, position: 321, }, right: Literal( Integer( LiteralInteger { value: "1", span: Span { line: 23, column: 11, position: 323, }, }, ), ), }, ), ending: Semicolon( Span { line: 23, column: 12, position: 324, }, ), }, ), Echo( EchoStatement { echo: Span { line: 23, column: 14, position: 326, }, values: [ Variable( SimpleVariable( SimpleVariable { span: Span { line: 23, column: 19, position: 331, }, name: "$var\xef\xbf\xbd", }, ), ), ], ending: Semicolon( Span { line: 23, column: 26, position: 338, }, ), }, ), ]