private E unlinkFirst(){
  Node<E> f=first;
  if (f == null)   return null;
  Node<E> n=f.next;
  E item=f.item;
  f.item=null;
  f.next=f;
  first=n;
  if (n == null)   last=null;
 else   n.prev=null;
  --count;
  notFull.signal();
  return item;
}

private E unlinkFirst ( ) { Node < E > f = first ; if ( f == null ) return null ; Node < E > n = f . next ; E item = f . item ; f . item = null ; f . next = f ; first = n ; if ( n == null ) last = null ; else n . prev = null ; -- count ; notFull . signal ( ) ; return item ; }
removes and returns first element , or null if empty .
