internal void SelfRemove() { DataFlowForwardRelated.RemoveAllTwoWay(); DataFlowBackRelated.RemoveAllTwoWay(); foreach (var forwardRoute in ProgramFlowForwardRoutes) { forwardRoute.ProgramFlowBackRoutes.AddTwoWay(ProgramFlowBackRoutes); } //RemoveFromBranches(); ProgramFlowBackRoutes.RemoveAllTwoWay(); ProgramFlowForwardRoutes.RemoveAllTwoWay(); }
internal virtual void SelfRemoveAndStitch() { foreach (var forwardInst in DataFlowForwardRelated.ToArray()) { int index = forwardInst.ArgIndex; forwardInst.MirrorArg.ContainingList.AddTwoWay(DataFlowBackRelated.Select(x => x.Argument).ToList(), index); forwardInst.ContainingList.RemoveTwoWay(forwardInst); } foreach (var forwardPath in ProgramFlowForwardRoutes.ToArray()) { forwardPath.ProgramFlowBackRoutes.AddTwoWay(ProgramFlowBackRoutes.ToList()); ProgramFlowForwardRoutes.RemoveTwoWay(forwardPath); } RemoveFromBranches(); DataFlowBackRelated.RemoveAllTwoWay(); foreach (CoupledList related in new CoupledList[] { ProgramFlowBackRoutes, SingleUnitBackRelated, SingleUnitForwardRelated }) { related.RemoveAllTwoWay(); } }