docs: def find_rule(self, binding_type: str, **args):
          """Finds rule by binding type and args"""
          try:
              rules = self._rules[binding_type]
              return next(rule for rule in rules if rule.suitable(**args))
          except (KeyError, StopIteration):
              return None