code: def forward(
      self,
      x: Union[Tensor, Dict[NodeType, Tensor]],
      edge_index: Union[Tensor, Dict[EdgeType, Tensor]],
      node_type: OptTensor = None,
      edge_type: OptTensor = None,
      **kwargs,
  ) -> Union[Tensor, Dict[NodeType, Tensor]]:
      if isinstance(x, dict) and isinstance(edge_index, dict):
          return self.dict_forward(x, edge_index, **kwargs)
  
      elif (
          isinstance(x, Tensor)
          and isinstance(edge_index, Tensor)
          and node_type is not None
          and edge_type is not None
      ):
          if len(kwargs) > 0:
              raise ValueError(
                  "Additional forward arguments not yet "
                  "supported in fused mode"
              )
  
          return self.fused_forward(x, edge_index, node_type, edge_type)
  
      raise ValueError(
          f"Encountered invalid forward types in "
          f"'{self.__class__.__name__}'"
      )
  
imports: import copy
  import warnings
  from typing import Dict, List, Optional, Union
  import torch
  import torch.nn.functional
  from torch import Tensor
  import torch_geometric
  from torch_geometric import is_compiling
  from torch_geometric.typing import EdgeType, NodeType, OptTensor
  from torch_geometric.utils import cumsum, scatter
label_desc: Use image node_id 4 for calling the ToHeteroMessagePassing obj's underlying member method code with example usage: obj.forward(x, edge_index, node_type, edge_type) and returns: self, self