1(
 2    (comment)* @context
 3    .
 4    (function_definition
 5        (type_qualifier)? @name
 6        type: (_)? @name
 7        declarator: [
 8            (function_declarator
 9                declarator: (_) @name)
10            (pointer_declarator
11                "*" @name
12                declarator: (function_declarator
13                declarator: (_) @name))
14            (pointer_declarator
15                "*" @name
16                declarator: (pointer_declarator
17                    "*" @name
18                declarator: (function_declarator
19                    declarator: (_) @name)))
20            (reference_declarator
21                ["&" "&&"] @name
22                (function_declarator
23                declarator: (_) @name))
24        ]
25        (type_qualifier)? @name) @item
26    )
27
28(
29    (comment)* @context
30    .
31    (template_declaration
32        (class_specifier
33            "class" @name
34            name: (_) @name)
35            ) @item
36)
37
38(
39    (comment)* @context
40    .
41    (class_specifier
42        "class" @name
43        name: (_) @name) @item
44    )
45
46(
47    (comment)* @context
48    .
49    (enum_specifier
50        "enum" @name
51        name: (_) @name) @item
52    )
53
54(
55    (comment)* @context
56    .
57    (declaration
58        type: (struct_specifier
59        "struct" @name)
60        declarator: (_) @name) @item
61)