code: public int mapTo(final int dayOfWeek, final WeekDay targetWeekDayDefinition) {
          if (firstDayZero && targetWeekDayDefinition.isFirstDayZero()) {
              return bothSameStartOfRange(0, 6, this, targetWeekDayDefinition).apply(dayOfWeek);
          }
          if (!firstDayZero && !targetWeekDayDefinition.isFirstDayZero()) {
              return bothSameStartOfRange(1, 7, this, targetWeekDayDefinition).apply(dayOfWeek);
          }
          //start range is different for each case. We need to normalize ranges
          if (targetWeekDayDefinition.isFirstDayZero()) {
              //my range is 1-7. I normalize ranges, get the "zero" mapping and turn result into original scale
              return mapTo(dayOfWeek, new WeekDay(targetWeekDayDefinition.getMondayDoWValue() + 1, false)) - 1;
          } else {
              //my range is 0-6. I normalize ranges, get the "one" mapping and turn result into original scale
              return mapTo(dayOfWeek, new WeekDay(targetWeekDayDefinition.getMondayDoWValue() - 1, true)) + 1;
          }
      }
docs: Maps given WeekDay to representation hold by this instance.
  
  @param targetWeekDayDefinition - referred weekDay
  @param dayOfWeek               - day of week to be mapped.
  Value corresponds to this instance mapping.
  @return - int result