private List<Program> checkForInvalidProgramsByArchitecture() throws CancelledException {

		List<Program> validList = getValidProgramsByArchitecture();

		if (validList.size() != programs.size()) {
			List<Program> invalidList = new ArrayList<>(programs);
			invalidList.removeAll(validList);

			if (!showNonMatchingArchitecturesWarning(validList, invalidList)) {
				throw new CancelledException();
			}
		}

		return validList;
	}
Verifies that all programs to be analyzed have similar architectures (if
not, they can't be analyzed in a single batch, as their analyzer options
do not match). 
<p>
If any architectures do not match, the user will be notified via
a popup dialog.

@return the list of programs that can be analyzed, or null if the operation
was cancelled by the user
@throws CancelledException if the user cancelled the operation
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/analysis/AnalyzeAllOpenProgramsTask.java