code: public Optional<CompletableFuture<List<ResourceModel>>> generateResource (ResourceModel resource) throws IllegalIDException {
          if(resourceIDs.get(resource.getResourceID()) == null) return Optional.empty();
          return resourceIDs.get(resource.getResourceID()).stream()
                  //return true if resource has no provider, if not check provider
                  .filter(resourceS -> !resource.hasProvider() || resourceS.isOwner(resource.getProvider()))
                  .findFirst()
                  .map(resourceB -> submit(() -> resourceB.provideResource(Collections.singletonList(resource), Optional.empty())));
      }
docs: generates a resources
  <p>
  It will use the first matching resource! So if you really want to be sure, set the provider
  Identification
  </p>
  @param resource the resource to request
  @return an optional of an CompletableFuture
  @throws IllegalIDException not yet implemented