docs: public final void writeObject(java.io.DataOutputStream dataOutputStream)
                      throws ObjectManagerException
      {
          if (Tracing.isAnyTracingEnabled() && trace.isEntryEnabled())
              trace.entry(this,
                          cclass,
                          "writeObject",
                          new Object[] { dataOutputStream });
  
          try {
              dataOutputStream.writeByte(SimpleSerialVersion);
              super.writeObject(dataOutputStream);
  
              if (comparator == null) {
                  dataOutputStream.writeByte(0);
              } else {
                  dataOutputStream.writeByte(1);
                  java.io.ObjectOutputStream objectOutputStream = new java.io.ObjectOutputStream(dataOutputStream);
                  objectOutputStream.writeObject(comparator);
                  objectOutputStream.close();
              } // if (head == null).
              if (root == null) {
                  dataOutputStream.writeByte(0);
              } else {
                  dataOutputStream.writeByte(1);
                  root.writeObject(dataOutputStream);
              } // if (root == null).
              dataOutputStream.writeLong(size);
  
          } catch (java.io.IOException exception) {
              // No FFDC Code Needed.
              ObjectManager.ffdc.processException(this, cclass, "writeObject", exception, "1:2341:1.44");
  
              if (Tracing.isAnyTracingEnabled() && trace.isEntryEnabled())
                  trace.exit(this,
                             cclass,
                             "writeObject",
                             exception);
  
              throw new PermanentIOException(this,
                                             exception);
          } // catch (java.io.IOException exception).
  
          // Did we exceed the size limits?
          // Check comparator did not cause us to exceed maximum serialized length.
          if (dataOutputStream.size() > maximumSerializedSize())
          {
              if (Tracing.isAnyTracingEnabled() && trace.isDebugEnabled())
                  trace.debug(this,
                              cclass,
                              "writeObject",
                              new Object[] { new Long(maximumSerializedSize()),
                                            new Integer(dataOutputStream.size()) });
              if (Tracing.isAnyTracingEnabled() && trace.isEntryEnabled())
                  trace.exit(this, cclass
                             , "writeObject"
                             , "via SimplifiedSerializationSizeException"
                                  );
  
              throw new SimplifiedSerializationSizeException(this,
                                                             maximumSerializedSize(),
                                                             dataOutputStream.size());
          } // if (dataOutputStream.size() > maximumSerializedSize())    
  
          if (Tracing.isAnyTracingEnabled() && trace.isEntryEnabled())
              trace.exit(this,
                         cclass,
                         "writeObject");
      }