code: def match(self, seq, **kwargs):
          '''If the schema matches seq, returns a list of the matched objects.
          Otherwise, returns MatchFailure instance.
          '''
          strict = kwargs.get('strict', False)
          top_level = kwargs.get('top_level', True)
          match = kwargs.get('match', list())
  
          if top_level:
              kwargs['top_level'] = False
              kwargs['match'] = match
  
              try:
                  seq = IterableList(seq)
                  self.match(seq, **kwargs)
  
                  if strict:
                      if not seq.empty():
                          raise MatchFailed('Sequence is too long', seq)
  
              except MatchFailed as e:
                  return e.failure()
  
              return Match(*match)
  
          for elem in self.elems:
              elem.match(seq, **kwargsf match(self, seq, **kwargs):
          '''If the schema matches seq, returns a list of the matched objects.
          Otherwise, returns MatchFailure instance.
          '''
          strict = kwargs.get('strict', False)
          top_level = kwargs.get('top_level', True)
          match = kwargs.get('match', list())
  
          if top_level:
              kwargs['top_level'] = False
              kwargs['match'] = match
  
              try:
                  seq = IterableList(seq)
                  self.match(seq, **kwargs)
  
                  if strict:
                      if not seq.empty():
                          raise MatchFailed('Sequence is too long', seq)
  
              except MatchFailed as e:
                  return e.failure()
  
              return Match(*match)
  
          for elem in self.elems:
              elem.match(seq, **kwargs)
docs: If the schema matches seq, returns a list of the matched objects.
          Otherwise, returns MatchFailure instance.