let overLongOr (connection,longOr_node,port) graph =
    let rec add_longOrs or_inputs target graph = (*lisa iga or tipu sisendi kohta longOr tipp selle sisendiga ja valjundiga Or'i*)
      match or_inputs with
         (c,t,p)::tail ->let new_id=NewName.get ()
                  in let new_node = {longOr_node with id=new_id; inputs = PortMap.empty}
                  in let longOr_added = DG.addnode new_node graph
                  in let edge_to_or_added = DG.addedge ({sourceid=new_id; nameforudg=NewName.get (); lblmap = mkcnstlblmap  longOr_node.inside},target,PortUnstrB) longOr_added
                  in let edge_added = DG.addedge ({c with nameforudg=NewName.get (); lblmap = rlmmcompose c.lblmap connection.lblmap}, new_id, port) edge_to_or_added
                  in add_longOrs tail target edge_added
        | _ -> graph
    in let or_node = DG.findnode connection.sourceid graph
    in let or_in_edges = DG.nodefoldedges (fun y a -> y::a) or_node []
    and longOr_out_edges = DG.nodefoldoutedges graph (fun y a -> y::a) longOr_node []
    and graph_ref = ref graph
    and new_or_id = NewName.get ()
    in
      graph_ref := DG.remedge connection.nameforudg !graph_ref; 
      graph_ref := DG.remnode connection.sourceid !graph_ref;
      graph_ref := DG.remnode (longOr_node).id !graph_ref; 
      graph_ref := DG.addnode or_node !graph_ref; 
      graph_ref := DG.addnode {or_node with inputs = PortMap.empty; id=new_or_id; inside = longOr_node.inside} !graph_ref;
      graph_ref := new_source_edge longOr_out_edges new_or_id !graph_ref; 
      graph_ref := add_longOrs or_in_edges new_or_id !graph_ref;
      Left !graph_ref