docs: def _iter_non_child_tokens(self, first_token, last_token, node):
      """
      Generates all tokens in [first_token, last_token] range that do not belong to any children of
      node. E.g. `foo(bar)` has children `foo` and `bar`, but we would yield the `(`.
      """
      tok = first_token
      for n in self._iter_children(node):
        for t in self._code.token_range(tok, self._code.prev_token(n.first_token)):
          yield t
        if n.last_token.index >= last_token.index:
          return
        tok = self._code.next_token(n.last_token)
  
      for t in self._code.token_range(tok, last_token):
        yield t