code: def process_method(self, method, args, kwargs, request_id=None, **context):
          
          return method(*([] if args is None else args), **({} if kwargs is None else kwargs))
docs: Executes the actual method with args, kwargs provided.
  
          This step is broken out of the process_requests flow to
          allow for ease of overriding the call in your subclass of this class.
  
          In some cases it's preferable to make callee aware of the request_id
          and easily overridable caller method allows for that.
  
          :param method: A callable registered as JSON-RPC method
          :type method: callable
          :param args: A list of none or more positional args to pass to the method call
          :type args: list
          :param kargs: A dict of none or more named args to pass to the method call
          :type kargs: dict
          :param request_id: None or non-None value of the `id` attribute in JSON-RPC request
          :param context:
              A dict with additional parameters passed to handle_request_string and process_requests
              Allows wrapping code to pass additional parameters deep into parsing stack, override this
              method and fold the parameters as needed into tha method call.
              Imagine capturing authentication / permissions data from headers, converting them into
              actionable / flag objects and putting them into **context.
              Then override this method and fold the arguments into the call
              (which may be a decorated function, where decorator unfolds the params and calls the actual method)
              By default, context is not passed to method call below.
          :return: The value method returns