code: def forward(
      self, x: Tensor, edge_index: Adj, edge_weight: OptTensor = None
  ) -> Tensor:
      # propagate_type: (x: Tensor, edge_weight: OptTensor)
      out = self.propagate(
          edge_index, x=x, edge_weight=edge_weight, size=None
      )
  
      # out = self.lin(out)
      out = out @ self.weight
  
      if self.bias is not None:
          out += self.bias
  
      return out
  
imports: from typing import Optional
  import torch
  from torch import Tensor
  import torch.nn.functional
  from torch.nn import ModuleList, Linear, BatchNorm1d
  from torch_sparse import SparseTensor
  from torch_geometric.nn import GCNConv
  from ..models import ScalableGNN
  from torch_geometric.typing import Adj, OptTensor
label_desc: Use image node_id 2 for calling the GCNConv obj's underlying member method code with example usage: obj.forward(x, edge_index, edge_weight) and returns: out