@Override
public void remove( @NotNull T object, @NotNull String removeMessage ) throws NotFoundException {
try {
lock.writeLock().lock();
if ( !storedObjects.remove( object ) ) {
throw new NotFoundException( removeMessage );
}
for ( Listener<T> listener : new ArrayList<Listener<T>>( listeners ) ) {
listener.objectRemoved( object );
}
} finally {