code: public void defaultReadObject() throws IOException, ClassNotFoundException,
              NotActiveException {
          if (currentObject != null || !mustResolve) {
              readFieldValues(currentObject, currentClass);
          } else {
              throw new NotActiveException();
          }
      }
docs: Default method to read objects from this stream. Serializable fields
  defined in the object's class and superclasses are read from the source
  stream.
  
  @throws ClassNotFoundException
  if the object's class cannot be found.
  @throws IOException
  if an I/O error occurs while reading the object data.
  @throws NotActiveException
  if this method is not called from {@code readObject()}.
  @see ObjectOutputStream#defaultWriteObject