code: 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) {
                  // The first element in the list.
                  head = Token.restore(dataInputStream,
                                       objectManagerState);
                  //      The final element in the list.
                  tail = 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:1620:1.40");
  
              if (Tracing.isAnyTracingEnabled() && trace.isEntryEnabled())
                  trace.exit(this,
                             cclass,
                             methodName,
                             new Object[] { exception });
              throw new PermanentIOException(this,
                                             exception);
          } // catch (java.io.IOException exception).
  
          // We cannot set the available head during recovery because the links may get deleted before
          // recovery is complete, instead force a scan when we use availableHead for the first time.
          availableHead = null;
          availableSize = size; // All links are initially available.
  
          if (Tracing.isAnyTracingEnabled() && trace.isEntryEnabled())
              trace.exit(this,
                         cclass,
                         methodName);
      }
docs: /*
  (non-Javadoc)
  
  @see SimplifiedSerialization.readObject(java.io.DataInputStream,ObjectManagerState)