<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 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