for (RegistrationDestructionListener listener : listeners.get())
{
RegistrationDestructionListener.Vote vote = listener.destructionScheduledFor(registration);
if (canRemove.compareAndSet(false, vote.result))
{
throw new RegistrationException("Could not remove Registration '" + registration.getRegistrationHandle()
+ "' because listener '" + listener + "' vetoed removal. Cause: " + vote.reason);
}
}
}