anchor.diff:    void didUpdateWidget(T oldWidget) {
       super.didUpdateWidget(oldWidget);
       if (widget.curve != oldWidget.curve) {
  -      (_animation as CurvedAnimation).dispose();
  +      _animation.dispose();
         _animation = _createCurve();
       }
       _controller.duration = widget.duration;
  
positive.code: 
    @override
    void dispose() {
      (_animation as CurvedAnimation).dispose();
      _controller.dispose();
      super.dispose();
    }
  
negative.code: 
    /// The animation driving this widget's implicit animations.
    Animation<double> get animation => _animation;
    late CurvedAnimation _animation = _createCurve();
  
    @override
    void initState() {
  