Ok, I realized what was the problem. What I missed was that matches[node_metadata['name']] returns a list of TSNode, not just one.
matches[node_metadata['name']]
TSNode
Doing matches[node_metadata['name']][1] instead works as expected.
matches[node_metadata['name']][1]
Amazing what taking a break can do sometimes.