public void verifyDependencies() {
    synchronized (_serviceDependencies) {
      for (ServiceDependency serviceDependency : _serviceDependencies) {
        if (!serviceDependency.isFulfilled()) {
          return;
        }
      }

      _serviceDependencies.notify();

      for (ServiceDependencyListener serviceDependencyListener : _serviceDependencyListeners) {

        serviceDependencyListener.dependenciesFulfilled();
      }

      destroy();
    }
  }
  public void destroy() {
    for (ServiceDependencyListener serviceDependencyListener : _serviceDependencyListeners) {

      serviceDependencyListener.destroy();
    }

    _serviceDependencyListeners.clear();

    synchronized (_serviceDependencies) {
      for (ServiceDependency serviceDependency : _serviceDependencies) {
        serviceDependency.close();
      }
    }

    _serviceDependencies.clear();

    Registry registry = RegistryUtil.getRegistry();

    registry.unregisterServiceDependencyManager(this);
  }