forEachTileCoordParentTileRange(
    tileCoord,
    callback,
    tempTileRange,
    tempExtent,
  ) {
    let tileRange, x, y;
    let tileCoordExtent = null;
    let z = tileCoord[0] - 1;
    if (this.zoomFactor_ === 2) {
      x = tileCoord[1];
      y = tileCoord[2];
    } else {
      tileCoordExtent = this.getTileCoordExtent(tileCoord, tempExtent);
    }
    while (z >= this.minZoom) {
      if (x !== undefined && y !== undefined) {
        x = Math.floor(x / 2);
        y = Math.floor(y / 2);
        tileRange = createOrUpdateTileRange(x, x, y, y, tempTileRange);
      } else {
        tileRange = this.getTileRangeForExtentAndZ(
          tileCoordExtent,
          z,
          tempTileRange,
        );
      }
      if (callback(z, tileRange)) {
        return true;
      }
      --z;
    }
    return false;
  }
@param {import("../tilecoord.js").TileCoord} tileCoord Tile coordinate.
@param {function(number, import("../TileRange.js").default): boolean} callback Callback.
@param {import("../TileRange.js").default} [tempTileRange] Temporary import("../TileRange.js").default object.
@param {import("../extent.js").Extent} [tempExtent] Temporary import("../extent.js").Extent object.
@return {boolean} Callback succeeded.