docs: public static DataStore create(Map<String, Object> parameters) throws IOException {
  		Object url = parameters.get(ShapefileDataStoreFactory.URLP.key);
  		Logger log = LoggerFactory.getLogger(DataStoreFactory.class);
  		if (url instanceof String) {
  			parameters.put(ShapefileDataStoreFactory.URLP.key, ResourceUtils.getURL((String) url).toExternalForm());
  		}
  		if (DATASTORE_CACHE.containsKey(parameters)) {
  			return DATASTORE_CACHE.get(parameters);
  		}
  		DataStore store = DataStoreFinder.getDataStore(parameters);
  		Object typed = parameters.get(USE_TYPED_FIDS);
  		if (typed instanceof String) {
  			Boolean t = Boolean.valueOf((String) typed);
  			if (!t) {
  				if (store != null) {
  					log.warn("Non-typed FIDs are only supported by first-generation JDBC datastores, "
  							+ "using default fid format for datastore class " + store.getClass().getName());
  				}
  			}
  		}
  		if (null == store) {
  			StringBuilder availableStr = new StringBuilder();
  			StringBuilder missingStr = new StringBuilder();
  			Iterator<DataStoreFactorySpi> all = DataStoreFinder.getAllDataStores();
  			while (all.hasNext()) {
  				DataStoreFactorySpi factory = all.next();
  				if (!factory.isAvailable()) {
  					log.warn("Datastore factory " + factory.getDisplayName() + "(" + factory.getDescription()
  							+ ") is not available");
  					if (missingStr.length() != 0) {
  						missingStr.append(",");
  					}
  					missingStr.append(factory.getDisplayName());
  				} else {
  					if (availableStr.length() != 0) {
  						availableStr.append(",");
  					}
  					availableStr.append(factory.getDisplayName());
  				}
  			}
  			throw new IOException(
  					"No datastore found. Possible causes are missing factory or missing library for your datastore"
  							+ " (e.g. database driver).\nCheck the isAvailable() method of your"
  							+ " DataStoreFactory class to find out which libraries are needed.\n"
  							+ "Unavailable factories : " + missingStr + "\n" + "Available factories : " + availableStr
  							+ "\n");
  		}
  		DATASTORE_CACHE.put(parameters, store);
  		return store;
  	}