public override IDeepCopyable CopyTo(IDeepCopyable other)
            {
                var dest = other as TargetComponent;

                if (dest == null)
                {
                    throw new ArgumentException("Can only copy to an object of the same type", "other");
                }

                base.CopyTo(dest);
                if (Target != null)
                {
                    dest.Target = (Hl7.Fhir.Model.Identifier)Target.DeepCopy();
                }
                if (Type != null)
                {
                    dest.Type = (Hl7.Fhir.Model.CodeableConcept)Type.DeepCopy();
                }
                if (Interaction != null)
                {
                    dest.Interaction = (Hl7.Fhir.Model.CodeableConcept)Interaction.DeepCopy();
                }
                if (Organism != null)
                {
                    dest.Organism = (Hl7.Fhir.Model.CodeableConcept)Organism.DeepCopy();
                }
                if (OrganismType != null)
                {
                    dest.OrganismType = (Hl7.Fhir.Model.CodeableConcept)OrganismType.DeepCopy();
                }
                if (Amount != null)
                {
                    dest.Amount = (Hl7.Fhir.Model.DataType)Amount.DeepCopy();
                }
                if (AmountType != null)
                {
                    dest.AmountType = (Hl7.Fhir.Model.CodeableConcept)AmountType.DeepCopy();
                }
                if (Source != null)
                {
                    dest.Source = new List <Hl7.Fhir.Model.ResourceReference>(Source.DeepCopy());
                }
                return(dest);
            }