@AllowConcurrentEvents
 @Subscribe
 public void handle(final CapabilityEvent.AfterRemove event) {
   if (isSatisfied() && type.equals(event.getReference().context().type())) {
     checkAllCapabilities();
   }
 }
 public CapabilityOfTypeExistsCondition(
     final EventBus eventBus,
     final CapabilityDescriptorRegistry descriptorRegistry,
     final CapabilityRegistry capabilityRegistry,
     final CapabilityType type) {
   super(eventBus);
   this.capabilityRegistry = checkNotNull(capabilityRegistry);
   this.type = checkNotNull(type);
   final CapabilityDescriptor descriptor = checkNotNull(descriptorRegistry).get(type);
   typeName = descriptor == null ? type.toString() : descriptor.name();
   bindLock = new ReentrantReadWriteLock();
 }
 boolean isSatisfiedBy(final CapabilityReference reference) {
   return type.equals(reference.context().type());
 }