anchor.diff:  import 'dart:async';
   
   /// Enforces a wait period between events.
  -class Throttler<T> implements StreamTransformer {
  +class Throttler<T> implements StreamTransformer<T, T> {
   
     Debouncer<T> _debounce;
   
  -  /// Requires a [wait] period to elapse after any previous event before 
  +  /// Requires a [wait] period to elapse after any previous event before
     /// emitting the next event.
  -  /// 
  -  /// If [leading] is true, then events which do not occur in a wait period 
  -  /// are emitted immediately, otherwise they will be emitted at the end of the 
  +  ///
  +  /// If [leading] is true, then events which do not occur in a wait period
  +  /// are emitted immediately, otherwise they will be emitted at the end of the
     /// wait period.
  -  /// 
  -  /// If [trailing] is true, then the last event to occur in a wait period will 
  +  ///
  +  /// If [trailing] is true, then the last event to occur in a wait period will
     /// be output at the end of the wait period.
  -  /// 
  +  ///
     /// If both [leading] and [trailing] are false, throws an [ArgumentError].
     Throttler(
  -      Duration wait, 
  -      {bool leading: true, 
  +      Duration wait,
  +      {bool leading: true,
          bool trailing: true}) {
       if(!leading && !trailing) {
         throw new ArgumentError('Either `leading` or `trailing` must be true.');
  
positive.code:       throw new ArgumentError('`maxWait` cannot be less than `wait`.');
      }
    }
      
    StreamTransformer<T, T> get _transformer =>
        new StreamTransformer<T, T>(
            (Stream<T> input, bool cancelOnError) {
  
negative.code:             controller = new StreamController<T>(
                onListen: () {
                  subscription = input.listen((data) {
  
                    addData = _trailing;
                    lastData = data;
                    bool setTimer = false;
  