class MethodAccessImpl implements MethodAccess {

    public Object invoke(Object object, Object... args) {
        try {

            return method.invoke(object, args);
        } catch (InvocationTargetException invocationTargetException) {

            return Exceptions.handle(Object.class, invocationTargetException.getTargetException(), "unable to invoke method", method,
                    " on object ", object, "with arguments", args,
                    "\nparameter types", parameterTypes(), "\nargument types are", args);

        } catch (Throwable ex) {

            return Exceptions.handle(Object.class, ex, "unable to invoke method", method,
                    " on object ", object, "with arguments", args,
                    "\nparameter types", parameterTypes(), "\nargument types are", args);

        }
    }

    public  MethodAccessImpl();
    public  MethodAccessImpl(Method method);

}