void add(ModelBuilder<?, ?> mb) { final ImmutableSet<Class<?>> deps = mb.getDependencies(); final Dependency dep = new Dependency(this, mb, deps); modelTypeMap.put(mb.getAssociatedType(), dep); for (final Class<?> clz : mb.getProvidingTypes()) { checkArgument(!providerMap.containsKey(clz), "A provider for %s already exists: %s.", clz, providerMap.get(clz)); providerMap.put(clz, dep); } dependencyMap.putAll(dep, deps); verify(!builders.contains(dep)); builders.add(dep); }