void FillBucket::render(Painter& painter, std::shared_ptr<StyleLayer> layer_desc, const Tile::ID& id, const mat4 &matrix) {
    painter.renderFill(*this, layer_desc, id, matrix);
}
void FillBucket::render(Painter& painter,
                        const StyleLayer& layer,
                        const UnwrappedTileID& tileID,
                        const mat4& matrix) {
    painter.renderFill(*this, *layer.as<FillLayer>(), tileID, matrix);
}
void FillBucket::render(Painter& painter,
                        PaintParameters& parameters,
                        const Layer& layer,
                        const RenderTile& tile) {
    painter.renderFill(parameters, *this, *layer.as<FillLayer>(), tile);
}
void FillBucket::render(Painter& painter,
                        const StyleLayer& layer,
                        const TileID& id,
                        const mat4& matrix) {
    painter.renderFill(*this, *layer.as<FillLayer>(), id, matrix);
}