code: public PutField putFields() throws IOException {
          if (currentObject == null) {
              throw new NotActiveException();
          }
          if (currentPutField == null) {
              computePutField();
          }
          return currentPutField;
      }
docs: Gets this stream's {@code PutField} object. This object provides access
  to the persistent fields that are eventually written to the output
  stream. It is used to transfer the values from the fields of the object
  that is currently being written to the persistent fields.
  
  @return the PutField object from which persistent fields can be accessed
  by name.
  @throws IOException
  if an I/O error occurs.
  @throws NotActiveException
  if this method is not called from {@code writeObject()}.
  @see ObjectInputStream#defaultReadObject