anchor.diff:      _listenerCounter += 1;
     }
   
  -  @override
  +  /// Calls [didStopListening] when an only remaining listener is unregistered,
  +  /// thus making the list empty.
  +  ///
  +  /// See also:
  +  ///
  +  ///  * [didRegisterListener], which causes the listener list to become non-empty.
     void didUnregisterListener() {
       assert(_listenerCounter >= 1);
       _listenerCounter -= 1;
  
positive.code:   bool get isListening => _listenerCounter > 0;
  }
  
  /// A mixin that replaces the didRegisterListener/didUnregisterListener contract
  /// with a dispose contract.
  abstract class AnimationEagerListenerMixin extends _ListenerMixin {
    // This class is intended to be used as a mixin, and should not be
    // extended directly.
    factory AnimationEagerListenerMixin._() => null;
  
    @override
    void didRegisterListener() { }
  
    @override
    void didUnregisterListener() { }
  
    /// Release the resources used by this object. The object is no longer usable
  
negative.code: 
  /// A mixin that implements the [addListener]/[removeListener] protocol and notifies
  /// all the registered listeners when [notifyListeners] is called.
  ///
  /// This mixin requires that the mixing class provide methods [didRegisterListener]
  /// and [didUnregisterListener]. Implementations of these methods can be obtained
  /// by mixing in another mixin from this library, such as [AnimationLazyListenerMixin].
  abstract class AnimationLocalListenersMixin {
    // This class is intended to be used as a mixin, and should not be
    // extended directly.
    factory AnimationLocalListenersMixin._() => null;
  
    final ObserverList<VoidCallback> _listeners = ObserverList<VoidCallback>();
  
    /// Called immediately before a listener is added via [addListener].
    ///
    /// At the time this method is called the registered listener is not yet
    /// notified by [notifyListeners].
    void didRegisterListener();
  
    /// Called immediately after a listener is removed via [removeListener].
    ///
    /// At the time this method is called the removed listener is no longer
    /// notified by [notifyListeners].
    void didUnregisterListener();
  
    /// Calls the listener every time the value of the animation changes.
    ///
  