anchor.diff:  
   /// An animation that tracks the maximum of two other animations.
   ///
  -/// The [value] of this animation is the maximum of the values of 
  +/// The [value] of this animation is the maximum of the values of
   /// [first] and [next].
   class AnimationMax<T extends num> extends CompoundAnimation<T> {
  +  /// Creates an [AnimationMax].
  +  ///
  +  /// Both arguments must be non-null. Either can be an [AnimationMax] itself
  +  /// to combine multiple animations.
     AnimationMax(Animation<T> first, Animation<T> next): super(first: first, next: next);
   
     @override
  
positive.code: ///
  /// For example, to create an animation that is the sum of two others, subclass
  /// this class and define `T get value = first.value + second.value;`
  /// 
  /// By default, the [status] of a [CompoundAnimation] is the status of the 
  /// [next] animation if [next] is moving, and the status of the [first] 
  /// animation otherwise.
  abstract class CompoundAnimation<T> extends Animation<T>
    with AnimationLazyListenerMixin, AnimationLocalListenersMixin, AnimationLocalStatusListenersMixin {
  
negative.code: 
  /// An animation that tracks the minimum of two other animations.
  ///
  /// The [value] of this animation is the maximum of the values of
  /// [first] and [next].
  class AnimationMin<T extends num> extends CompoundAnimation<T> {
    /// Creates an [AnimationMin].
    ///
    /// Both arguments must be non-null. Either can be an [AnimationMin] itself
    /// to combine multiple animations.
    AnimationMin(Animation<T> first, Animation<T> next): super(first: first, next: next);
  
    @override
  