private E dequeue(){
  final Object[] items=this.items;
  @SuppressWarnings("unchecked") E x=(E)items[takeIndex];
  items[takeIndex]=null;
  if (++takeIndex == items.length)   takeIndex=0;
  count--;
  if (itrs != null)   itrs.elementDequeued();
  notFull.signal();
  return x;
}

private E dequeue ( ) { final Object [ ] items = this . items ; @ SuppressWarnings ( "unchecked" ) E x = ( E ) items [ takeIndex ] ; items [ takeIndex ] = null ; if ( ++ takeIndex == items . length ) takeIndex = 0 ; count -- ; if ( itrs != null ) itrs . elementDequeued ( ) ; notFull . signal ( ) ; return x ; }
extracts element at current take position , advances , and signals . call only when holding lock .
