public Object invoke(ObjectName name, String operationName, Object[] params, String[] signature) throws InstanceNotFoundException, MBeanException, ReflectionException {
AbstractName abstractName = toAbstractName(name);
try {
return kernel.invoke(abstractName, operationName, params, signature);
} catch (NoSuchOperationException e) {
throw new ReflectionException((NoSuchMethodException)new NoSuchMethodException(e.getMessage()).initCause(e));
} catch (GBeanNotFoundException e) {
if(name.equals(e.getGBeanName())) {
throw (InstanceNotFoundException)new InstanceNotFoundException(name.getCanonicalName()).initCause(e);
}
throw new MBeanException(e);