public int transferCachedFunctions(DescriptionManager otherman, Iterator<Function> functions,
			PreFilter preFilter) throws LSHException {
		otherman.transferSettings(manager);
		int count = 0;
		BiPredicate<Program, FunctionDescription> filterPredicate =
			preFilter.getAndReducedPredicate();
		while (functions.hasNext()) {
			FunctionDescription desc;
			Function func = functions.next();
			String name = func.getName(true);
			long address = func.getEntryPoint().getOffset();
			try {
				desc = manager.findFunction(name, address, exerec);
			}
			catch (LSHException e) {		// This exception is thrown if the manager does not contain a function of this name
				continue;					// Basically we skip the function in this case
			}
			if (filterPredicate.test(program, desc)) {
				otherman.transferFunction(desc, true);
				count += 1;
			}
		}
		return count;
	}
Return true if the address corresponds to a normal function body
@param addr is the entry point of the function
@return true if it has a body
Ghidra/Features/BSim/src/main/java/ghidra/features/bsim/query/GenSignatures.java