code: def disconnect_node(node, target_obj_result, graph, debug):
      
  
      # backup kind and type of branch
      branch_kind = graph.adj[node][target_obj_result]['branch'].kind
      branch_type = graph.adj[node][target_obj_result]['branch'].type
      branch_ring = graph.adj[node][target_obj_result]['branch'].ring
  
      graph.remove_edge(node, target_obj_result)
  
      if isinstance(target_obj_result, MVCableDistributorDing0):
  
          neighbor_nodes = list(graph.neighbors(target_obj_result))
  
          if len(neighbor_nodes) == 2:
              node.grid.remove_cable_distributor(target_obj_result)
  
              branch_length = calc_geo_dist_vincenty(neighbor_nodes[0], neighbor_nodes[1])
              graph.add_edge(neighbor_nodes[0], neighbor_nodes[1], branch=BranchDing0(length=branch_length,
                                                                                      kind=branch_kind,
                                                                                      type=branch_type,
                                                                                      ring=branch_ring))
  
      if debug:
          logger.debug('disconnect edge {0}-{1}'.format(node, target_obj_result))
docs: Disconnects `node` from `target_obj`
  
      Args
      ----
      node: LVLoadAreaCentreDing0, i.e.
          Origin node - Ding0 graph object (e.g. LVLoadAreaCentreDing0)
      target_obj_result: LVLoadAreaCentreDing0, i.e.
          Origin node - Ding0 graph object (e.g. LVLoadAreaCentreDing0)
      graph: :networkx:`NetworkX Graph Obj< >`
          NetworkX graph object with nodes and newly created branches
      debug: bool
          If True, information is printed during process