public ButtonPressCounter(IClock clock, TimeSpan debounceInterval, TimeSpan buttonPressGroupFinalization)
 {
     if (buttonPressGroupFinalization.TotalMilliseconds <= 2*debounceInterval.TotalMilliseconds)
         throw new ArgumentOutOfRangeException("debounceInterval", "Group finalization interval must be GT 2*debounce interval");
     _debounceInterval = debounceInterval;
     _buttonPressGroupFinalization = buttonPressGroupFinalization;
     _lastPress = DateTime.MinValue;
     _notifyHandle = clock.Register(buttonPressGroupFinalization, (nc) => Tick());
 }