code: private static Map<String, Integer> getMonthNames(Locale locale) {
  		Map<String, Integer> r = MONTH_NAMES_CACHE.get(locale);
  		if (r == null) {
  			DateFormatSymbols symbols = DateFormatSymbols.getInstance(locale);
  			r = new HashMap<>(24);
  			
  			//insert long month names
  			String[] months = symbols.getMonths();
  			for (int i = 0; i < months.length; ++i) {
  				String m = months[i];
  				if (!m.isEmpty()) {
  					r.put(m.toUpperCase(), i + 1);
  				}
  			}
  			
  			//insert short month names
  			String[] shortMonths = symbols.getShortMonths();
  			for (int i = 0; i < shortMonths.length; ++i) {
  				String m = shortMonths[i];
  				if (!m.isEmpty()) {
  					r.put(m.toUpperCase(), i + 1);
  				}
  			}
  			MONTH_NAMES_CACHE.put(locale, r);
  		}
  		
  		return r;
  	}
docs: Retrieves and caches a list of month names for a given locale
  @param locale the locale
  @return the list of month names (short and long). All names are
  converted to upper case