public boolean hasNext(){
  if (enable) {
    if (done)     return false;
    if (next != null)     return true;
    try {
      next=queue.take();
    }
 catch (    InterruptedException e) {
      done=true;
      next=null;
      return false;
    }
    if (next == sentinel) {
      done=true;
      next=null;
      return false;
    }
 else     return true;
  }
 else   return iterator.hasNext();
}

public boolean hasNext ( ) { if ( enable ) { if ( done ) return false ; if ( next != null ) return true ; try { next = queue . take ( ) ; } catch ( InterruptedException e ) { done = true ; next = null ; return false ; } if ( next == sentinel ) { done = true ; next = null ; return false ; } else return true ; } else return iterator . hasNext ( ) ; }
has next ? prefetches the next item
