public ObjectsCache cloneCache() {
    ObjectsCache newCache = new ObjectsCache();
    newCache.substitution = this.substitution;
    newCache.loader = this.loader;
    newCache.checkSerializableClass = this.checkSerializableClass;
    newCache.safeToReuse = this.safeToReuse;
    newCache.resolver = this.resolver;
    newCache.stringBuffer = null;
    newCache.classDescriptorStrategy = this.classDescriptorStrategy;
    newCache.objectDescriptorStrategy = this.objectDescriptorStrategy;

    return newCache;
  }
 public Object readData(
     ClassLoader loader,
     StreamingClass streaming,
     ClassMetaData metaData,
     int referenceId,
     ObjectsCache cache,
     ObjectInput input,
     ObjectSubstitutionInterface substitution)
     throws IOException {
   Object obj = metaData.newInstance();
   cache.putObjectInCacheRead(referenceId, obj);
   return defaultRead(input, obj, streaming, metaData, substitution);
 }