anchor.diff:  
   main() {
     check([], null, 0);
  -  check([-1,-2,-3,1,2,3-1,-2,-3], (element)=>element<0, 3);
  -  check([1,2,3], (element)=>true, 3);
  -  check([1,2,3,1], (element)=>element==1, 1);
  -  check([1,2,3], (element)=>false, 0);
  +  check([-1, -2, -3, 1, 2, 3, -1, -2, -3], (element) => element < 0, 3);
  +  check([1, 2, 3], (element) => true, 3);
  +  check([1, 2, 3, 1], (element) => element == 1, 1);
  +  check([1, 2, 3], (element) => false, 0);
   }
   
  
positive.code: /** index - first position in the stream where test() returns false
   */
  void check(List data, bool test(var element), int index) {
    Stream s=new Stream.fromIterable(data);
    Stream t=s.takeWhile(test);
    asyncStart();
    int seen = -1;
    t.listen((value){
        seen++;
        Expect.isTrue(test(value), "test($value)");
        Expect.isTrue(seen<index, "seen=$seen, index=$index");
        Expect.equals(data[seen], value);
      },
      onDone: (){
        Expect.equals(index, seen+1);
        if (index<data.length) {
          Expect.isFalse(test(data[index]));
        }
        asyncEnd();
  
negative.code:  * returns true for the event data.
   * The stream is done when either this stream is done, or when this stream first
   * provides a value that test doesn't accept.
   * @description Checks that only first elements that passed the test are
   * returned.
   * @author kaigorodov
   */
  
  