private static Set<String> doGetResourceNames(List<String> paths, String resourceDirName,
			String extension) {

		// check the system resource paths first
		Set<String> set = new HashSet<>();

		// now search the path entries
		for (String path : paths) {

			if (!StringUtils.endsWithAny(path.toLowerCase(), ".jar", ".zip")) {

				// maybe a directory	
				String classpathDirectoryEntry = path + File.separator + resourceDirName;
				File f = new File(classpathDirectoryEntry);
				findResources(set, f, resourceDirName, extension);
				continue;
			}

			// jar/zip
			File file = new File(path);
			try {
				if (file.exists()) {
					searchJarFile(set, file, resourceDirName, extension);
				}
			}
			catch (IOException e) {
				Msg.error(ResourceManager.class, "Unable to search compressed file", e);
			}
		}
		return set;
	}
Search the classpath for files in the &lt;classpath entry&gt;/<code>dirName</code> 
location that have the given extension.  In <code>null</code> is passed for the 
extension, then all files found in the given dir names will be returned.  In this 
way, <code>null</code> is a wildcard.

<P>The names returned from this method are relative and are meant to be used in a 
later callback to this class for methods such as {@link #loadImage(String)} or
{@link #getResource(String)}.


@param dirName the name of the directory under which to search
@param extension the extension that matching files must possess
@return set of filenames in the given directory that end with the given extension
Ghidra/Framework/Gui/src/main/java/resources/ResourceManager.java