public ISendToItem DeepClone() { var clone = new PathValidatingSendToItem(_name, _player.DeepClone()); var pathChangedInvocations = PathChanged.GetInvocationList(); foreach (var invocation in pathChangedInvocations) { clone.PathChanged += (EventHandler <EventArgs>)invocation; } if (ParametersChanged != null) { var parametersChangedInvocations = ParametersChanged.GetInvocationList(); foreach (var invocation in parametersChangedInvocations) { clone.ParametersChanged += (EventHandler <EventArgs>)invocation; } } return(clone); }