code: private Map<ScopeService, Service> createServices(final Set<ScopeService> services) {
      Map<ScopeService, Service> actualServices = Maps.newTreeMap();
  
      for (ScopeService requiredService : services) {
        if (availableServices.containsKey(requiredService)) {
          for (ScopeService availableService : availableServices.keySet()) {
            if (availableService == requiredService) {
              actualServices.put(requiredService, requiredService.newInstance(this));
            }
          }
        }
      }
  
      return actualServices;
    }
docs: Build and construct the given services.
  
  @param services a map of required services and their minimum version
  @return list of services actually created