public Object invoke(String actionName, Object[] params, String[] signature)
            throws MBeanException, ReflectionException {
        Method method = operationMethods.get(actionName);
        //TODO verify that the right signature is picked to avoid throwing an IllegalArgumentException
        try {
            if (!method.isAccessible()) {
                method.setAccessible(true);
            }
            return method.invoke(mbean, params);
        } catch (Exception e) {
            throw new IllegalArgumentException(e);
        }

    }