anchor.diff:          yield 2;
         }
   
  -      // TODO(jmesserly): use tear off. For now this is a workaround for:
  -      // https://github.com/dart-lang/dev_compiler/issues/269
  -      var res = f().forEach((x) => list.add(x));
  +      var res = f().forEach(list.add);
         list.add(0);
         return res.whenComplete(() {
           expect(list, equals([0, 1, 2]));
  
positive.code: 
        var completer = new Completer();
        var list = [];
        // TODO(jmesserly): use tear off. For now this is a workaround for:
        // https://github.com/dart-lang/dev_compiler/issues/269
        f().listen((x) => list.add(x),
            onError: (v) => list.add("$v"), onDone: completer.complete);
        return completer.future.whenComplete(() {
          expect(list, equals([1, "2"]));
  
negative.code:       }).whenComplete(() {
          return expectList(f(2), [2]);
        });
      });
  
      test("dead-code return", () {
        f() async* {
  