code: def cigar_iter(self, reverse):
          
  
          l = 0
          P = self.cigar_pattern
  
          data = []
          cigar = self.cigar
          parsed_cigar = re.findall(P, cigar)
          if reverse:
              parsed_cigar = parsed_cigar[::-1]
          for _l, t in parsed_cigar:
              # 1M is encoded as M
              l = (_l and int(_l) or 1) # int(_l) cannot be 0
              data.append( (l, t) )
          return data
docs: self.cigar => [(length, type) ... ] iterate the cigar
  
          :param reverse: whether to iterate in the reverse direction (right-to-left)
          :type reverse: boolean
  
          :return a list of pairs of the type [(length, M/D) ..]