code: def map_args_kwargs(
      self, node: Node, key: Union[NodeType, EdgeType]
  ) -> Tuple[Tuple, Dict]:
      def _recurse(value: Any) -> Any:
          if isinstance(value, Node):
              out = self.find_by_name(f"{value.name}__{key2str(key)}")
              if out is not None:
                  return out
              elif isinstance(key, tuple) and key[0] == key[-1]:
                  name = f"{value.name}__{key2str(key[0])}"
                  return self.find_by_name(name)
              elif isinstance(key, tuple) and key[0] != key[-1]:
                  return (
                      self.find_by_name(
                          f"{value.name}__{key2str(key[0])}"
                      ),
                      self.find_by_name(
                          f"{value.name}__{key2str(key[-1])}"
                      ),
                  )
              else:
                  raise ValueError(
                      f"Cannot generate a graph node '{node}' "
                      f"for type '{key}' since it does not "
                      f"exist. Please make sure that all "
                      f"node types get updated during message "
                      f"passing."
                  )
          elif isinstance(value, dict):
              return {k: _recurse(v) for k, v in value.items()}
          elif isinstance(value, list):
              return [_recurse(v) for v in value]
          elif isinstance(value, tuple):
              return tuple(_recurse(v) for v in value)
          else:
              return value
  
      args = tuple(_recurse(v) for v in node.args)
      kwargs = {k: _recurse(v) for k, v in node.kwargs.items()}
      return args, kwargs
  
imports: import copy
  import warnings
  from collections import defaultdict, deque
  from typing import Any, Dict, Optional, Tuple, Union
  import torch
  from torch.nn import Module
  from torch_geometric.nn.dense.linear import is_uninitialized_parameter
  from torch_geometric.nn.fx import Transformer, get_submodule
  from torch_geometric.typing import EdgeType, Metadata, NodeType
  from torch_geometric.utils.hetero import check_add_self_loops, get_unused_node_types
label_desc: Use image node_id 12 for calling the ToHeteroTransformer obj's underlying member method code with example usage: obj.map_args_kwargs(node, key) and returns: args,  kwargs, out, unknown, self, unknown, self,  self, tuple, value