private List<IDGroup> getGroupsForLatestNewLibs() {
		List<IDGroup> idGroups = new ArrayList<>();
		String[] latestNames = latestExtMgr.getExternalLibraryNames();
		SymbolTable originalSymbolTable = originalPgm.getSymbolTable();
		SymbolTable latestSymbolTable = latestPgm.getSymbolTable();
		for (String latestName : latestNames) {
			Symbol latestLibrarySymbol = latestSymbolTable.getLibrarySymbol(latestName);
			long latestID = latestLibrarySymbol.getID();
			if (originalSymbolTable.getSymbol(latestID) != null) {
				continue; // getGroupsForOriginalLibs already got this.
			}
			long resultID;
			try {
				resultID = getResultIDFromLatestID(latestID);
			}
			catch (NoValueException e) {
				resultID = latestID;
			}
			// Get original and my for this Latest's matching result ID.
			long originalID = getOriginalIDForResultID(resultID);
			long myID = getMyIDForResultID(resultID);
			if (resultIDsInAGroup.contains(resultID)) {
				continue; // Already have this result as an IDGroup.
			}
			idGroups.add(new IDGroup(resultID, originalID, latestID, myID));
			if (resultID != -1) {
				resultIDsInAGroup.add(resultID);
			}
		}
		return idGroups;
	}
Gets symbol ID groups for each Library symbol that is new in the Latest program
(symbol wasn't in the Original program).
<br> Note: This method excludes any new Library symbols in Original whose matching Result ID
has already been placed in the resultIDsInAGroup set. Otherwise, each ID group that has a
Result ID will add it to the resultIDsInAGroup set.
@return the ID groups for new Library symbols in the Latest program.
Ghidra/Features/Base/src/main/java/ghidra/app/merge/listing/ExternalProgramMerger.java