final IDeepCopyServiceDelegate deepCopyServiceDelagate,
final boolean forceLoad) throws CopierException {
this.rootSourceObject = rootSourceObject;
this.classInfoFactory = deepCopyServiceDelagate.getClassInfoFactory();
this.deepCopyServiceDelagate = deepCopyServiceDelagate;
final IProxyManagerForObjectIO proxyManager2 = deepCopyServiceDelagate
.getProxyManager2();
final Object sourceCopy;
try {
clear();
addObjectToCopyQueue(rootSourceObject);
Object objectToCopy = objectToCopyQueue.pollFirst();
while (objectToCopy != null) {
if (forceLoad) {
forceLoadImpl(objectToCopy);
}
addCopied(objectToCopy);
final ClassInfo objectToCopyClassInfo = proxyManager2
.classInfoOfObject(objectToCopy);
createCopy(objectToCopy, objectToCopyClassInfo);
objectToCopy = objectToCopyQueue.pollFirst();
}
final ClassInfo sourceObjectClassInfo = proxyManager2
.classInfoOfObject(rootSourceObject);
sourceCopy = getOrCreateObjectCopy(rootSourceObject,
sourceObjectClassInfo);
deepCopyDone();
} catch (ProxyException exception) {