anchor.diff:       return comp.future;
     }
     
  +  //return true if done
     bool take_while_now(f){
       if(_queue.isEmpty){
         return false;
  
positive.code:       if(!_iter.moveNext()){
          _queue.removeFirst();
          if(_queue.isEmpty){
            return false;
          }
          else {
            _iter = _queue.first.iterator;
  
negative.code:       if(pred)
           _return.add(cur);
        else
          return true;
      }
    }
    
    void take_while_helper(f,Completer comp){
      bool r =  take_while_now(f);
      if(r){
        comp.complete(_return);
        _return = new List();  
        _ondata = null;
  