anchor.diff:    /// Stop ticking the current simulation
     void stop() {
       _simulation = null;
  -    _startTime = null;
       _ticker.stop();
     }
   
     /// Whether this object is currently ticking a simulation
     bool get isAnimating => _ticker.isTicking;
   
  -  void _tick(Duration timeStamp) {
  -    if (_startTime == null)
  -      _startTime = timeStamp;
  +  void _tick(Duration elapsed) {
   
  -    double timeInMicroseconds = (timeStamp - _startTime).inMicroseconds.toDouble();
  -    double timeInSeconds =  timeInMicroseconds / Duration.MICROSECONDS_PER_SECOND;
  -    _value = _simulation.x(timeInSeconds);
  -    final bool isLastTick = _simulation.isDone(timeInSeconds);
  +    double elapsedInSeconds =  elapsed.inMicroseconds.toDouble() / Duration.MICROSECONDS_PER_SECOND;
  +    _value = _simulation.x(elapsedInSeconds);
   
  -    if (isLastTick)
  +    if (_simulation.isDone(elapsedInSeconds))
         stop();
   
       _onTick(_value);
  
positive.code:     assert(simulation != null);
      assert(!_ticker.isTicking);
      _simulation = simulation;
      _startTime = null;
      _value = simulation.x(0.0);
      return _ticker.start();
    }
  
negative.code:   void stop() {
      if (!isTicking)
        return;
  
      _startTime = null;
  
      if (_animationId != null) {
        scheduler.cancelAnimationFrame(_animationId);
  