protected Algorithm(Algorithm original, Cloner cloner) : base(original, cloner) { if (ExecutionState == ExecutionState.Started) throw new InvalidOperationException(string.Format("Clone not allowed in execution state \"{0}\".", ExecutionState)); executionState = original.executionState; executionTime = original.executionTime; problem = cloner.Clone(original.problem); storeAlgorithmInEachRun = original.storeAlgorithmInEachRun; runsCounter = original.runsCounter; runs = cloner.Clone(original.runs); Initialize(); }