const PARSED = [
    {
        query: '(((D, ()))',
        elems: [],
        foundElems: 0,
        userQuery: '(((D, ()))',
        returned: [],
        error: 'Unclosed `(`',
    },
    {
        query: '(((D, ())))',
        elems: [
            {
                name: "()",
                fullPath: ["()"],
                pathWithoutLast: [],
                pathLast: "()",
                generics: [
                    {
                        name: "D",
                        fullPath: ["d"],
                        pathWithoutLast: [],
                        pathLast: "d",
                        generics: [],
                        typeFilter: -1,
                    },
                    {
                        name: "()",
                        fullPath: ["()"],
                        pathWithoutLast: [],
                        pathLast: "()",
                        generics: [],
                        typeFilter: 1,
                    },
                ],
                typeFilter: 1,
            }
        ],
        foundElems: 1,
        userQuery: '(((D, ())))',
        returned: [],
        error: null,
    },
    {
        query: '(),u8',
        elems: [
            {
                name: "()",
                fullPath: ["()"],
                pathWithoutLast: [],
                pathLast: "()",
                generics: [],
                typeFilter: 1,
            },
            {
                name: "u8",
                fullPath: ["u8"],
                pathWithoutLast: [],
                pathLast: "u8",
                generics: [],
                typeFilter: -1,
            },
        ],
        foundElems: 2,
        userQuery: "(),u8",
        returned: [],
        error: null,
    },
    // Parens act as grouping operators when:
    // - there's no commas directly nested within
    // - there's at least two child types (zero means unit)
    // - it's not tagged with a type filter
    // Otherwise, they represent unit and/or tuple. To search for
    // unit or tuple specifically, use `primitive:unit` or `primitive:tuple<...>`.
    {
        query: '(u8)',
        elems: [
            {
                name: "u8",
                fullPath: ["u8"],
                pathWithoutLast: [],
                pathLast: "u8",
                generics: [],
                typeFilter: -1,
            },
        ],
        foundElems: 1,
        userQuery: "(u8)",
        returned: [],
        error: null,
    },
    {
        query: '(u8,)',
        elems: [
            {
                name: "()",
                fullPath: ["()"],
                pathWithoutLast: [],
                pathLast: "()",
                generics: [
                    {
                        name: "u8",
                        fullPath: ["u8"],
                        pathWithoutLast: [],
                        pathLast: "u8",
                        generics: [],
                        typeFilter: -1,
                    },
                ],
                typeFilter: 1,
            },
        ],
        foundElems: 1,
        userQuery: "(u8,)",
        returned: [],
        error: null,
    },
    {
        query: '(,u8)',
        elems: [
            {
                name: "()",
                fullPath: ["()"],
                pathWithoutLast: [],
                pathLast: "()",
                generics: [
                    {
                        name: "u8",
                        fullPath: ["u8"],
                        pathWithoutLast: [],
                        pathLast: "u8",
                        generics: [],
                        typeFilter: -1,
                    },
                ],
                typeFilter: 1,
            },
        ],
        foundElems: 1,
        userQuery: "(,u8)",
        returned: [],
        error: null,
    },
    {
        query: 'primitive:(u8)',
        elems: [
            {
                name: "()",
                fullPath: ["()"],
                pathWithoutLast: [],
                pathLast: "()",
                generics: [
                    {
                        name: "u8",
                        fullPath: ["u8"],
                        pathWithoutLast: [],
                        pathLast: "u8",
                        generics: [],
                        typeFilter: -1,
                    },
                ],
                typeFilter: 1,
            },
        ],
        foundElems: 1,
        userQuery: "primitive:(u8)",
        returned: [],
        error: null,
    },
    {
        query: '(primitive:u8)',
        elems: [
            {
                name: "u8",
                fullPath: ["u8"],
                pathWithoutLast: [],
                pathLast: "u8",
                generics: [],
                typeFilter: 1,
            },
        ],
        foundElems: 1,
        userQuery: "(primitive:u8)",
        returned: [],
        error: null,
    },
    {
        query: '(u8,u8)',
        elems: [
            {
                name: "()",
                fullPath: ["()"],
                pathWithoutLast: [],
                pathLast: "()",
                generics: [
                    {
                        name: "u8",
                        fullPath: ["u8"],
                        pathWithoutLast: [],
                        pathLast: "u8",
                        generics: [],
                        typeFilter: -1,
                    },
                    {
                        name: "u8",
                        fullPath: ["u8"],
                        pathWithoutLast: [],
                        pathLast: "u8",
                        generics: [],
                        typeFilter: -1,
                    },
                ],
                typeFilter: 1,
            },
        ],
        foundElems: 1,
        userQuery: "(u8,u8)",
        returned: [],
        error: null,
    },
    {
        query: '(u8<u8>)',
        elems: [
            {
                name: "u8",
                fullPath: ["u8"],
                pathWithoutLast: [],
                pathLast: "u8",
                generics: [
                    {
                        name: "u8",
                        fullPath: ["u8"],
                        pathWithoutLast: [],
                        pathLast: "u8",
                        generics: [],
                        typeFilter: -1,
                    },
                ],
                typeFilter: -1,
            },
        ],
        foundElems: 1,
        userQuery: "(u8<u8>)",
        returned: [],
        error: null,
    },
    {
        query: '()',
        elems: [
            {
                name: "()",
                fullPath: ["()"],
                pathWithoutLast: [],
                pathLast: "()",
                generics: [],
                typeFilter: 1,
            },
        ],
        foundElems: 1,
        userQuery: "()",
        returned: [],
        error: null,
    },
    {
        query: '(>',
        elems: [],
        foundElems: 0,
        userQuery: "(>",
        returned: [],
        error: "Unexpected `>` after `(`",
    },
    {
        query: '(<',
        elems: [],
        foundElems: 0,
        userQuery: "(<",
        returned: [],
        error: "Found generics without a path",
    },
    {
        query: '(a>',
        elems: [],
        foundElems: 0,
        userQuery: "(a>",
        returned: [],
        error: "Unexpected `>` after `(`",
    },
    {
        query: '(a<',
        elems: [],
        foundElems: 0,
        userQuery: "(a<",
        returned: [],
        error: "Unclosed `<`",
    },
    {
        query: '(a',
        elems: [],
        foundElems: 0,
        userQuery: "(a",
        returned: [],
        error: "Unclosed `(`",
    },
    {
        query: '(',
        elems: [],
        foundElems: 0,
        userQuery: "(",
        returned: [],
        error: "Unclosed `(`",
    },
    {
        query: ')',
        elems: [],
        foundElems: 0,
        userQuery: ")",
        returned: [],
        error: "Unexpected `)`",
    },
    {
        query: '(a<b>',
        elems: [],
        foundElems: 0,
        userQuery: "(a<b>",
        returned: [],
        error: "Unclosed `(`",
    },
    {
        query: 'a<b>)',
        elems: [],
        foundElems: 0,
        userQuery: "a<b>)",
        returned: [],
        error: "Unexpected `)` after `>`",
    },
    {
        query: 'macro:(u8)',
        elems: [],
        foundElems: 0,
        userQuery: "macro:(u8)",
        returned: [],
        error: "Invalid search type: primitive `()` and `macro` both specified",
    },
];