docs: public static TileCache createExternalStorageTileCache(File cacheDir,
                                                             String id, int firstLevelSize, int tileSize, boolean persistent) {
          LOGGER.info("TILECACHE INMEMORY SIZE: " + Integer.toString(firstLevelSize));
          TileCache firstLevelTileCache = new InMemoryTileCache(firstLevelSize);
          if (cacheDir != null) {
              String cacheDirectoryName = cacheDir.getAbsolutePath() + File.separator + id;
              File cacheDirectory = new File(cacheDirectoryName);
              if (cacheDirectory.exists() || cacheDirectory.mkdirs()) {
                  int tileCacheFiles = estimateSizeOfFileSystemCache(cacheDirectoryName, firstLevelSize, tileSize);
                  if (cacheDirectory.canWrite() && tileCacheFiles > 0) {
                      try {
                          LOGGER.info("TILECACHE FILE SIZE: " + Integer.toString(tileCacheFiles));
  
                          TileCache secondLevelTileCache = new FileSystemTileCache(tileCacheFiles, cacheDirectory,
                                  org.mapsforge.map.android.graphics.AndroidGraphicFactory.INSTANCE, persistent);
                          return new TwoLevelTileCache(firstLevelTileCache, secondLevelTileCache);
                      } catch (IllegalArgumentException e) {
                          LOGGER.warning(e.getMessage());
                      }
                  }
              }
          }
          return firstLevelTileCache;
      }