private static ObjectGraph makeGraph(ObjectGraph base, Plugin plugin, Object... modules) {
Map<String, Class<?>> entryPoints = new LinkedHashMap<String, Class<?>>();
Map<Class<?>, StaticInjection> staticInjections
= new LinkedHashMap<Class<?>, StaticInjection>();
Map<String, Binding<?>> baseBindings = new UniqueMap<String, Binding<?>>();
Map<String, Binding<?>> overrideBindings = new UniqueMap<String, Binding<?>>();
for (ModuleAdapter<?> moduleAdapter : getAllModuleAdapters(plugin, modules).values()) {
for (String key : moduleAdapter.entryPoints) {
entryPoints.put(key, moduleAdapter.getModule().getClass());
}
for (Class<?> c : moduleAdapter.staticInjections) {
staticInjections.put(c, null);
}
Map<String, Binding<?>> addTo = moduleAdapter.overrides ? overrideBindings : baseBindings;
moduleAdapter.getBindings(addTo);
}
Linker linker = new Linker((base != null) ? base.linker : null, plugin,
new ThrowingErrorHandler());
linker.installBindings(baseBindings);
linker.installBindings(overrideBindings);
return new ObjectGraph(base, linker, plugin, staticInjections, entryPoints);
}