Understanding treesitter highlight groups

When I check the tree-sitter highlight groups with :Inspect I often see two different paths listed, for example @function.macro and @variable. I don’t know what this means, I suppose maybe it means there is a variable leaf inside a macro branch or something like that. Anyway, only the last listed highlight group is actually applied to text. This can be infuriating: it’s often not what I want and nothing I do seems to change it. It seems there is no way to specify a highlight group for say the intersection of two of these.

Is there any way to set the highlighting based on the full list given by :Inspect, or are you just completely hosed unless the treesitter is updated?