code: function DolphinSR() {
      var currentDateGetter = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : function () {
        return new Date();
      };
      classCallCheck(this, DolphinSR);
  
      this._state = makeEmptyState();
      this._masters = {};
      this._reviews = [];
      this._currentDateGetter = currentDateGetter;
    }
docs: TODO(April 3, 2017) Currently the cachedCardsSchedule is not invalidated when the time changes (only when a review or master is added), so there is a possibility for cards not switching from due to overdue properly. In practice, this has not been a significant issue -- easy fix for later.