code: public final AbstractItemLink getFirst(boolean remove)
      {
          AbstractItemLink _ail = null;
  
          while ((_ail == null) && (_firstLinkBehind != null))
          {
              _ail = _firstLinkBehind.getAIL();
              if ((_ail == null) || remove)
              {
                  _remove(_firstLinkBehind);
              }
          }
  
          return _ail;
      }
docs: Gets the first AIL in the list of AILs behind the current position of the cursor.
  This may modify the list since the list is a list of weak references so the original
  head may no longer refer to an object on the heap, and the head may change
  (or even the list might completely empty) during the call
  
  @param whether to remove the first AIL in the list
  
  @return the first AIL in the list of AILs behind the cursor, or null if there is none