@Override public void getBindings(Map<String, Binding<?>> bindings) {
for (Class<?> c = moduleClass; c != Object.class; c = c.getSuperclass()) {
for (Method method : c.getDeclaredMethods()) {
Provides provides = method.getAnnotation(Provides.class);
if (provides != null) {
String key = Keys.get(method.getGenericReturnType(), method.getAnnotations(), method);
switch (provides.type()) {
case UNIQUE:
handleBindings(bindings, method, key);
break;
case SET:
handleSetBindings(bindings, method, key);
break;
default:
throw new AssertionError("Unknown @Provides type " + provides.type());
}
}
}
}
}