private static Object invokeMethod(CallTarget callTarget, Object instance, Object[] args) throws Exception {
    try {
      return callTarget.targetMethod().invoke(instance, args);
    }
    catch (IllegalArgumentException ie) {
      String message = "Argument type mismatch for call " + callTarget.targetMethod() + ", actual types are [" +
                       getExpectedTypesMessage(args) + "]";
      LOG.warn(message, ie);

      throw new IllegalArgumentException(message, ie);
    }
    catch (Throwable e) {
      LOG.warn("Error during remote driver call " + callTarget.targetMethod(), e);

      throw e;
    }
  }
private static Object invokeMethod(CallTarget callTarget, Object instance, Object[] args)