@Override
    protected T remove(final UUIDKey uuidKey) {
        final T remove = super.remove(uuidKey);

        if (remove != null) {
            doForAll(remove.getIndex(),
                     new Callback<T>() {
                         @Override
                         public void callback(final T t) {
                             t.setIndex(t.getIndex() - 1);
                         }
                     });
        }

        return remove;
    }
@Test
    void testRemove() throws Exception {

        // Removing one by one to check the index stays on track.

        toni.uuidKey.retract();

        assertThat(map.get(IndexKey.INDEX_ID).get(new Value(0))).containsExactly(eder);
        assertThat(map.get(IndexKey.INDEX_ID).get(new Value(1))).containsExactly(michael);

        eder.uuidKey.retract();

        Person next = map.get(IndexKey.INDEX_ID).get(new Value(0)).iterator().next();
        assertThat(next).isEqualTo(michael);
    }