/// Create a new ParseContext with different symbols but sharing source_code, root, errors, and source_map.
// HACK: Tree-sitter can only parse a complete program from top to bottom, not an individual bit of syntax.
pub fn get_metavars<'a>(node: &'a Node<'a>, src: &'a str) -> impl Iterator<Item = String> + 'a {