*/
@Override
public void buildClone(Object original, CacheKey cacheKey, Object clone, Integer refreshCascade, AbstractSession cloningSession) {
Object attributeValue = null;
if (!this.isCacheable && (cacheKey != null && !cacheKey.isIsolated())){
ReadObjectQuery query = new ReadObjectQuery(descriptor.getJavaClass());
query.setSession(cloningSession);
attributeValue = valueFromRow(cacheKey.getProtectedForeignKeys(), null, query, cacheKey, cloningSession, true, null);
}else{
attributeValue = getAttributeValueFromObject(original);
}
attributeValue = this.indirectionPolicy.cloneAttribute(attributeValue, original, cacheKey, clone, refreshCascade, cloningSession, false); // building clone from an original not a row.