List<Class> types = getVisibleInterfaces(target, classLoader, true);
if (types == null) {
return null;
}
DelegatingClassLoader proxyClassLoader = new DelegatingClassLoader();
proxyClassLoader.addLoader(classLoader);
proxyClassLoader.addLoader(getClass()); // to be able to load GeronimoManagedBean
return createProxyFactory((Class[]) types.toArray(new Class[types.size()]), proxyClassLoader).createProxy(target);
} catch (GBeanNotFoundException e) {
throw new IllegalArgumentException("Could not get GBeanInfo for target object: " + target, e);
}