DefinitionTree {
    definitions: [
        Constant(
            ConstantDefinition {
                comments: CommentGroup {
                    comments: [],
                },
                const: Keyword {
                    value: "const",
                    position: 0,
                },
                type_definition: Identifier(
                    TemplatedIdentifier {
                        name: Identifier {
                            position: 6,
                            value: "Foo",
                        },
                        templates: None,
                    },
                ),
                name: Identifier {
                    position: 10,
                    value: "ONE",
                },
                equals: 14,
                value: ClassOperation(
                    Initialization {
                        comments: CommentGroup {
                            comments: [],
                        },
                        new: Keyword {
                            value: "new",
                            position: 16,
                        },
                        class: Identifier(
                            Identifier {
                                position: 20,
                                value: "Foo",
                            },
                        ),
                        generics: None,
                        arguments: ArgumentListExpression {
                            comments: CommentGroup {
                                comments: [],
                            },
                            left_parenthesis: 23,
                            arguments: CommaSeparated {
                                inner: [],
                                commas: [],
                            },
                            right_parenthesis: 24,
                        },
                    },
                ),
                semicolon: 25,
            },
        ),
        Class(
            ClassDefinition {
                comments: CommentGroup {
                    comments: [],
                },
                attributes: [],
                modifiers: ModifierGroupDefinition {
                    position: 28,
                    modifiers: [],
                },
                class: Keyword {
                    value: "class",
                    position: 28,
                },
                name: Identifier {
                    position: 34,
                    value: "Foo",
                },
                templates: None,
                extends: None,
                implements: None,
                body: ClassDefinitionBody {
                    left_brace: 38,
                    members: [
                        Constant(
                            ClassishConstantDefinition {
                                comments: CommentGroup {
                                    comments: [],
                                },
                                attributes: [],
                                modifiers: ModifierGroupDefinition {
                                    position: 44,
                                    modifiers: [],
                                },
                                const: Keyword {
                                    value: "const",
                                    position: 44,
                                },
                                type_definition: Identifier(
                                    TemplatedIdentifier {
                                        name: Identifier {
                                            position: 50,
                                            value: "\Closure",
                                        },
                                        templates: None,
                                    },
                                ),
                                name: Identifier {
                                    position: 59,
                                    value: "FOO",
                                },
                                equals: 63,
                                value: ArrowFunction(
                                    ArrowFunctionExpression {
                                        comments: CommentGroup {
                                            comments: [],
                                        },
                                        attributes: [],
                                        static: None,
                                        fn: Keyword {
                                            value: "fn",
                                            position: 65,
                                        },
                                        parameters: FunctionLikeParameterListDefinition {
                                            comments: CommentGroup {
                                                comments: [],
                                            },
                                            left_parenthesis: 67,
                                            parameters: CommaSeparated {
                                                inner: [],
                                                commas: [],
                                            },
                                            right_parenthesis: 68,
                                        },
                                        return_type: FunctionLikeReturnTypeDefinition {
                                            colon: 69,
                                            type_definition: SignedInteger(
                                                Default(
                                                    Keyword {
                                                        value: "int",
                                                        position: 71,
                                                    },
                                                ),
                                            ),
                                        },
                                        double_arrow: 75,
                                        body: Literal(
                                            Integer(
                                                LiteralInteger {
                                                    comments: CommentGroup {
                                                        comments: [],
                                                    },
                                                    value: "1",
                                                    position: 78,
                                                },
                                            ),
                                        ),
                                    },
                                ),
                                semicolon: 79,
                            },
                        ),
                        Property(
                            PropertyDefinition {
                                attributes: [],
                                modifiers: ModifierGroupDefinition {
                                    position: 152,
                                    modifiers: [
                                        Public(
                                            Keyword {
                                                value: "public",
                                                position: 86,
                                            },
                                        ),
                                        Static(
                                            Keyword {
                                                value: "static",
                                                position: 93,
                                            },
                                        ),
                                        Abstract(
                                            Keyword {
                                                value: "abstract",
                                                position: 100,
                                            },
                                        ),
                                        Abstract(
                                            Keyword {
                                                value: "Abstract",
                                                position: 109,
                                            },
                                        ),
                                        Readonly(
                                            Keyword {
                                                value: "readonly",
                                                position: 118,
                                            },
                                        ),
                                        Private(
                                            Keyword {
                                                value: "private",
                                                position: 127,
                                            },
                                        ),
                                        Static(
                                            Keyword {
                                                value: "static",
                                                position: 135,
                                            },
                                        ),
                                        Protected(
                                            Keyword {
                                                value: "protected",
                                                position: 142,
                                            },
                                        ),
                                    ],
                                },
                                type_definition: String(
                                    Keyword {
                                        value: "string",
                                        position: 152,
                                    },
                                ),
                                entry: Initialized {
                                    variable: Variable {
                                        position: 159,
                                        name: "$baz",
                                    },
                                    equals: 164,
                                    value: Literal(
                                        String(
                                            LiteralString {
                                                comments: CommentGroup {
                                                    comments: [],
                                                },
                                                value: "'baz'",
                                                position: 166,
                                            },
                                        ),
                                    ),
                                },
                                semicolon: 171,
                            },
                        ),
                        Property(
                            PropertyDefinition {
                                attributes: [],
                                modifiers: ModifierGroupDefinition {
                                    position: 185,
                                    modifiers: [
                                        Public(
                                            Keyword {
                                                value: "public",
                                                position: 178,
                                            },
                                        ),
                                    ],
                                },
                                type_definition: SignedInteger(
                                    Default(
                                        Keyword {
                                            value: "int",
                                            position: 185,
                                        },
                                    ),
                                ),
                                entry: Initialized {
                                    variable: Variable {
                                        position: 189,
                                        name: "$bar",
                                    },
                                    equals: 194,
                                    value: ArrowFunction(
                                        ArrowFunctionExpression {
                                            comments: CommentGroup {
                                                comments: [],
                                            },
                                            attributes: [],
                                            static: None,
                                            fn: Keyword {
                                                value: "fn",
                                                position: 196,
                                            },
                                            parameters: FunctionLikeParameterListDefinition {
                                                comments: CommentGroup {
                                                    comments: [],
                                                },
                                                left_parenthesis: 198,
                                                parameters: CommaSeparated {
                                                    inner: [],
                                                    commas: [],
                                                },
                                                right_parenthesis: 199,
                                            },
                                            return_type: FunctionLikeReturnTypeDefinition {
                                                colon: 200,
                                                type_definition: Identifier(
                                                    TemplatedIdentifier {
                                                        name: Identifier {
                                                            position: 202,
                                                            value: "Foo",
                                                        },
                                                        templates: None,
                                                    },
                                                ),
                                            },
                                            double_arrow: 206,
                                            body: ClassOperation(
                                                Initialization {
                                                    comments: CommentGroup {
                                                        comments: [],
                                                    },
                                                    new: Keyword {
                                                        value: "new",
                                                        position: 209,
                                                    },
                                                    class: Identifier(
                                                        Identifier {
                                                            position: 213,
                                                            value: "Foo",
                                                        },
                                                    ),
                                                    generics: None,
                                                    arguments: ArgumentListExpression {
                                                        comments: CommentGroup {
                                                            comments: [],
                                                        },
                                                        left_parenthesis: 216,
                                                        arguments: CommaSeparated {
                                                            inner: [],
                                                            commas: [],
                                                        },
                                                        right_parenthesis: 217,
                                                    },
                                                },
                                            ),
                                        },
                                    ),
                                },
                                semicolon: 218,
                            },
                        ),
                        Property(
                            PropertyDefinition {
                                attributes: [],
                                modifiers: ModifierGroupDefinition {
                                    position: 232,
                                    modifiers: [
                                        Public(
                                            Keyword {
                                                value: "public",
                                                position: 225,
                                            },
                                        ),
                                    ],
                                },
                                type_definition: SignedInteger(
                                    Default(
                                        Keyword {
                                            value: "int",
                                            position: 232,
                                        },
                                    ),
                                ),
                                entry: Initialized {
                                    variable: Variable {
                                        position: 236,
                                        name: "$foo",
                                    },
                                    equals: 241,
                                    value: ObjectOperation(
                                        PropertyFetch {
                                            comments: CommentGroup {
                                                comments: [],
                                            },
                                            object: Variable(
                                                Variable {
                                                    position: 243,
                                                    name: "$this",
                                                },
                                            ),
                                            arrow: 248,
                                            property: Identifier {
                                                position: 250,
                                                value: "bar",
                                            },
                                        },
                                    ),
                                },
                                semicolon: 253,
                            },
                        ),
                    ],
                    right_brace: 255,
                },
            },
        ),
    ],
    eof: 257,
}