docs: public static <K, V> void forEach(Map<K, V> map, Procedure3<? super K, ? super V, ? super Integer> procedure) {
  		if (procedure == null)
  			throw new NullPointerException("procedure");
  		int i = 0;
  		for (Map.Entry<K, V> entry : map.entrySet()) {
  			procedure.apply(entry.getKey(), entry.getValue(), i);
  			if (i != Integer.MAX_VALUE)
  				i++;
  		}
  	}