anchor.diff:    Duration duration;
   
     SimulationStepper _timeline;
  +  AnimationDirection get direction => _direction;
     AnimationDirection _direction;
  -
  -  /// The direction used to select the current curve
  -  ///
  -  /// Curve direction is only reset when we hit the beginning or the end of the
  -  /// timeline to avoid discontinuities in the value of any variables this
  -  /// performance is used to animate.
  +  AnimationDirection get curveDirection => _curveDirection;
     AnimationDirection _curveDirection;
   
     /// If non-null, animate with this timing instead of a linear timing
  
positive.code:   /// Whether this animation is stopped at the end
    bool get isCompleted => status == PerformanceStatus.completed;
  }
  
  /// A timeline that can be reversed and used to update [Animatable]s.
  ///
  
negative.code:   /// Note: Setting this value stops the current animation.
    double get progress => _timeline.value.clamp(0.0, 1.0);
    void set progress(double t) {
      stop();
      _timeline.value = t.clamp(0.0, 1.0);
      _checkStatusChanged();
  