public override IDeepCopyable CopyTo(IDeepCopyable other) { var dest = other as SearchParameter; if (dest != null) { base.CopyTo(dest); if (UrlElement != null) { dest.UrlElement = (Hl7.Fhir.Model.FhirUri)UrlElement.DeepCopy(); } if (NameElement != null) { dest.NameElement = (Hl7.Fhir.Model.FhirString)NameElement.DeepCopy(); } if (StatusElement != null) { dest.StatusElement = (Code <Hl7.Fhir.Model.ConformanceResourceStatus>)StatusElement.DeepCopy(); } if (ExperimentalElement != null) { dest.ExperimentalElement = (Hl7.Fhir.Model.FhirBoolean)ExperimentalElement.DeepCopy(); } if (PublisherElement != null) { dest.PublisherElement = (Hl7.Fhir.Model.FhirString)PublisherElement.DeepCopy(); } if (Contact != null) { dest.Contact = new List <Hl7.Fhir.Model.SearchParameter.ContactComponent>(Contact.DeepCopy()); } if (DateElement != null) { dest.DateElement = (Hl7.Fhir.Model.FhirDateTime)DateElement.DeepCopy(); } if (RequirementsElement != null) { dest.RequirementsElement = (Hl7.Fhir.Model.FhirString)RequirementsElement.DeepCopy(); } if (CodeElement != null) { dest.CodeElement = (Hl7.Fhir.Model.Code)CodeElement.DeepCopy(); } if (BaseElement != null) { dest.BaseElement = (Code <Hl7.Fhir.Model.ResourceType>)BaseElement.DeepCopy(); } if (TypeElement != null) { dest.TypeElement = (Code <Hl7.Fhir.Model.SearchParamType>)TypeElement.DeepCopy(); } if (DescriptionElement != null) { dest.DescriptionElement = (Hl7.Fhir.Model.FhirString)DescriptionElement.DeepCopy(); } if (XpathElement != null) { dest.XpathElement = (Hl7.Fhir.Model.FhirString)XpathElement.DeepCopy(); } if (XpathUsageElement != null) { dest.XpathUsageElement = (Code <Hl7.Fhir.Model.SearchParameter.XPathUsageType>)XpathUsageElement.DeepCopy(); } if (TargetElement != null) { dest.TargetElement = new List <Code <Hl7.Fhir.Model.ResourceType> >(TargetElement.DeepCopy()); } return(dest); } else { throw new ArgumentException("Can only copy to an object of the same type", "other"); } }