anchor.diff:  
   import 'animation.dart';
   
  -abstract class _ListenerMixin {
  -  // This class is intended to be used as a mixin, and should not be
  -  // extended directly.
  -  factory _ListenerMixin._() => null;
  -
  -  void didRegisterListener();
  -  void didUnregisterListener();
  -}
  -
   /// A mixin that helps listen to another object only when this object has registered listeners.
  -abstract class AnimationLazyListenerMixin extends _ListenerMixin {
  +///
  +/// This mixin provides implementations of [didRegisterListener] and [didUnregisterListener],
  +/// and therefore can be used in conjunction with mixins that require these methods,
  +/// [AnimationLocalListenersMixin] and [AnimationLocalStatusListenersMixin].
  +abstract class AnimationLazyListenerMixin {
     // This class is intended to be used as a mixin, and should not be
     // extended directly.
     factory AnimationLazyListenerMixin._() => null;
   
     int _listenerCounter = 0;
   
  -  @override
  +  /// Calls [didStartListening] every time a registration of a listener causes
  +  /// an empty list of listeners to become non-empty.
  +  ///
  +  /// See also:
  +  ///
  +  ///  * [didUnregisterListener], which may cause the listener list to
  +  ///    become empty again, and in turn cause this method to call
  +  ///    [didStartListening] again.
     void didRegisterListener() {
       assert(_listenerCounter >= 0);
       if (_listenerCounter == 0)
  
positive.code: /// A mixin that implements the addStatusListener/removeStatusListener protocol
  /// and notifies all the registered listeners when notifyStatusListeners is
  /// called.
  abstract class AnimationLocalStatusListenersMixin extends _ListenerMixin {
    // This class is intended to be used as a mixin, and should not be
    // extended directly.
    factory AnimationLocalStatusListenersMixin._() => null;
  
    final ObserverList<AnimationStatusListener> _statusListeners = ObserverList<AnimationStatusListener>();
  
    /// Calls listener every time the status of the animation changes.
    ///
  
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.
    ///
  