docs: @SuppressWarnings("unchecked")
  	private static <T> T createClientProxy(ClassLoader classLoader, Class<T> proxyInterface, final IJsonRpcClient client, final Map<String, String> extraHeaders) {
  		
  		return (T) Proxy.newProxyInstance(classLoader, new Class<?>[]{proxyInterface}, new InvocationHandler() {
  			@Override
  			public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
  				if (isDeclaringClassAnObject(method)) return proxyObjectMethods(method, proxy, args);
  				
  				final Object arguments = ReflectionUtil.parseArguments(method, args);
  				final String methodName = getMethodName(method);
  				return client.invoke(methodName, arguments, method.getGenericReturnType(), extraHeaders);
  			}
  		});
  	}