docs: public boolean add(Token token,
                         Transaction transaction)
                      throws ObjectManagerException
      {
          if (Tracing.isAnyTracingEnabled() && trace.isEntryEnabled())
              trace.entry(this, cclass,
                          "add",
                          new Object[] { token, transaction });
  
          List.Entry newEntry = null;
          // Lock the tailSequenceNumber until the new link is in the list.
          // This prevents the possibility that after we had incremented the tail sequence number
          // but before we had added it to the subList some thread resets the headSequenceNumber 
          // and skipped passed the link we just added.
          synchronized (transaction.internalTransaction) {
              tailSequenceNumberLock.lock();
              try {
                  if (!tailSequenceNumberSet)
                      resetTailSequenceNumber();
                  // Establish the sequenceNumber of this Object in the overall list.
                  long usableTailSequenceNumber = ++tailSequenceNumber;
  
                  // Figure out which subList the Object should be added to.
                  ConcurrentSubList list = getSublist(usableTailSequenceNumber);
                  // Add the link near the tail of the list according to its assigned
                  // sequence number.
                  newEntry = list.addEntry(token,
                                           transaction,
                                           usableTailSequenceNumber,
                                           this);
              } finally {
                  if (tailSequenceNumberLock.isHeldByCurrentThread())
                      tailSequenceNumberLock.unlock();
              } // try (tailSequenceNumberLock).
          } // synchronized (transaction.internalTransaction).
  
          boolean modified = (newEntry != null);
          if (Tracing.isAnyTracingEnabled() && trace.isEntryEnabled())
              trace.exit(this, cclass,
                         "add",
                         new Object[] { new Boolean(modified) });
          return modified;
      }