code: def tile(self, z_x_y):
          
          (z, x, y) = z_x_y
          logger.debug(_("tile method called with %s") % ([z, x, y]))
  
          output = self.cache.read((z, x, y))
          if output is None:
              output = self.reader.tile(z, x, y)
              # Blend layers
              if len(self._layers) > 0:
                  logger.debug(_("Will blend %s layer(s)") % len(self._layers))
                  output = self._blend_layers(output, (z, x, y))
              # Apply filters
              for f in self._filters:
                  image = f.process(self._tile_image(output))
                  output = self._image_tile(image)
              # Save result to cache
              self.cache.save(output, (z, x, y))
  
              self.rendered += 1
          return output
docs: Return the tile (binary) content of the tile and seed the cache.