anchor.diff:  }
   
   /// Enforces a *quiet* wait period between events.
  -class Debouncer<T> implements StreamTransformer {
  +class Debouncer<T> implements StreamTransformer<T, T> {
   
     final Duration _wait;
     final Duration _maxWait;
  
positive.code: import 'dart:async';
  
  /// Enforces a wait period between events.
  class Throttler<T> implements StreamTransformer {
  
    Debouncer<T> _debounce;
  
    /// 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 
    /// wait period.
    /// 
    /// 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, 
         bool trailing: true}) {
      if(!leading && !trailing) {
        throw new ArgumentError('Either `leading` or `trailing` must be true.');
  
negative.code:             controller = new StreamController<T>(
                onListen: () {
                  subscription = input.listen((data) {
  
                    addData = _trailing;
                    lastData = data;
                    bool setTimer = false;
  