anchor.diff:    }
   
     Animation<double> _initAnimation(Curve curve, bool inverted) {
  -    Animation<double> result = _controller!.drive(CurveTween(curve: curve));
  +    Animation<double> result = _controller.drive(CurveTween(curve: curve));
       if (inverted)
         result = result.drive(Tween<double>(begin: 1.0, end: 0.0));
       return result;
  
positive.code: 
    @override
    void dispose() {
      _controller!.dispose();
      super.dispose();
    }
  
  
negative.code:     if (widget.crossFadeState != oldWidget.crossFadeState) {
        switch (widget.crossFadeState) {
          case CrossFadeState.showFirst:
            _controller.reverse();
            break;
          case CrossFadeState.showSecond:
            _controller.forward();
            break;
        }
      }
    }
  
    /// Whether we're in the middle of cross-fading this frame.
    bool get _isTransitioning => _controller.status == AnimationStatus.forward || _controller.status == AnimationStatus.reverse;
  
    @override
    Widget build(BuildContext context) {
      const Key kFirstChildKey = ValueKey<CrossFadeState>(CrossFadeState.showFirst);
      const Key kSecondChildKey = ValueKey<CrossFadeState>(CrossFadeState.showSecond);
      final bool transitioningForwards = _controller.status == AnimationStatus.completed ||
                                         _controller.status == AnimationStatus.forward;
      final Key topKey;
      Widget topChild;
      final Animation<double> topAnimation;
  