docs: public static Bitmap approximateTileFromLowerZoom(
              final BitmapDrawable pSrcDrawable,
              final long pMapTileIndex, final int pZoomDiff) {
          if (pZoomDiff <= 0) {
              return null;
          }
          final int tileSizePixels = pSrcDrawable.getBitmap().getWidth();
          final Bitmap bitmap = getTileBitmap(tileSizePixels);
          final Canvas canvas = new Canvas(bitmap);
          final boolean isReusable = pSrcDrawable instanceof ReusableBitmapDrawable;
          final ReusableBitmapDrawable reusableBitmapDrawable = isReusable ?
                  (ReusableBitmapDrawable) pSrcDrawable : null;
          boolean success = false;
          if (isReusable) {
              reusableBitmapDrawable.beginUsingDrawable();
          }
          try {
              if (!isReusable || reusableBitmapDrawable.isBitmapValid()) {
                  final int srcSize = tileSizePixels >> pZoomDiff;
                  if (srcSize == 0) {
                      success = false;
                  } else {
                      final int srcX = (MapTileIndex.getX(pMapTileIndex) % (1 << pZoomDiff)) * srcSize;
                      final int srcY = (MapTileIndex.getY(pMapTileIndex) % (1 << pZoomDiff)) * srcSize;
                      final Rect srcRect = new Rect(srcX, srcY, srcX + srcSize, srcY + srcSize);
                      final Rect dstRect = new Rect(0, 0, tileSizePixels, tileSizePixels);
                      canvas.drawBitmap(pSrcDrawable.getBitmap(), srcRect, dstRect, null);
                      success = true;
                  }
              }
          } finally {
              if (isReusable)
                  reusableBitmapDrawable.finishUsingDrawable();
          }
          if (!success) {
              return null;
          }
          return bitmap;
      }