anchor.diff:    final double end;
     final Curve curve;
     Stream<double> _stream;
  +  bool _done = false;
   
     AnimationGenerator(this.duration, {
       this.begin: 0.0,
  
positive.code:   }):super(onDone: onDone) {
      double startTime = 0.0;
      double targetTime = 0.0;
      bool done = false;
      _stream = super.onTick.map((timeStamp) {
        if (startTime == 0.0) {
          startTime = timeStamp;
          targetTime = startTime + duration;
        }
  
        // Clamp the final frame to target time so we terminate the series with
        // 1.0 exactly.
        if ((timeStamp - targetTime).abs() <= _kFrameTime) {
          return 1.0;
        }
  
        return (timeStamp - startTime) / duration;
      })
      .takeWhile((t) => t <= 1.0)
      .map((t) =>  begin + (end - begin) * curve.transform(t));
    }
  }
  
  
negative.code:   }
  }
  
  class AnimationGenerator extends FrameGenerator {
  
    Stream<double> get onTick => _stream;
  