public boolean register(Object provider, Map<Class<?>, Integer> contracts) { if (provider.getClass() == Class.class) { if (isRegistered((Class<?>)provider)) { LOG.warning("Provider class " + ((Class<?>)provider).getName() + " has already been registered"); return false; } provider = createProvider((Class<?>)provider); } if (isRegistered(provider)) { LOG.warning("Provider " + provider.getClass().getName() + " has already been registered"); return false; } if (!contractsValid(provider, contracts)) { return false; } Map<Class<?>, Integer> metadata = providers.get(provider); if (metadata == null) { metadata = new HashMap<>(); providers.put(provider, metadata); } for (Entry<Class<?>, Integer> entry : contracts.entrySet()) { if (entry.getKey().isAssignableFrom(provider.getClass())) { metadata.put(entry.getKey(), entry.getValue()); } } return true; }