public static ImageLocation locateImageReference(Path sourceFile, String ref)
			throws URISyntaxException {

		IconProvider runtimeIconProvider = getRuntimeIcon(ref);
		if (runtimeIconProvider != null) {
			if (runtimeIconProvider.isInvalid()) {
				// bad icon name
				return ImageLocation.createInvalidRuntimeLocation(sourceFile, ref);
			}

			URL url = runtimeIconProvider.getUrl();
			URI resolved = null;
			Path path = null;
			if (url != null) { // we may have an icon with an invalid URL (e.g., a MultiIcon)
				resolved = url.toURI();
				path = toPath(resolved);
			}
			return ImageLocation.createRuntimeLocation(sourceFile, ref, resolved, path);
		}

		URI resolved = resolve(sourceFile, ref);
		if (isRemote(resolved)) {
			return ImageLocation.createRemoteLocation(sourceFile, ref, resolved);
		}

		Path path = createPathFromURI(sourceFile, resolved);
		return ImageLocation.createLocalLocation(sourceFile, ref, resolved, path);
	}
Turn an HTML IMG reference into a location object that has resolved path info.  This will 
locate files based upon relative references, specialized help system references (i.e., 
help/topics/...),  and absolute URLs.

@param sourceFile the source file path of the image reference
@param ref the reference text
@return an absolute path; null if the URI is remote
@throws URISyntaxException if there is an exception creating a URL/URI for the image location
Ghidra/Framework/Help/src/main/java/help/HelpBuildUtils.java