docs: public void readObject(java.io.DataInputStream dataInputStream,
                             ObjectManagerState objectManagerState)
                      throws ObjectManagerException {
          final String methodName = "readObject";
          if (Tracing.isAnyTracingEnabled() && trace.isEntryEnabled())
              trace.entry(this, cclass, methodName, new Object[] { dataInputStream,
                                                                  objectManagerState });
  
          try {
              byte version = dataInputStream.readByte();
              if (Tracing.isAnyTracingEnabled() && trace.isDebugEnabled())
                  trace.debug(this, cclass, methodName, new Object[] { new Byte(version) });
              super.readObject(dataInputStream, objectManagerState);
  
              if (dataInputStream.readByte() == 1) {
                  // Use ManagedObjectInpuStream so as to get the correct classloader.
                  java.io.ObjectInputStream objectInputStream = new ManagedObjectInputStream(dataInputStream, objectManagerState);
                  comparator = (java.util.Comparator) objectInputStream.readObject();
                  objectInputStream.close();
              } // if (dataInputStream.readByte() == 1).
              if (dataInputStream.readByte() == 1) {
                  root = Token.restore(dataInputStream
                                       , objectManagerState
                                  );
              } // if (dataInputStream.readByte() == 1).
              size = dataInputStream.readLong();
  
          } catch (java.io.IOException exception) {
              // No FFDC Code Needed.
              ObjectManager.ffdc.processException(this, cclass, methodName, exception, "1:2412:1.44");
  
              if (Tracing.isAnyTracingEnabled() && trace.isEntryEnabled())
                  trace.exit(this, cclass, methodName, exception);
              throw new PermanentIOException(this, exception);
  
          } catch (java.lang.ClassNotFoundException exception) {
              // No FFDC Code Needed.
              ObjectManager.ffdc.processException(this, cclass, methodName, exception, "1:2420:1.44");
  
              if (Tracing.isAnyTracingEnabled() && trace.isEntryEnabled())
                  trace.exit(this, cclass, methodName, new Object[] { "ClassNotFoundException:2423",
                                                                     exception });
              throw new com.ibm.ws.objectManager.ClassNotFoundException(this, exception);
          } // try.
  
          availableSize = size; // Start as last commited.
  
          if (Tracing.isAnyTracingEnabled() && trace.isEntryEnabled())
              trace.exit(this, cclass, methodName);
      }