code: def combine_or(matcher, *more_matchers):
      
  
      def matcher(cause):
          for sub_matcher in itertools.chain([matcher], more_matchers):
              cause_cls = sub_matcher(cause)
              if cause_cls is not None:
                  return cause_cls
          return None
  
      return matcher
docs: Combines more than one matcher together (first that matches wins).