docs: protected ObjectManagerByteArrayOutputStream getSerializedBytes()
                      throws ObjectManagerException
      {
          final String methodName = "getSerializedBytes";
          if (Tracing.isAnyTracingEnabled() && trace.isEntryEnabled())
              trace.entry(this,
                          cclass,
                          methodName);
  
          // The serialized image of the ManagedObject that will become the commited version.
          // The objectStore and log keep their own reference to the bytes so any change must replace 
          // this buffer with another one and not update it in place.
          // These bytes are the ones written to the log, before the transaction outcome is known.
  
          ObjectManagerByteArrayOutputStream byteArrayOutputStream;
          long estimatedLength;
  
          try {
              if (this instanceof SimplifiedSerialization) {
                  estimatedLength = estimatedLength();
                  byteArrayOutputStream = owningToken.objectStore.getObjectManagerState()
                                  .getbyteArrayOutputStreamFromPool((int) estimatedLength);
                  java.io.DataOutputStream dataOutputStream = new java.io.DataOutputStream(byteArrayOutputStream);
                  int signature = getSignature();
                  dataOutputStream.writeInt(signature);
                  if (signature == SimplifiedSerialization.signature_Generic) {
                      dataOutputStream.writeUTF(getClass().getName());
                  } // if (signature == SimplifiedSerialization.signature_Generic).
  
                  ((SimplifiedSerialization) this).writeObject(dataOutputStream);
  
              } else {
                  estimatedLength = 1024;
                  byteArrayOutputStream = owningToken.objectStore.getObjectManagerState()
                                  .getbyteArrayOutputStreamFromPool((int) estimatedLength);
                  byteArrayOutputStream.writeInt(SimplifiedSerialization.signature_DefaultSerialization);
  
                  java.io.ObjectOutputStream objectOutputStream = new java.io.ObjectOutputStream(byteArrayOutputStream);
                  objectOutputStream.writeObject(this);
                  objectOutputStream.close();
              }
          } catch (java.io.IOException exception) {
              // No FFDC Code Needed.
              ObjectManager.ffdc.processException(this, cclass, methodName, exception, "1:619:1.34");
  
              if (Tracing.isAnyTracingEnabled() && trace.isEntryEnabled())
                  trace.exit(this,
                             cclass,
                             methodName,
                             exception);
              throw new PermanentIOException(this, exception);
          } // catch.
  
          reserveSpaceInStore(byteArrayOutputStream);
  
          if (Tracing.isAnyTracingEnabled() && trace.isEntryEnabled())
              trace.exit(this,
                         cclass,
                         methodName,
                         new Object[] { byteArrayOutputStream,
                                       new Long(updateSequence),
                                       new Integer(byteArrayOutputStream.size()),
                                       new Long(estimatedLength) });
          return byteArrayOutputStream;
      }