code: def match_iterator(self, tokens, item):
          
          tail = None
          if len(tokens) == 2:
              _, matches = tokens
          else:
              _, matches, tail = tokens
          self.add_check("_coconut.isinstance(" + item + ", _coconut.abc.Iterable)")
          if tail is None:
              itervar = self.get_temp_var()
              self.add_def(itervar + " = _coconut.tuple(" + item + ")")
          elif matches:
              itervar = self.get_temp_var()
              if tail == wildcard:
                  tail = item
              else:
                  self.add_def(tail + " = _coconut.iter(" + item + ")")
              self.add_def(itervar + " = _coconut.tuple(_coconut_igetitem(" + tail + ", _coconut.slice(None, " + str(len(matches)) + ")))")
          else:
              itervar = None
              if tail != wildcard:
                  self.add_def(tail + " = " + item)
          if itervar is not None:
              with self.down_a_level():
                  self.add_check("_coconut.len(" + itervar + ") == " + str(len(matches)))
                  self.match_all_in(matches, itervar)
docs: Matches a lazy list or a chain.