private String[] expandPaths(String[] paths) {
		List<String> list = new ArrayList<>();
		for (String path : paths) {
			File file = new File(path);

			// process each header file in the directory
			if (!file.isDirectory()) {
				list.add(path);
				continue;
			}

			IncludeFileFinder finder = new IncludeFileFinder(file);
			try {
				List<String> roots = finder.getIncludeFileRoots(true);
				for (String filePath : roots) {
					if (filePath.endsWith(".h")) {
						list.add(filePath);
					}
				}
			}
			catch (IOException e) {
				Msg.error(this, "Exception finding CParser paths", e);
			}
		}

		return list.toArray(new String[0]);
	}
Dialog that shows files used for parsing C header files. The profile has a list of source header
files to parse, followed by parse options (compiler directives). Ghidra supplies a Windows
profile by default in core/parserprofiles. The user can do "save as" on this default profile to
create new profiles that will be written to the user's {@code <home>/userprofiles} directory. The
CParserPlugin creates this directory if it doesn't exist.
<p>
The data types resulting from the parse operation can either be added to the data type manager in
the current program, or written to an archive data file.
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/cparser/ParseDialog.java