code: public static WeekFields of(DayOfWeek firstDayOfWeek, int minimalDaysInFirstWeek) {
          String key = firstDayOfWeek.toString() + minimalDaysInFirstWeek;
          WeekFields rules = CACHE.get(key);
          if (rules == null) {
              rules = new WeekFields(firstDayOfWeek, minimalDaysInFirstWeek);
              CACHE.putIfAbsent(key, rules);
              rules = CACHE.get(key);
          }
          return rules;
      }
docs: Obtains an instance of {@code WeekFields} from the first day-of-week and minimal days.
  <p>
  The first day-of-week defines the ISO {@code DayOfWeek} that is day 1 of the week.
  The minimal number of days in the first week defines how many days must be present
  in a month or year, starting from the first day-of-week, before the week is counted
  as the first week. A value of 1 will count the first day of the month or year as part
  of the first week, whereas a value of 7 will require the whole seven days to be in
  the new month or year.
  <p>
  WeekFields instances are singletons; for each unique combination
  of {@code firstDayOfWeek} and {@code minimalDaysInFirstWeek} the
  the same instance will be returned.
  
  @param firstDayOfWeek  the first day of the week, not null
  @param minimalDaysInFirstWeek  the minimal number of days in the first week, from 1 to 7
  @return the week-definition, not null
  @throws IllegalArgumentException if the minimal days value is less than one
  or greater than 7