@Override
    public Iterable<K> keys() {
        return Collections.unmodifiableSet(state.keySet());
    }
@Test
    void testKeys() throws Exception {
        assertThat(mapState.contains(1L)).isTrue();
        long value = mapState.get(1L);
        assertThat(value).isEqualTo(5L);

        assertThat(mapState.contains(2L)).isTrue();
        value = mapState.get(2L);
        assertThat(value).isEqualTo(5L);
        assertThatThrownBy(
                        () -> {
                            Iterator<Long> iterator = mapState.keys().iterator();
                            while (iterator.hasNext()) {
                                iterator.remove();
                            }
                        })
                .isInstanceOf(UnsupportedOperationException.class);
    }