public override IDeepCopyable CopyTo(IDeepCopyable other) { var dest = other as Subscription; if (dest == null) { throw new ArgumentException("Can only copy to an object of the same type", "other"); } base.CopyTo(dest); if (Identifier != null) { dest.Identifier = new List <Hl7.Fhir.Model.Identifier>(Identifier.DeepCopy()); } if (NameElement != null) { dest.NameElement = (Hl7.Fhir.Model.FhirString)NameElement.DeepCopy(); } if (StatusElement != null) { dest.StatusElement = (Code <Hl7.Fhir.Model.SubscriptionState>)StatusElement.DeepCopy(); } if (Topic != null) { dest.Topic = (Hl7.Fhir.Model.ResourceReference)Topic.DeepCopy(); } if (Contact != null) { dest.Contact = new List <Hl7.Fhir.Model.ContactPoint>(Contact.DeepCopy()); } if (EndElement != null) { dest.EndElement = (Hl7.Fhir.Model.Instant)EndElement.DeepCopy(); } if (ReasonElement != null) { dest.ReasonElement = (Hl7.Fhir.Model.FhirString)ReasonElement.DeepCopy(); } if (FilterBy != null) { dest.FilterBy = new List <Hl7.Fhir.Model.Subscription.FilterByComponent>(FilterBy.DeepCopy()); } if (Error != null) { dest.Error = new List <Hl7.Fhir.Model.CodeableConcept>(Error.DeepCopy()); } if (ChannelType != null) { dest.ChannelType = (Hl7.Fhir.Model.Coding)ChannelType.DeepCopy(); } if (EndpointElement != null) { dest.EndpointElement = (Hl7.Fhir.Model.FhirUrl)EndpointElement.DeepCopy(); } if (HeaderElement != null) { dest.HeaderElement = new List <Hl7.Fhir.Model.FhirString>(HeaderElement.DeepCopy()); } if (HeartbeatPeriodElement != null) { dest.HeartbeatPeriodElement = (Hl7.Fhir.Model.UnsignedInt)HeartbeatPeriodElement.DeepCopy(); } if (TimeoutElement != null) { dest.TimeoutElement = (Hl7.Fhir.Model.UnsignedInt)TimeoutElement.DeepCopy(); } if (ContentTypeElement != null) { dest.ContentTypeElement = (Hl7.Fhir.Model.Code)ContentTypeElement.DeepCopy(); } if (ContentElement != null) { dest.ContentElement = (Code <Hl7.Fhir.Model.Subscription.SubscriptionPayloadContent>)ContentElement.DeepCopy(); } return(dest); }