code: public void restore() throws IOException
     {
        SpoolConfig spoolConfig = new SpoolConfig(fileCleaner);
  
        List<ItemState> listItemState = itemDataChangesLog.getAllStates();
        for (int i = 0; i < this.listFixupStream.size(); i++)
        {
           ItemState itemState = listItemState.get(listFixupStream.get(i).getItemSateId());
           ItemData itemData = itemState.getData();
  
           PersistedPropertyData propertyData = (PersistedPropertyData)itemData;
           ValueData vd = (propertyData.getValues().get(listFixupStream.get(i).getValueDataId()));
  
           // re-init the value
           propertyData.getValues().set(listFixupStream.get(i).getValueDataId(),
              new StreamPersistedValueData(vd.getOrderNumber(), listFile.get(i), spoolConfig));
        }
  
        if (listRandomAccessFile != null)
           for (int i = 0; i < listRandomAccessFile.size(); i++)
              listRandomAccessFile.get(i).close();
  
        for (int i = 0; i < listFile.size(); i++)
           fileCleaner.addFile(listFile.get(i));
     }
docs: Restore ChangesLog(set the InputStreams to ValueData).
  
  @throws IOException
  will be generated the IOException