code: def _match_overlay(self, raster, overlay_spec):
          
          ordering = [None]*len(overlay_spec) # Elements to overlay
          strengths = [0]*len(overlay_spec)   # Match strengths
  
          elements = raster.values() if isinstance(raster, Overlay) else [raster]
  
          for el in elements:
              for pos in range(len(overlay_spec)):
                  strength = self._match(el, overlay_spec[pos])
                  if strength is None:               continue  # No match
                  elif (strength <= strengths[pos]): continue  # Weaker match
                  else:                                        # Stronger match
                      ordering[pos] = el
                      strengths[pos] = strength
          return ordering, strengths
docs: Given a raster or input overlay, generate a list of matched
          elements (None if no match) and corresponding tuple of match
          strength values.