public Object DeepClone(Object original, IObjectCopierState objectCopierState) { Object clone = CreateCloneInstance(original, objectCopierState); objectCopierState.AddClone(original, clone); objectCopierState.DeepCloneProperties(original, clone); return(clone); }