### Question:
CollectionUtils { public static <V> void forEach(Double2ObjectMap<V> map, DoubleObjectBiConsumer<V> action) { map.double2ObjectEntrySet().forEach(e -> action.accept(e.getDoubleKey(), e.getValue())); }  static List<T> asList(T obj); static IntSet mutableSingleton(int i); static Optional<Entry<V>> ceilingEntry(Double2ObjectSortedMap<V> sortedMap,
		double from); static Optional<V> ceilingValue(Double2ObjectSortedMap<V> sortedMap, double from); static Collection<Tuple2<T, T>> crossProduct(List<T> list); static OptionalDouble first(DoubleSortedSet set); static void forEach(Double2ObjectMap<V> map, DoubleObjectBiConsumer<V> action); static void forEach(Int2ObjectMap<V> map, IntObjectBiConsumer<V> action); static Optional<T> head(List<T> clusters); static Optional<IntCollection> intersection(Collection<IntCollection> clusters); static IntSet merge(IntSet left, IntCollection right); static IntCollection merge(IntCollection left, IntCollection right); static Collection<T> merge(Collection<T> left, Collection<T> right); static Predicate<Collection<T>> sizeBelow(int maxSize); static List<T> sort(Collection<T> collection, Comparator<T> comparator); static Collection<T> tail(List<T> clusters); static Collection<String> toString(Iterable<T> objects);  }### Answer:
@Test public void forEachDouble2ObjectMap() { Double2ObjectMap<String> map = new Double2ObjectOpenHashMap<>(); Double2ObjectMap<String> target = new Double2ObjectOpenHashMap<>(); map.put(1.0, "foo"); map.put(2.0, "bar"); forEach(map, target::put); assertThat(target).hasSize(2); assertThat(target).containsEntry(1.0, "foo"); assertThat(target).containsEntry(2.0, "bar"); }
@Test public void forEachInt2ObjectMap() { Int2ObjectMap<String> map = new Int2ObjectOpenHashMap<>(); Int2ObjectMap<String> target = new Int2ObjectOpenHashMap<>(); map.put(1, "foo"); map.put(2, "bar"); forEach(map, target::put); assertThat(target).hasSize(2); assertThat(target).containsEntry(1, "foo"); assertThat(target).containsEntry(2, "bar"); }