docs: protected void initVelocityResourceLoader(VelocityEngine velocityEngine, String resourceLoaderPath) {
  		if (isPreferFileSystemAccess()) {
  			// Try to load via the file system, fall back to SpringResourceLoader
  			// (for hot detection of template changes, if possible).
  			try {
  				StringBuilder resolvedPath = new StringBuilder();
  				String[] paths = StringUtils.commaDelimitedListToStringArray(resourceLoaderPath);
  				for (int i = 0; i < paths.length; i++) {
  					String path = paths[i];
  					Resource resource = getResourceLoader().getResource(path);
  					File file = resource.getFile();  // will fail if not resolvable in the file system
  					if (logger.isDebugEnabled()) {
  						logger.debug("Resource loader path [" + path + "] resolved to file [" + file.getAbsolutePath() + "]");
  					}
  					resolvedPath.append(file.getAbsolutePath());
  					if (i < paths.length - 1) {
  						resolvedPath.append(',');
  					}
  				}
  				velocityEngine.setProperty(RuntimeConstants.RESOURCE_LOADER, "file");
  				velocityEngine.setProperty(RuntimeConstants.FILE_RESOURCE_LOADER_CACHE, "true");
  				velocityEngine.setProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, resolvedPath.toString());
  			}
  			catch (IOException ex) {
  				if (logger.isDebugEnabled()) {
  					logger.debug("Cannot resolve resource loader path [" + resourceLoaderPath +
  							"] to [java.io.File]: using SpringResourceLoader", ex);
  				}
  				initSpringResourceLoader(velocityEngine, resourceLoaderPath);
  			}
  		}
  		else {
  			// Always load via SpringResourceLoader
  			// (without hot detection of template changes).
  			if (logger.isDebugEnabled()) {
  				logger.debug("File system access not preferred: using SpringResourceLoader");
  			}
  			initSpringResourceLoader(velocityEngine, resourceLoaderPath);
  		}
  	}