code: public Token getFirst(Transaction transaction)
                      throws ObjectManagerException
      {
          if (Tracing.isAnyTracingEnabled() && trace.isEntryEnabled())
              trace.entry(this, cclass,
                          "getFirst",
                          new Object[] { transaction });
  
          Link first;
          Token tokenToReturn;
          synchronized (this) {
              first = nextLink(null,
                               transaction,
                               getTransactionUnlockSequence());
  
              if (first == null) { // Is there a first element?
                  if (Tracing.isAnyTracingEnabled() && trace.isEntryEnabled())
                      trace.exit(this,
                                 cclass,
                                 "getFirst",
                                 new Object[] { first });
                  throw new java.util.NoSuchElementException();
              } // if (first == null).
  
              // Assign the tokenToReturn while we have the list locked so that the ObjectManager 
              // cannot backout this transaction and remove the link under anoy=ther transaction 
              // causing this thread to see a null Token as a return value.
              tokenToReturn = first.data;
          } // synchronized (this).
  
          if (Tracing.isAnyTracingEnabled() && trace.isEntryEnabled())
              trace.exit(this, cclass,
                         "getFirst",
                         new Object[] { tokenToReturn });
          return tokenToReturn;
      }
docs: /*
  (non-Javadoc)
  
  @see com.ibm.ws.objectManager.List#getFirst(com.ibm.ws.objectManager.Transaction)