code: protected Link previousLink(Link start)
                      throws ObjectManagerException
      {
  
          if (Tracing.isAnyTracingEnabled() && trace.isEntryEnabled())
              trace.entry(this, cclass,
                          "previousLink",
                          new Object[] { start });
  
          Token previousToken = null;
  
          if (start == null) { // Start at the head of the list?
              previousToken = head;
          } else { // if in body but deleted.
              previousToken = start.next;
          } // if (start == null).
  
          //  The link to return.
          Link previousLink = null;
          if (previousToken != null)
              previousLink = (Link) (previousToken.getManagedObject());
  
          if (Tracing.isAnyTracingEnabled() && trace.isEntryEnabled())
              trace.exit(this, cclass,
                         "previousLink",
                         new Object[] { previousLink });
          return previousLink;
      }
docs: Find the previous link before the start link,
  even if it is part of a transaction.
  A dirty scan.
  
  Caller must be synchronized on LinkedList.
  
  @param start the link where the search for the previous link is to start,
  null implies the tail of the list.
  @return Link in the list before the start position.
  Returns null if there is none, or the start is deleted.
  @throws ObjectManagerException