Call an instance method filling in all the method parameters based
        on their names. The parameters are filled in from the following
        locations (in that order of precedence):

            1. Path parameters from routing
            2. GET parameters
            3. POST parameters

        All values are validated using the method :func:`validate_param`. The
        return value of the method is returned unaltered.

        :param method_name: Name of the method on the current instance to
                            call.
        :type method_name: str

def call_method(self, method_name):
        """Call an instance method filling in all the method parameters based
        on their names. The parameters are filled in from the following
        locations (in that order of precedence):

            1. Path parameters from routing
            2. GET parameters
            3. POST parameters

        All values are validated using the method :func:`validate_param`. The
        return value of the method is returned unaltered.

        :param method_name: Name of the method on the current instance to
                            call.
        :type method_name: str
        """
        params = []
        method = getattr(self, method_name)

        method_params, varargs, varkw, defaults = inspect.getargspec(method)
        if method_params and len(method_params) > 1:
            method_params.pop(0)  # pop the self off
            data = self._merge_defaults(self.data, method_params, defaults)
            for param in method_params:
                value = data.get(param)
                self.validate_param(method, param, value)
                value = self.convert_param(method, param, value)
                params.append(value)

        return method(*params)