public void forEachInt(final ObjIntConsumer<? super K> action)
    {
        requireNonNull(action);
        final int missingValue = this.missingValue;
        final K[] keys = this.keys;
        final int[] values = this.values;
        @DoNotSub final int length = values.length;

        for (@DoNotSub int index = 0, remaining = size; remaining > 0 && index < length; index++)
        {
            final int oldValue = values[index];
            if (missingValue != oldValue)
            {
                action.accept(keys[index], oldValue);
                --remaining;
            }
        }
    }
@Test
    void forEachIntThrowsNullPointerExceptionIfActionIsNull()
    {
        final Object2IntHashMap<String> map = new Object2IntHashMap<>(MISSING_VALUE);

        assertThrowsExactly(NullPointerException.class, () -> map.forEachInt(null));
    }