code: public final boolean unlink()
      {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.entry(this, tc, "unlink", _positionString());
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) SibTr.debug(this, tc, "cursor count = " + _cursorCount);
  
          boolean unlinked = false;
          LinkedList parent = _parent;
          if (null != parent)
          {
              synchronized(parent)
              {
                  if (LinkState.LINKED == _state)
                  {
                      _state = LinkState.LOGICALLY_UNLINKED;
                      _tryUnlink();
                      unlinked = true;
                  }
                  else
                  {
                      if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled()) SibTr.debug(this, tc, "unlink while " + _state);
                  }
              }
          }
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled()) SibTr.exit(this, tc, "unlink", new Object[] { Boolean.valueOf(unlinked), _positionString()});
          return unlinked;
      }
docs: Request that the receiver be unlinked from the list. If the receiver is linked it will be
  marked as logically unlinked. Note that this will perform a logical unlink, which may result
  in a physical unlink