docs: private static String buildUrl(TileCode tileCode, TileMap tileMap, String baseTmsUrl) {
  		if (tileCode == null || tileMap == null || baseTmsUrl == null) {
  			throw new IllegalArgumentException("All parameters are required");
  		}
  		
  		StringBuilder builder;
  
  		// assuming they are ordered:
  		TileSet tileSet = tileMap.getTileSets().getTileSets().get(tileCode.getTileLevel());
  		String href = tileSet.getHref();
  		if (href.startsWith("http://") || href.startsWith("https://")) {
  			builder = new StringBuilder(href);
  			if (!href.endsWith("/")) {
  				builder.append("/");
  			}
  		} else {
  			builder = new StringBuilder(baseTmsUrl);
  			if (!baseTmsUrl.endsWith("/")) {
  				builder.append("/");
  			}
  			builder.append(href);
  			builder.append("/");
  		}
  
  		builder.append(tileCode.getX());
  		builder.append("/");
  		builder.append(tileCode.getY());
  		builder.append(".");
  		builder.append(tileMap.getTileFormat().getExtension());
  		return builder.toString();
  	}