private void checkDoLaterSet(Program program, TaskMonitor monitor, Set<Address> doLaterSet)
			throws CancelledException {
		PseudoDisassembler pdis = new PseudoDisassembler(program);
		pdis.setRespectExecuteFlag(respectExecuteFlags);
		Listing listing = program.getListing();
		for (Iterator<Address> laterIter = doLaterSet.iterator(); laterIter.hasNext();) {
			Address entry = laterIter.next();

			monitor.checkCancelled();

			if (!listing.isUndefined(entry, entry)) {
				laterIter.remove();
				continue;
			}

			// relocation at this place, don't trust it
			if (program.getRelocationTable().hasRelocation(entry)) {
				laterIter.remove();
				continue;
			}
			boolean isValid =
				pdis.isValidSubroutine(entry, true/*AllowExistingCode?*/, false/*MustTerminate?*/);
			if (!isValid) {
				laterIter.remove();
			}
		}
	}
Check for a single external entry point.

@param program - program to check
@param externalCount - count of external entry points found
@param doNowSet - set of functions that are to be done now

@return true if this program has only one external entry point
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/disassembler/EntryPointAnalyzer.java