docs: private ConcurrentSubList.Link findLink(Object existingObject,
                                              Transaction transaction)
                      throws ObjectManagerException
      {
          if (Tracing.isAnyTracingEnabled() && trace.isEntryEnabled())
              trace.entry(this, cclass,
                          "findLink",
                          "ExistingObject=" + existingObject + ", Transaction=" + transaction);
  
          ConcurrentSubList.Link foundLink = null; // The Link pointing to the target
                                                   // Object.
          long linkSequenceNumber = Long.MAX_VALUE;
  
          // Capture the ObjectManagers unlock sequence number. Anything unlocked after 
          // this will not count. The next line delimits the point before which additions to 
          // list must committed and unlocked.
          long unlockPoint = getTransactionUnlockSequence();
  
          // Look in each subList in turn for the existingObject.
          for (int i = 0; i < subLists.length; i++) {
              synchronized (subLists[i]) {
                  ConcurrentSubList.Link nextLink = null;
                  // Start at the top of the list.
                  nextLink = (ConcurrentSubList.Link) subLists[i].nextLink(null,
                                                                           transaction,
                                                                           unlockPoint);
                  // Move forward through the list until we find an element
                  // that is visible to this transaction, and has the correct data.
                  searchForward: while (nextLink != null) {
                      if (nextLink.data == existingObject)
                          break searchForward;
                      nextLink = (ConcurrentSubList.Link) subLists[i].nextLink(nextLink,
                                                                               transaction,
                                                                               unlockPoint);
                  } // While (nextLink != null).
  
                  if (nextLink != null) { // Did we find anything?
                      if (nextLink.sequenceNumber < linkSequenceNumber) {
                          linkSequenceNumber = nextLink.sequenceNumber;
                          foundLink = nextLink;
                      } // if (nextLink.sequenceNumber > linkToRemoveSequenceNumber).
                  } // if (nextLink != null).
  
              } // synchronized (subLists).
          } // for subLists.
  
          if (Tracing.isAnyTracingEnabled() && trace.isEntryEnabled())
              trace.exit(this, cclass,
                         "findLink",
                         "return=" + foundLink);
          return foundLink;
      }