DefinitionTree {
    definitions: [
        Constant(
            ConstantDefinition {
                comments: CommentGroup {
                    comments: [],
                },
                const: Keyword {
                    value: "const",
                    position: 0,
                },
                entries: CommaSeparated {
                    inner: [
                        ConstantDefinitionEntry {
                            name: Identifier {
                                position: 6,
                                value: "ONE",
                            },
                            equals: 10,
                            value: ClassOperation(
                                Initialization {
                                    comments: CommentGroup {
                                        comments: [],
                                    },
                                    new: Keyword {
                                        value: "new",
                                        position: 12,
                                    },
                                    class: Identifier(
                                        Identifier {
                                            position: 16,
                                            value: "Foo",
                                        },
                                    ),
                                    generics: None,
                                    arguments: ArgumentListExpression {
                                        comments: CommentGroup {
                                            comments: [],
                                        },
                                        left_parenthesis: 19,
                                        arguments: CommaSeparated {
                                            inner: [],
                                            commas: [],
                                        },
                                        right_parenthesis: 20,
                                    },
                                },
                            ),
                        },
                    ],
                    commas: [],
                },
                semicolon: 21,
            },
        ),
        Class(
            ClassDefinition {
                comments: CommentGroup {
                    comments: [],
                },
                attributes: [],
                modifiers: ModifierGroupDefinition {
                    position: 24,
                    modifiers: [],
                },
                class: Keyword {
                    value: "class",
                    position: 24,
                },
                name: Identifier {
                    position: 30,
                    value: "Foo",
                },
                templates: None,
                extends: None,
                implements: None,
                body: ClassDefinitionBody {
                    left_brace: 34,
                    members: [
                        Constant(
                            ClassishConstantDefinition {
                                comments: CommentGroup {
                                    comments: [],
                                },
                                attributes: [],
                                modifiers: ModifierGroupDefinition {
                                    position: 40,
                                    modifiers: [],
                                },
                                const: Keyword {
                                    value: "CONST",
                                    position: 40,
                                },
                                entries: CommaSeparated {
                                    inner: [
                                        ConstantDefinitionEntry {
                                            name: Identifier {
                                                position: 46,
                                                value: "FOO",
                                            },
                                            equals: 50,
                                            value: ArrowFunction(
                                                ArrowFunctionExpression {
                                                    comments: CommentGroup {
                                                        comments: [],
                                                    },
                                                    attributes: [],
                                                    static: None,
                                                    fn: Keyword {
                                                        value: "fn",
                                                        position: 52,
                                                    },
                                                    parameters: FunctionLikeParameterListDefinition {
                                                        comments: CommentGroup {
                                                            comments: [],
                                                        },
                                                        left_parenthesis: 54,
                                                        parameters: CommaSeparated {
                                                            inner: [],
                                                            commas: [],
                                                        },
                                                        right_parenthesis: 55,
                                                    },
                                                    return_type: FunctionLikeReturnTypeDefinition {
                                                        colon: 56,
                                                        type_definition: Integer(
                                                            Keyword {
                                                                value: "int",
                                                                position: 58,
                                                            },
                                                        ),
                                                    },
                                                    double_arrow: 62,
                                                    body: Literal(
                                                        Integer(
                                                            LiteralInteger {
                                                                comments: CommentGroup {
                                                                    comments: [],
                                                                },
                                                                value: "1",
                                                                position: 65,
                                                            },
                                                        ),
                                                    ),
                                                },
                                            ),
                                        },
                                    ],
                                    commas: [],
                                },
                                semicolon: 66,
                            },
                        ),
                        Property(
                            PropertyDefinition {
                                attributes: [],
                                modifiers: ModifierGroupDefinition {
                                    position: 139,
                                    modifiers: [
                                        Public(
                                            Keyword {
                                                value: "public",
                                                position: 73,
                                            },
                                        ),
                                        Static(
                                            Keyword {
                                                value: "static",
                                                position: 80,
                                            },
                                        ),
                                        Abstract(
                                            Keyword {
                                                value: "abstract",
                                                position: 87,
                                            },
                                        ),
                                        Abstract(
                                            Keyword {
                                                value: "Abstract",
                                                position: 96,
                                            },
                                        ),
                                        Readonly(
                                            Keyword {
                                                value: "readonly",
                                                position: 105,
                                            },
                                        ),
                                        Private(
                                            Keyword {
                                                value: "private",
                                                position: 114,
                                            },
                                        ),
                                        Static(
                                            Keyword {
                                                value: "static",
                                                position: 122,
                                            },
                                        ),
                                        Protected(
                                            Keyword {
                                                value: "protected",
                                                position: 129,
                                            },
                                        ),
                                    ],
                                },
                                type_definition: String(
                                    Keyword {
                                        value: "string",
                                        position: 139,
                                    },
                                ),
                                entry: Initialized {
                                    variable: Variable {
                                        position: 146,
                                        name: "$baz",
                                    },
                                    equals: 151,
                                    value: Literal(
                                        String(
                                            LiteralString {
                                                comments: CommentGroup {
                                                    comments: [],
                                                },
                                                value: "'baz'",
                                                position: 153,
                                            },
                                        ),
                                    ),
                                },
                                semicolon: 158,
                            },
                        ),
                        Property(
                            PropertyDefinition {
                                attributes: [],
                                modifiers: ModifierGroupDefinition {
                                    position: 172,
                                    modifiers: [
                                        Public(
                                            Keyword {
                                                value: "public",
                                                position: 165,
                                            },
                                        ),
                                    ],
                                },
                                type_definition: Integer(
                                    Keyword {
                                        value: "int",
                                        position: 172,
                                    },
                                ),
                                entry: Initialized {
                                    variable: Variable {
                                        position: 176,
                                        name: "$bar",
                                    },
                                    equals: 181,
                                    value: ArrowFunction(
                                        ArrowFunctionExpression {
                                            comments: CommentGroup {
                                                comments: [],
                                            },
                                            attributes: [],
                                            static: None,
                                            fn: Keyword {
                                                value: "fn",
                                                position: 183,
                                            },
                                            parameters: FunctionLikeParameterListDefinition {
                                                comments: CommentGroup {
                                                    comments: [],
                                                },
                                                left_parenthesis: 185,
                                                parameters: CommaSeparated {
                                                    inner: [],
                                                    commas: [],
                                                },
                                                right_parenthesis: 186,
                                            },
                                            return_type: FunctionLikeReturnTypeDefinition {
                                                colon: 187,
                                                type_definition: Identifier(
                                                    TemplatedIdentifier {
                                                        name: Identifier {
                                                            position: 189,
                                                            value: "Foo",
                                                        },
                                                        templates: None,
                                                    },
                                                ),
                                            },
                                            double_arrow: 193,
                                            body: ClassOperation(
                                                Initialization {
                                                    comments: CommentGroup {
                                                        comments: [],
                                                    },
                                                    new: Keyword {
                                                        value: "new",
                                                        position: 196,
                                                    },
                                                    class: Identifier(
                                                        Identifier {
                                                            position: 200,
                                                            value: "Foo",
                                                        },
                                                    ),
                                                    generics: None,
                                                    arguments: ArgumentListExpression {
                                                        comments: CommentGroup {
                                                            comments: [],
                                                        },
                                                        left_parenthesis: 203,
                                                        arguments: CommaSeparated {
                                                            inner: [],
                                                            commas: [],
                                                        },
                                                        right_parenthesis: 204,
                                                    },
                                                },
                                            ),
                                        },
                                    ),
                                },
                                semicolon: 205,
                            },
                        ),
                        Property(
                            PropertyDefinition {
                                attributes: [],
                                modifiers: ModifierGroupDefinition {
                                    position: 219,
                                    modifiers: [
                                        Public(
                                            Keyword {
                                                value: "public",
                                                position: 212,
                                            },
                                        ),
                                    ],
                                },
                                type_definition: Integer(
                                    Keyword {
                                        value: "int",
                                        position: 219,
                                    },
                                ),
                                entry: Initialized {
                                    variable: Variable {
                                        position: 223,
                                        name: "$foo",
                                    },
                                    equals: 228,
                                    value: ObjectOperation(
                                        PropertyFetch {
                                            comments: CommentGroup {
                                                comments: [],
                                            },
                                            object: Variable(
                                                Variable {
                                                    position: 230,
                                                    name: "$this",
                                                },
                                            ),
                                            arrow: 235,
                                            property: Identifier {
                                                position: 237,
                                                value: "bar",
                                            },
                                        },
                                    ),
                                },
                                semicolon: 240,
                            },
                        ),
                    ],
                    right_brace: 242,
                },
            },
        ),
    ],
    eof: 244,
}