public void setRangeDates(CalendarDay min, CalendarDay max) {
    this.minDate = min;
    this.maxDate = max;
    for (MonthView monthView : currentViews) {
      monthView.setMinimumDate(min);
      monthView.setMaximumDate(max);
    }

    if (min == null) {
      Calendar worker = CalendarUtils.getInstance();
      worker.add(Calendar.YEAR, -200);
      min = CalendarDay.from(worker);
    }

    if (max == null) {
      Calendar worker = CalendarUtils.getInstance();
      worker.add(Calendar.YEAR, 200);
      max = CalendarDay.from(worker);
    }

    rangeIndex = new DateRangeIndex(min, max);

    CalendarDay prevDate = selectedDate;
    notifyDataSetChanged();
    setSelectedDate(prevDate);
    if (prevDate != null) {
      if (!prevDate.equals(selectedDate)) {
        callbacks.onDateChanged(selectedDate);
      }
    }
  }