def _find_matching_allowance(self, args, kwargs):
        """Return a matching allowance.

        Returns the first allowance that matches the ones declared. Tries one with specific
        arguments first, then falls back to an allowance that allows arbitrary arguments.

        :return: The matching ``Allowance``, if one was found.
        :rtype: Allowance, None
        """

        for allowance in self._allowances:
            if allowance.satisfy_exact_match(args, kwargs):
                return allowance

        for allowance in self._allowances:
            if allowance.satisfy_custom_matcher(args, kwargs):
                return allowance

        for allowance in self._allowances:
            if allowance.satisfy_any_args_match():
                return allowance
Return a matching allowance.

        Returns the first allowance that matches the ones declared. Tries one with specific
        arguments first, then falls back to an allowance that allows arbitrary arguments.

        :return: The matching ``Allowance``, if one was found.
        :rtype: Allowance, None