private List<DataType> createBootstrapFuncDefs(DataTypeManager destDTM, CategoryPath destCP,
			TaskMonitor monitor) throws CancelledException {
		List<Function> funcs = getAllFunctions().stream()
				.filter(funcData -> funcData.getFlags().isEmpty())
				.map(BootstrapFuncInfo::from)
				.filter(Objects::nonNull)
//				.filter(funcInfo -> !GoFunctionMultiReturn
//						.isMultiReturnDataType(funcInfo.func.getReturnType()))
				.filter(BootstrapFuncInfo::isBootstrapFunction)
				.filter(BootstrapFuncInfo::isNotPlatformSpecificSourceFile)
				.map(BootstrapFuncInfo::func)
				.toList();
		monitor.initialize(funcs.size(), "Creating golang bootstrap function defs");
		List<DataType> results = new ArrayList<>();
		for (Function func : funcs) {
			monitor.increment();
			try {
				FunctionDefinitionDataType funcDef =
					new FunctionDefinitionDataType(func.getSignature());
				funcDef.setCategoryPath(destCP);
				funcDef.setCallingConvention(null);
				funcDef.setComment(null);
				DataType newDT = destDTM.addDataType(funcDef, DataTypeConflictHandler.KEEP_HANDLER);
				results.add(newDT);
			}
			catch (InvalidInputException e) {
				// skip
			}
		}
		return results;
	}
Export the currently registered struct mapping types to a gdt file, producing a bootstrap
GDT archive.
<p>
The struct data types will either be from the current program's DWARF data, or
from an earlier golang.gdt (if this binary doesn't have DWARF)

@param gdtFile destination {@link File} to write the bootstrap types to
@param runtimeFuncSnapshot boolean flag, if true include function definitions
@param monitor {@link TaskMonitor}
@throws IOException if error
@throws CancelledException if cancelled
Ghidra/Features/Base/src/main/java/ghidra/app/util/bin/format/golang/rtti/GoRttiMapper.java