docs: def findAllMatches(self, needle, similarity):
          """ Finds all matches above ``similarity`` using a search pyramid to improve efficiency
  
          Pyramid implementation unashamedly stolen from https://github.com/stb-tester/stb-tester
          """
          positions = []
          # Use findBestMatch to get the best match
          while True:
              best_match = self.findBestMatch(needle, similarity)
              if best_match is None: # No more matches
                  break
              # Found a match. Add it to our list
              positions.append(best_match) # (position, confidence)
  
              # Erase the found match from the haystack.
              # Repeat this process until no other matches are found
              x, y = best_match[0]
              w = needle.shape[1]
              h = needle.shape[0]
              roi = (x, y, w, h)
              # numpy 2D slice
              roi_slice = (slice(roi[1], roi[1]+roi[3]), slice(roi[0], roi[0]+roi[2]))
              self.haystack[roi_slice] = 0
  
          # Whew! Let's see if there's a match after all that.
          positions.sort(key=lambda x: (x[0][1], x[0][0]))
          return positions