/// <summary> /// Moves to new parent node <c>moveInto</c> /// </summary> /// <param name="graphToMove">The graph to move.</param> /// <param name="moveInto">The move into (future parent graph)</param> /// <param name="flags">The operation flags</param> /// <returns>Resulting graph, relevant in case of merging</returns> public static IGraphNode MoveTo(this IGraphNode graphToMove, IGraphNode moveInto, graphOperationFlag flags = graphOperationFlag.mergeOnSameName) { if (moveInto.getChildNames().Contains(graphToMove.name)) { if (flags.HasFlag(graphOperationFlag.mergeOnSameName)) { graphToMove.MergeWith(moveInto[graphToMove.name], flags); } else if (flags.HasFlag(graphOperationFlag.overwriteOnSameName)) { moveInto.RemoveByKey(graphToMove.name); moveInto.Add(graphToMove); } } else { moveInto.Add(graphToMove); } return(graphToMove); }