code: def _add_edge(self, layer, input_id, output_id):
          
  
          if layer in self.layer_to_id:
              layer_id = self.layer_to_id[layer]
              if input_id not in self.layer_id_to_input_node_ids[layer_id]:
                  self.layer_id_to_input_node_ids[layer_id].append(input_id)
              if output_id not in self.layer_id_to_output_node_ids[layer_id]:
                  self.layer_id_to_output_node_ids[layer_id].append(output_id)
          else:
              layer_id = len(self.layer_list)
              self.layer_list.append(layer)
              self.layer_to_id[layer] = layer_id
              self.layer_id_to_input_node_ids[layer_id] = [input_id]
              self.layer_id_to_output_node_ids[layer_id] = [output_id]
  
          self.adj_list[input_id].append((output_id, layer_id))
          self.reverse_adj_list[output_id].append((input_id, layer_id))
docs: Add a new layer to the graph. The nodes should be created in advance.