code: def test_add_self_loops_bipartite():
      edge_index = torch.tensor([[0, 1, 2, 3], [0, 0, 1, 1]])
      adj = to_torch_coo_tensor(edge_index, size=(4, 2))
  
      edge_index, _ = add_self_loops(edge_index, num_nodes=(4, 2))
      assert edge_index.tolist() == [
          [0, 1, 2, 3, 0, 1],
          [0, 0, 1, 1, 0, 1],
      ]
  
      adj, _ = add_self_loops(adj)
      assert adj._indices().tolist() == [
          [0, 1, 1, 2, 3],
          [0, 0, 1, 1, 1],
      ]
  
file_path: pytorch_geometric/test/utils/test_loop.py
imports: import torch
  from torch_geometric import EdgeIndex
  from torch_geometric.utils import add_remaining_self_loops, add_self_loops, contains_self_loops, get_self_loop_attr, remove_self_loops, segregate_self_loops, to_torch_coo_tensor
label_desc: Use image node_id 5 for calling a global function with example usage: test_add_self_loops_bipartite() without return types