public Object invokeMethod(String name, Object... args) {
if (extensionsStorage.isConfigureExtensionMethod(name, args)) {
return extensionsStorage.configureExtension(name, args);
}
for (Object object : plugins.values()) {
BeanDynamicObject dynamicObject = new BeanDynamicObject(object);
if (dynamicObject.hasMethod(name, args)) {
return dynamicObject.invokeMethod(name, args);
}
}
throw new MissingMethodException(name, Convention.class, args);
}