DefinitionTree {
    definitions: [
        TypeAlias(
            TypeAliasDefinition {
                type: Keyword {
                    value: "type",
                    position: 1,
                },
                name: TemplatedIdentifier {
                    name: Identifier {
                        position: 6,
                        value: "a",
                    },
                    templates: None,
                },
                equals: 8,
                type_definition: Literal(
                    Null(
                        LiteralNull {
                            comments: CommentGroup {
                                comments: [],
                            },
                            null: Keyword {
                                value: "null",
                                position: 10,
                            },
                        },
                    ),
                ),
                semicolon: 14,
            },
        ),
        TypeAlias(
            TypeAliasDefinition {
                type: Keyword {
                    value: "type",
                    position: 16,
                },
                name: TemplatedIdentifier {
                    name: Identifier {
                        position: 21,
                        value: "b",
                    },
                    templates: None,
                },
                equals: 23,
                type_definition: Literal(
                    False(
                        LiteralFalse {
                            comments: CommentGroup {
                                comments: [],
                            },
                            false: Keyword {
                                value: "false",
                                position: 25,
                            },
                        },
                    ),
                ),
                semicolon: 30,
            },
        ),
        TypeAlias(
            TypeAliasDefinition {
                type: Keyword {
                    value: "type",
                    position: 32,
                },
                name: TemplatedIdentifier {
                    name: Identifier {
                        position: 37,
                        value: "c",
                    },
                    templates: None,
                },
                equals: 39,
                type_definition: Literal(
                    True(
                        LiteralTrue {
                            comments: CommentGroup {
                                comments: [],
                            },
                            true: Keyword {
                                value: "true",
                                position: 41,
                            },
                        },
                    ),
                ),
                semicolon: 45,
            },
        ),
        TypeAlias(
            TypeAliasDefinition {
                type: Keyword {
                    value: "type",
                    position: 47,
                },
                name: TemplatedIdentifier {
                    name: Identifier {
                        position: 52,
                        value: "d",
                    },
                    templates: None,
                },
                equals: 54,
                type_definition: NonNull(
                    Keyword {
                        value: "nonnull",
                        position: 56,
                    },
                ),
                semicolon: 63,
            },
        ),
        TypeAlias(
            TypeAliasDefinition {
                type: Keyword {
                    value: "type",
                    position: 65,
                },
                name: TemplatedIdentifier {
                    name: Identifier {
                        position: 70,
                        value: "e",
                    },
                    templates: None,
                },
                equals: 72,
                type_definition: Union(
                    [
                        Identifier(
                            TemplatedIdentifier {
                                name: Identifier {
                                    position: 74,
                                    value: "a",
                                },
                                templates: None,
                            },
                        ),
                        Identifier(
                            TemplatedIdentifier {
                                name: Identifier {
                                    position: 76,
                                    value: "b",
                                },
                                templates: None,
                            },
                        ),
                        Identifier(
                            TemplatedIdentifier {
                                name: Identifier {
                                    position: 78,
                                    value: "c",
                                },
                                templates: None,
                            },
                        ),
                        Identifier(
                            TemplatedIdentifier {
                                name: Identifier {
                                    position: 80,
                                    value: "d",
                                },
                                templates: None,
                            },
                        ),
                    ],
                ),
                semicolon: 81,
            },
        ),
        TypeAlias(
            TypeAliasDefinition {
                type: Keyword {
                    value: "type",
                    position: 83,
                },
                name: TemplatedIdentifier {
                    name: Identifier {
                        position: 88,
                        value: "f",
                    },
                    templates: None,
                },
                equals: 90,
                type_definition: Identifier(
                    TemplatedIdentifier {
                        name: Identifier {
                            position: 92,
                            value: "Closure",
                        },
                        templates: Some(
                            TypeTemplateGroupDefinition {
                                comments: CommentGroup {
                                    comments: [],
                                },
                                less_than: 99,
                                members: CommaSeparated {
                                    inner: [
                                        Parenthesized {
                                            left_parenthesis: 100,
                                            type_definition: Union(
                                                [
                                                    Identifier(
                                                        TemplatedIdentifier {
                                                            name: Identifier {
                                                                position: 101,
                                                                value: "a",
                                                            },
                                                            templates: None,
                                                        },
                                                    ),
                                                    Identifier(
                                                        TemplatedIdentifier {
                                                            name: Identifier {
                                                                position: 103,
                                                                value: "b",
                                                            },
                                                            templates: None,
                                                        },
                                                    ),
                                                ],
                                            ),
                                            right_parenthesis: 104,
                                        },
                                        Union(
                                            [
                                                Identifier(
                                                    TemplatedIdentifier {
                                                        name: Identifier {
                                                            position: 107,
                                                            value: "c",
                                                        },
                                                        templates: None,
                                                    },
                                                ),
                                                Identifier(
                                                    TemplatedIdentifier {
                                                        name: Identifier {
                                                            position: 109,
                                                            value: "d",
                                                        },
                                                        templates: None,
                                                    },
                                                ),
                                            ],
                                        ),
                                    ],
                                    commas: [
                                        105,
                                    ],
                                },
                                greater_than: 110,
                            },
                        ),
                    },
                ),
                semicolon: 111,
            },
        ),
        TypeAlias(
            TypeAliasDefinition {
                type: Keyword {
                    value: "type",
                    position: 113,
                },
                name: TemplatedIdentifier {
                    name: Identifier {
                        position: 118,
                        value: "g",
                    },
                    templates: None,
                },
                equals: 120,
                type_definition: Vec(
                    Keyword {
                        value: "vec",
                        position: 122,
                    },
                    TypeTemplateGroupDefinition {
                        comments: CommentGroup {
                            comments: [],
                        },
                        less_than: 125,
                        members: CommaSeparated {
                            inner: [
                                Integer(
                                    Keyword {
                                        value: "int",
                                        position: 126,
                                    },
                                ),
                            ],
                            commas: [],
                        },
                        greater_than: 129,
                    },
                ),
                semicolon: 130,
            },
        ),
        TypeAlias(
            TypeAliasDefinition {
                type: Keyword {
                    value: "type",
                    position: 132,
                },
                name: TemplatedIdentifier {
                    name: Identifier {
                        position: 137,
                        value: "h",
                    },
                    templates: None,
                },
                equals: 139,
                type_definition: Union(
                    [
                        Identifier(
                            TemplatedIdentifier {
                                name: Identifier {
                                    position: 141,
                                    value: "Foo",
                                },
                                templates: Some(
                                    TypeTemplateGroupDefinition {
                                        comments: CommentGroup {
                                            comments: [],
                                        },
                                        less_than: 144,
                                        members: CommaSeparated {
                                            inner: [
                                                String(
                                                    Keyword {
                                                        value: "string",
                                                        position: 145,
                                                    },
                                                ),
                                            ],
                                            commas: [],
                                        },
                                        greater_than: 151,
                                    },
                                ),
                            },
                        ),
                        Identifier(
                            TemplatedIdentifier {
                                name: Identifier {
                                    position: 153,
                                    value: "Bar",
                                },
                                templates: Some(
                                    TypeTemplateGroupDefinition {
                                        comments: CommentGroup {
                                            comments: [],
                                        },
                                        less_than: 156,
                                        members: CommaSeparated {
                                            inner: [
                                                NonNull(
                                                    Keyword {
                                                        value: "nonnull",
                                                        position: 157,
                                                    },
                                                ),
                                            ],
                                            commas: [],
                                        },
                                        greater_than: 164,
                                    },
                                ),
                            },
                        ),
                    ],
                ),
                semicolon: 165,
            },
        ),
        TypeAlias(
            TypeAliasDefinition {
                type: Keyword {
                    value: "type",
                    position: 167,
                },
                name: TemplatedIdentifier {
                    name: Identifier {
                        position: 172,
                        value: "i",
                    },
                    templates: None,
                },
                equals: 174,
                type_definition: Union(
                    [
                        Identifier(
                            TemplatedIdentifier {
                                name: Identifier {
                                    position: 176,
                                    value: "Closure",
                                },
                                templates: Some(
                                    TypeTemplateGroupDefinition {
                                        comments: CommentGroup {
                                            comments: [],
                                        },
                                        less_than: 183,
                                        members: CommaSeparated {
                                            inner: [
                                                Parenthesized {
                                                    left_parenthesis: 184,
                                                    type_definition: Union(
                                                        [
                                                            Identifier(
                                                                TemplatedIdentifier {
                                                                    name: Identifier {
                                                                        position: 185,
                                                                        value: "a",
                                                                    },
                                                                    templates: None,
                                                                },
                                                            ),
                                                            Identifier(
                                                                TemplatedIdentifier {
                                                                    name: Identifier {
                                                                        position: 187,
                                                                        value: "b",
                                                                    },
                                                                    templates: None,
                                                                },
                                                            ),
                                                        ],
                                                    ),
                                                    right_parenthesis: 188,
                                                },
                                                Identifier(
                                                    TemplatedIdentifier {
                                                        name: Identifier {
                                                            position: 191,
                                                            value: "g",
                                                        },
                                                        templates: None,
                                                    },
                                                ),
                                            ],
                                            commas: [
                                                189,
                                            ],
                                        },
                                        greater_than: 192,
                                    },
                                ),
                            },
                        ),
                        Identifier(
                            TemplatedIdentifier {
                                name: Identifier {
                                    position: 194,
                                    value: "Closure",
                                },
                                templates: Some(
                                    TypeTemplateGroupDefinition {
                                        comments: CommentGroup {
                                            comments: [],
                                        },
                                        less_than: 201,
                                        members: CommaSeparated {
                                            inner: [
                                                Parenthesized {
                                                    left_parenthesis: 202,
                                                    type_definition: Union(
                                                        [
                                                            Identifier(
                                                                TemplatedIdentifier {
                                                                    name: Identifier {
                                                                        position: 203,
                                                                        value: "a",
                                                                    },
                                                                    templates: None,
                                                                },
                                                            ),
                                                            Identifier(
                                                                TemplatedIdentifier {
                                                                    name: Identifier {
                                                                        position: 205,
                                                                        value: "b",
                                                                    },
                                                                    templates: None,
                                                                },
                                                            ),
                                                        ],
                                                    ),
                                                    right_parenthesis: 206,
                                                },
                                                Identifier(
                                                    TemplatedIdentifier {
                                                        name: Identifier {
                                                            position: 209,
                                                            value: "h",
                                                        },
                                                        templates: None,
                                                    },
                                                ),
                                            ],
                                            commas: [
                                                207,
                                            ],
                                        },
                                        greater_than: 210,
                                    },
                                ),
                            },
                        ),
                        Identifier(
                            TemplatedIdentifier {
                                name: Identifier {
                                    position: 212,
                                    value: "Closure",
                                },
                                templates: Some(
                                    TypeTemplateGroupDefinition {
                                        comments: CommentGroup {
                                            comments: [],
                                        },
                                        less_than: 219,
                                        members: CommaSeparated {
                                            inner: [
                                                Parenthesized {
                                                    left_parenthesis: 220,
                                                    type_definition: Union(
                                                        [
                                                            Identifier(
                                                                TemplatedIdentifier {
                                                                    name: Identifier {
                                                                        position: 221,
                                                                        value: "a",
                                                                    },
                                                                    templates: None,
                                                                },
                                                            ),
                                                            Identifier(
                                                                TemplatedIdentifier {
                                                                    name: Identifier {
                                                                        position: 223,
                                                                        value: "b",
                                                                    },
                                                                    templates: None,
                                                                },
                                                            ),
                                                        ],
                                                    ),
                                                    right_parenthesis: 224,
                                                },
                                                Union(
                                                    [
                                                        Identifier(
                                                            TemplatedIdentifier {
                                                                name: Identifier {
                                                                    position: 227,
                                                                    value: "a",
                                                                },
                                                                templates: None,
                                                            },
                                                        ),
                                                        Identifier(
                                                            TemplatedIdentifier {
                                                                name: Identifier {
                                                                    position: 229,
                                                                    value: "b",
                                                                },
                                                                templates: None,
                                                            },
                                                        ),
                                                        Identifier(
                                                            TemplatedIdentifier {
                                                                name: Identifier {
                                                                    position: 231,
                                                                    value: "c",
                                                                },
                                                                templates: None,
                                                            },
                                                        ),
                                                    ],
                                                ),
                                            ],
                                            commas: [
                                                225,
                                            ],
                                        },
                                        greater_than: 232,
                                    },
                                ),
                            },
                        ),
                        Parenthesized {
                            left_parenthesis: 234,
                            type_definition: Intersection(
                                [
                                    Identifier(
                                        TemplatedIdentifier {
                                            name: Identifier {
                                                position: 235,
                                                value: "Foo",
                                            },
                                            templates: None,
                                        },
                                    ),
                                    Identifier(
                                        TemplatedIdentifier {
                                            name: Identifier {
                                                position: 239,
                                                value: "Bar",
                                            },
                                            templates: None,
                                        },
                                    ),
                                ],
                            ),
                            right_parenthesis: 242,
                        },
                    ],
                ),
                semicolon: 243,
            },
        ),
        TypeAlias(
            TypeAliasDefinition {
                type: Keyword {
                    value: "type",
                    position: 245,
                },
                name: TemplatedIdentifier {
                    name: Identifier {
                        position: 250,
                        value: "j",
                    },
                    templates: None,
                },
                equals: 252,
                type_definition: Identifier(
                    TemplatedIdentifier {
                        name: Identifier {
                            position: 254,
                            value: "Closure",
                        },
                        templates: Some(
                            TypeTemplateGroupDefinition {
                                comments: CommentGroup {
                                    comments: [],
                                },
                                less_than: 261,
                                members: CommaSeparated {
                                    inner: [
                                        Parenthesized {
                                            left_parenthesis: 262,
                                            type_definition: Union(
                                                [
                                                    Identifier(
                                                        TemplatedIdentifier {
                                                            name: Identifier {
                                                                position: 263,
                                                                value: "a",
                                                            },
                                                            templates: None,
                                                        },
                                                    ),
                                                    Identifier(
                                                        TemplatedIdentifier {
                                                            name: Identifier {
                                                                position: 265,
                                                                value: "b",
                                                            },
                                                            templates: None,
                                                        },
                                                    ),
                                                ],
                                            ),
                                            right_parenthesis: 266,
                                        },
                                        Identifier(
                                            TemplatedIdentifier {
                                                name: Identifier {
                                                    position: 269,
                                                    value: "i",
                                                },
                                                templates: None,
                                            },
                                        ),
                                    ],
                                    commas: [
                                        267,
                                    ],
                                },
                                greater_than: 270,
                            },
                        ),
                    },
                ),
                semicolon: 271,
            },
        ),
        TypeAlias(
            TypeAliasDefinition {
                type: Keyword {
                    value: "type",
                    position: 273,
                },
                name: TemplatedIdentifier {
                    name: Identifier {
                        position: 278,
                        value: "k",
                    },
                    templates: None,
                },
                equals: 280,
                type_definition: Dict(
                    Keyword {
                        value: "dict",
                        position: 282,
                    },
                    TypeTemplateGroupDefinition {
                        comments: CommentGroup {
                            comments: [],
                        },
                        less_than: 286,
                        members: CommaSeparated {
                            inner: [
                                Integer(
                                    Keyword {
                                        value: "int",
                                        position: 287,
                                    },
                                ),
                                Iterable(
                                    Keyword {
                                        value: "iterable",
                                        position: 292,
                                    },
                                    TypeTemplateGroupDefinition {
                                        comments: CommentGroup {
                                            comments: [],
                                        },
                                        less_than: 300,
                                        members: CommaSeparated {
                                            inner: [
                                                Integer(
                                                    Keyword {
                                                        value: "int",
                                                        position: 301,
                                                    },
                                                ),
                                            ],
                                            commas: [],
                                        },
                                        greater_than: 304,
                                    },
                                ),
                            ],
                            commas: [
                                290,
                            ],
                        },
                        greater_than: 305,
                    },
                ),
                semicolon: 306,
            },
        ),
        TypeAlias(
            TypeAliasDefinition {
                type: Keyword {
                    value: "type",
                    position: 308,
                },
                name: TemplatedIdentifier {
                    name: Identifier {
                        position: 313,
                        value: "l",
                    },
                    templates: None,
                },
                equals: 315,
                type_definition: Literal(
                    String(
                        LiteralString {
                            comments: CommentGroup {
                                comments: [],
                            },
                            value: ""bar"",
                            position: 317,
                        },
                    ),
                ),
                semicolon: 322,
            },
        ),
        TypeAlias(
            TypeAliasDefinition {
                type: Keyword {
                    value: "type",
                    position: 324,
                },
                name: TemplatedIdentifier {
                    name: Identifier {
                        position: 329,
                        value: "m",
                    },
                    templates: None,
                },
                equals: 331,
                type_definition: Literal(
                    Integer(
                        LiteralInteger {
                            comments: CommentGroup {
                                comments: [],
                            },
                            value: "1",
                            position: 333,
                        },
                    ),
                ),
                semicolon: 334,
            },
        ),
        TypeAlias(
            TypeAliasDefinition {
                type: Keyword {
                    value: "type",
                    position: 336,
                },
                name: TemplatedIdentifier {
                    name: Identifier {
                        position: 341,
                        value: "n",
                    },
                    templates: None,
                },
                equals: 343,
                type_definition: Literal(
                    Float(
                        LiteralFloat {
                            comments: CommentGroup {
                                comments: [],
                            },
                            value: "1.5",
                            position: 345,
                        },
                    ),
                ),
                semicolon: 348,
            },
        ),
        TypeAlias(
            TypeAliasDefinition {
                type: Keyword {
                    value: "type",
                    position: 350,
                },
                name: TemplatedIdentifier {
                    name: Identifier {
                        position: 355,
                        value: "o",
                    },
                    templates: None,
                },
                equals: 357,
                type_definition: Union(
                    [
                        Literal(
                            Integer(
                                LiteralInteger {
                                    comments: CommentGroup {
                                        comments: [],
                                    },
                                    value: "1",
                                    position: 359,
                                },
                            ),
                        ),
                        Literal(
                            Float(
                                LiteralFloat {
                                    comments: CommentGroup {
                                        comments: [],
                                    },
                                    value: "1.5",
                                    position: 363,
                                },
                            ),
                        ),
                        Literal(
                            Integer(
                                LiteralInteger {
                                    comments: CommentGroup {
                                        comments: [],
                                    },
                                    value: "2",
                                    position: 369,
                                },
                            ),
                        ),
                        Literal(
                            String(
                                LiteralString {
                                    comments: CommentGroup {
                                        comments: [],
                                    },
                                    value: ""foo"",
                                    position: 373,
                                },
                            ),
                        ),
                        Literal(
                            Float(
                                LiteralFloat {
                                    comments: CommentGroup {
                                        comments: [],
                                    },
                                    value: "2.5",
                                    position: 381,
                                },
                            ),
                        ),
                        Literal(
                            String(
                                LiteralString {
                                    comments: CommentGroup {
                                        comments: [],
                                    },
                                    value: ""bar"",
                                    position: 387,
                                },
                            ),
                        ),
                    ],
                ),
                semicolon: 392,
            },
        ),
    ],
    eof: 394,
}