}
if (!isAbstract() && clone == null){
try {
//instanciate the PersistentObjectItf clone
clone = newSpeedoPOInstance(sp.getClass());
PersistentObjectItf spClone = (PersistentObjectItf)clone;
spClone.speedoSetEncodedPName(pm.getEncodedPName(sp));
spClone.setCeAge(0);
spClone.speedoIsActive(false);
//instanciate the clone of the fields
StateItf fieldsClone = sp.speedoCreateState();
spClone.speedoSetReferenceState(fieldsClone);
fieldsClone.setSpeedoPO(spClone);
//put the association between the po and its clone into the map
if(map != null)
map.put(sp, clone);
synchronized(fgHints){