anchor.diff:    /// value to use as the current value the next time that the forEachTween()
     /// method is called.
     void forEachTween(TweenVisitor<dynamic> visitor);
  +}
  +
  +/// A base class for widgets with implicit animations that need to rebuild their
  +/// widget tree as the animation runs.
  +///
  +/// This class calls [build] each frame that the animation tickets. For a
  +/// variant that does not rebuild each frame, consider subclassing
  +/// [ImplicitlyAnimatedWidgetState] directly.
  +///
  +/// Subclasses must implement the [forEachTween] method to allow
  +/// [AnimatedWidgetBaseState] to iterate through the subclasses' widget's fields
  +/// and animate them.
  +abstract class AnimatedWidgetBaseState<T extends ImplicitlyAnimatedWidget> extends ImplicitlyAnimatedWidgetState<T> {
  +  @override
  +  void initState() {
  +    super.initState();
  +    controller.addListener(_handleAnimationChanged);
  +  }
  +
  +  void _handleAnimationChanged() {
  +    setState(() { /* The animation ticked. Rebuild with new animation value */ });
  +  }
   }
   
   /// A container that gradually changes its values over a period of time.
  
positive.code:     super.dispose();
    }
  
    void _handleAnimationChanged() {
      setState(() { });
    }
  
    bool _shouldAnimateTween(Tween<dynamic> tween, dynamic targetValue) {
      return targetValue != (tween.end ?? tween.begin);
    }
  
negative.code:   final Duration duration;
  
    @override
    ImplicitlyAnimatedWidgetState<ImplicitlyAnimatedWidget> createState();
  
    @override
    void debugFillProperties(DiagnosticPropertiesBuilder properties) {
  