public void generateMissingSnapshotFiles() throws IOException {
		assertTrue("Missing Golang repo dir", GOLANG_REPO_DIR.isDirectory());
		assertTrue("Golang repo dir isn't git repo",
			new File(GOLANG_REPO_DIR, ".git").isDirectory());

		FileUtilities.checkedMkdirs(APISNAPSHOT_FULL_JSONS_DIR);
		FileUtilities.checkedMkdirs(golangGhidraTypeInfoDir);
		FileUtilities.checkedMkdirs(diffsDir);

		Set<GoVer> outOfRangeGoVers = new HashSet<>();
		List<GoVer> goVers = getGoRepoVers(GoVerRange.parse("1.15.0-"));
		Map<GoVer, List<GoVer>> goPatchVersMap = getGoMinorToPatchInfo(goVers);
		for (GoVer goMinorVer : goPatchVersMap.keySet().stream().sorted().toList()) {
			Msg.info(this, "Checking minor ver: " + goMinorVer);
			File jsonMinorVerFile = getJsonFilename(APISNAPSHOT_FULL_JSONS_DIR, goMinorVer);
			boolean rebuildAll = false;
			if (!jsonMinorVerFile.isFile()) {
				generateSnapshot(goMinorVer, jsonMinorVerFile);
				rebuildAll = true;
			}
			File jsonMinorVerDataFile = getJsonFilename(golangGhidraTypeInfoDir, goMinorVer); // the file seen by the Eclipse project
			if (!isFileEqual(jsonMinorVerFile, jsonMinorVerDataFile)) {
				// publish the go1.nn.0.json file from the persistent snapshots dir to the eclipse project dir
				FileUtilities.copyFile(jsonMinorVerFile, jsonMinorVerDataFile, false, monitor);
			}
			if (!GoRttiMapper.SUPPORTED_VERSIONS.contains(goMinorVer)) {
				outOfRangeGoVers.add(goMinorVer);
			}

			for (GoVer patchVer : goPatchVersMap.get(goMinorVer)) {
				if (patchVer.getPatch() == 0) {
					continue;
				}
				Msg.info(this, "  patch ver: " + patchVer);
				boolean rebuildPatchDiff = rebuildAll;
				File jsonPatchVerFile = getJsonFilename(APISNAPSHOT_FULL_JSONS_DIR, patchVer);
				if (!jsonPatchVerFile.isFile()) {
					generateSnapshot(patchVer, jsonPatchVerFile);
					rebuildPatchDiff = true;
				}
				File jsonPatchDiffFile = getDiffFilename(diffsDir, patchVer);
				if (rebuildPatchDiff || !jsonPatchDiffFile.isFile()) {
					Msg.info(this, "    generating diff %s -> %s".formatted(goMinorVer, patchVer));
					generateJsonDiff(jsonMinorVerFile, jsonPatchVerFile, jsonPatchDiffFile);
				}
				if (!GoRttiMapper.SUPPORTED_VERSIONS.contains(patchVer)) {
					outOfRangeGoVers.add(patchVer);
				}

			}
		}
		Msg.info(this, "Finished generateMisingSnapshotFiles");
		if (!outOfRangeGoVers.isEmpty()) {
			Msg.warn(this, "Golang SUPPORTED_VERSIONS might need updating: " + outOfRangeGoVers);
		}
	}
This Junit test method will create any missing api snapshot files, as reflected by the
golang versions present in the go git repo directory, and the current set of .json files
in the persistent go-api-snapshots dir.
<p>
Usage will typically be:
<ol>
	<li>Use git to bring GOLANG_REPO_DIR up to date with upstream golang:<br>
	<pre>git-repo-dir$ git fetch</pre>
	<li>Uncomment the @Test annotation to allow this test to run
	<li>Run this test
	<li>Refresh the Eclipse package explorer tree to see new files in the Features Base/data dir
</ol>
<p>
Any tags in the golang git repo named go1.NN.PP will be used to create 
new go1.NN.PP.json files and will be placed in the go-api-snapshot dir, and mirrored to 
the data/typeinfo/golang and data/typeinfo/golang/patchverdiffs directory as
needed.
<p>
Creating a snapshot file involves switching the golang git repo to the necessary tag,
creating a temp goroot directory with the go/src/ directory from the git repo, and executing
the go-api-parser tool that will use golang's built-in compiler/parser tool to parse all
*.go source files under the go/src/ directory. 

@throws IOException if failure
Ghidra/Features/Base/src/test/java/ghidra/app/util/bin/format/golang/rtti/GoApiSnapshotGeneratorTest.java