class IndexedKeyTreeMap extends KeyTreeMap<T> {

    @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;
    }

    public  IndexedKeyTreeMap(final KeyDefinition... keyIDs);

}