docs: @Override
      public void writeObject(DataOutputStream dataOutputStream) throws ObjectManagerException, IOException
      {
          super.writeObject(dataOutputStream);
  
          // Write out our serialVersionUID
          dataOutputStream.writeLong(serialVersionUID);
  
          dataOutputStream.writeLong(_uniqueID);
          dataOutputStream.writeLong(_streamID);
          dataOutputStream.writeLong(_lockID);
          dataOutputStream.writeLong(_referredID);
          dataOutputStream.writeLong(_sequence);
          dataOutputStream.writeLong(_expiryTime);
          dataOutputStream.writeInt(_redeliveredCount);
          dataOutputStream.writeInt(_storageStrategy);
          dataOutputStream.writeInt(_priority);
          dataOutputStream.writeInt(_persistentSize);
          dataOutputStream.writeInt(_maxDepth);
  
          dataOutputStream.writeBoolean(_canExpireSilently);
          dataOutputStream.writeBoolean(_containsExpirables);
  
          // If the string variables aren't null then
          // write the flag and then write them to the
          // stream.
          if (_type != null)
          {
              dataOutputStream.writeBoolean(true);
              dataOutputStream.writeUTF(_type);
          }
          else
          {
              dataOutputStream.writeBoolean(false);
          }
          if (_className != null)
          {
              dataOutputStream.writeBoolean(true);
              dataOutputStream.writeUTF(_className);
          }
          else
          {
              dataOutputStream.writeBoolean(false);
          }
  
          // We need to write out the length of the tran ID
          // before we write the bytes so that we can read
          // it back in successfully
          if (_transactionId != null)
          {
              dataOutputStream.writeInt(_transactionId.length);
              dataOutputStream.write(_transactionId, 0, _transactionId.length);
          }
          else
          {
              dataOutputStream.writeInt(-1);
          }
  
          // Call the Tokens to write themselves out but
          // only if they exist. If the don't then we need
          // to write a boolean to the stream so that we
          // don't try and read back in non-existent tokens.
          if (_streamListToken != null)
          {
              dataOutputStream.writeBoolean(true);
              _streamListToken.writeObject(dataOutputStream);
          }
          else
          {
              dataOutputStream.writeBoolean(false);
          }
  
          if (_itemListToken != null)
          {
              dataOutputStream.writeBoolean(true);
              _itemListToken.writeObject(dataOutputStream);
          }
          else
          {
              dataOutputStream.writeBoolean(false);
          }
  
          if (_rawDataToken != null)
          {
              dataOutputStream.writeBoolean(true);
              _rawDataToken.writeObject(dataOutputStream);
          }
          else
          {
              dataOutputStream.writeBoolean(false);
          }
  
          if (_streamListEntryToken != null)
          {
              dataOutputStream.writeBoolean(true);
              _streamListEntryToken.writeObject(dataOutputStream);
          }
          else
          {
              dataOutputStream.writeBoolean(false);
          }
  
          if (_itemListEntryToken != null)
          {
              dataOutputStream.writeBoolean(true);
              _itemListEntryToken.writeObject(dataOutputStream);
          }
          else
          {
              dataOutputStream.writeBoolean(false);
          }
  
          // write the _deliveryDelayTime
          dataOutputStream.writeLong(_deliveryDelayTime);
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
              SibTr.debug(this, tc, "bytes written==" + dataOutputStream.size());
      }