public override object Clone() { var result = new UrgentPlan(); result.EstimatedExecutionTime = EstimatedExecutionTime; result.NodesTimings = NodesTimings == null ? null : NodesTimings.Select(nt => nt.Clone() as TaskScheduler.NodeAvailabilityTime).ToList(); result.Plan = Plan == null ? null : Plan.Select(t => t.Clone() as ActiveEstimatedTask).ToList(); result.Wrappers = Wrappers == null ? null : Wrappers.Select(w => w.Clone() as TaskScheduler.NodeAvailabilityTime).ToArray(); result.Estimations = Estimations; return(result); }