public async Task DiscardAsync(IPlan plan) { #endif var planAsNode = (DefaultNode)plan; planAsNode.Discarded = true; foreach (var plan1 in planAsNode.PlannedCreatedNodes) { var toCreate = (DefaultNode)plan1; var parent = toCreate.ParentPlan; if (parent != null) { _hierarchy.RemoveChildNode(parent, toCreate); } else { _hierarchy.RemoveRootNode(toCreate); } toCreate.Parent = null; toCreate.Discarded = true; } var nodeParent = planAsNode.ParentPlan; if (nodeParent != null) { _hierarchy.RemoveChildNode(nodeParent, planAsNode); } else { _hierarchy.RemoveRootNode(planAsNode); } if (plan.DiscardOnResolve.Count > 0) { foreach (var child in plan.DiscardOnResolve.ToList()) { _hierarchy.RemoveNode((INode)child); } } }