public T Clone <T>() where T : CharacterBase { var characterSprite = CharacterSprite.Clone(); var clone = (T)MemberwiseClone(); clone.CharacterSprite = characterSprite; return(clone); }