code: def _fork_to(self, model: GraphModelSpace) -> Graph:
      new_graph = Graph(
          model, self.id, self.name, _internal=True
      )._register()
  
      for node in self.hidden_nodes:
          if isinstance(node, AbstractLogicalNode):
              node._fork_to(new_graph)
          else:
              Node(
                  new_graph,
                  node.id,
                  node.name,
                  node.operation,
                  _internal=True,
              )._register()
  
      id_to_new_node = {
          node.__repr__(): node for node in new_graph.nodes
      }
  
      for edge in self.edges:
          new_head = id_to_new_node[edge.head.__repr__()]
          new_tail = id_to_new_node[edge.tail.__repr__()]
          Edge(
              (new_head, edge.head_slot),
              (new_tail, edge.tail_slot),
              _internal=True,
          )._register()
  
      return new_graph
  
imports: import copy
  from typing import Dict, Tuple, Any, Type, cast
  from nni.common.device import Device, CPUDevice
  from nni.mutable.utils import uid
  from nni.nas.space import Edge, Graph, GraphModelSpace, Node
  from nni.nas.space.graph_op import Cell, Operation, _IOPseudoOperation
label_desc: Use image node_id 3 for calling the LogicalGraph obj's underlying member method code with example usage: obj._fork_to(model) and returns: new_graph