original = parent.getIdentityMapAccessorInstance().getWriteLockManager().appendLock(objectChangeSet.getPrimaryKeys(), original, descriptor, this, parent);
objectBuilder.mergeIntoObject(original, true, clone, this, false, !descriptor.getCopyPolicy().buildsNewInstance());
} else {
objectBuilder.mergeChangesIntoObject(original, objectChangeSet, clone, this, !descriptor.getCopyPolicy().buildsNewInstance());
// PERF: If PersistenceEntity is caching the primary key this must be cleared as the primary key may have changed in new objects.
objectBuilder.clearPrimaryKey(original);
}
updateCacheKeyProperties(unitOfWork, original, clone, objectChangeSet, descriptor);
} else if (objectChangeSet == null) {
// PERF: If we have no change set if it is existing, then no merging is required.
// If it is new, then merge the object (normally a new object would have a change set, so this is an odd case.