anchor.diff:      setState(() {
         _activeCardIndex = cardIndex;
         _activeCardDragUnderway = true;
  -      _activeCardAnchorX = null;
  +      _activeCardDragX = 0.0;
         _activeCardAnimation.progress = 0.0;
       });
     }
  
positive.code:       color: color
      );
  
      if (index == _activeCardIndex && _activeCardOffset > 0.0) {
        Matrix4 transform = new Matrix4.identity();
        transform.translate(_activeCardOffset, 0.0);
        card = new Transform(child: card, transform: transform);
        if (_activeCardAnimation != null)
          card = new Opacity(child: card, opacity: _activeCardOpacity);
      }
  
      return new Listener(
        child: card,
        onPointerDown: (event) { _handlePointerDown(event, index); }
      );
    }
  
  
negative.code:   }
  
    int _activeCardIndex = -1;
    AnimationPerformance _activeCardAnimation;
    double _activeCardWidth;
    double _activeCardDragX = 0.0;
    bool _activeCardDragUnderway = false;
    Set<int> _dismissedCardIndices = new Set<int>();
  
    double get _activeCardOpacity => 1.0 - _activeCardAnimation.progress;
  
    double get _activeCardOffset {
      return _activeCardAnimation.progress * _activeCardDragX.sign * _activeCardWidth * _kDismissCardThreshold;
    }
  
    void _handleAnimationProgressChanged(_) {
  