docs: public boolean goTo(MonthAdapter.CalendarDay day, boolean animate, boolean setSelected, boolean forceScroll) {
  
          // Set the selected day
          if (setSelected) {
              mSelectedDay.set(day);
          }
  
          mTempDay.set(day);
          int minMonth = mController.getStartDate().get(Calendar.MONTH);
          final int position = (day.year - mController.getMinYear())
                  * MonthAdapter.MONTHS_IN_YEAR + day.month - minMonth;
  
          View child;
          int i = 0;
          int top = 0;
          // Find a child that's completely in the view
          do {
              child = getChildAt(i++);
              if (child == null) {
                  break;
              }
              top = child.getTop();
              if (Log.isLoggable(TAG, Log.DEBUG)) {
                  Log.d(TAG, "child at " + (i - 1) + " has top " + top);
              }
          } while (top < 0);
  
          // Compute the first and last position visible
          int selectedPosition = child != null ? getChildAdapterPosition(child) : 0;
  
          if (setSelected) {
              mAdapter.setSelectedDay(mSelectedDay);
          }
  
          if (Log.isLoggable(TAG, Log.DEBUG)) {
              Log.d(TAG, "GoTo position " + position);
          }
          // Check if the selected day is now outside of our visible range
          // and if so scroll to the month that contains it
          if (position != selectedPosition || forceScroll) {
              setMonthDisplayed(mTempDay);
              mPreviousScrollState = RecyclerView.SCROLL_STATE_DRAGGING;
              if (animate) {
                  smoothScrollToPosition(position);
                  if (pageListener != null) pageListener.onPageChanged(position);
                  return true;
              } else {
                  postSetSelection(position);
              }
          } else if (setSelected) {
              setMonthDisplayed(mSelectedDay);
          }
          return false;
      }