private void fixGcWriteBarrierBatchFunctions() {
		// gcWriteBarrier scheme for versions 1.21+
		// Signature is: gcWriteBarrier[1-8]() uintptr
		String ccname = GoConstants.GOLANG_GCWRITE_BATCH_CALLINGCONVENTION_NAME;
		if (!goBinary.hasCallingConvention(ccname)) {
			Msg.warn(this, "Missing " + ccname + " from this arch's .cspec");
			return;
		}
		try {
			ReturnParameterImpl retVal =
				new ReturnParameterImpl(goTypes.getDTM().getPointer(null), program);

			GoFuncData funcData = goBinary.getFunctionByName("gcWriteBarrier");
			Function func = funcData != null ? funcData.getFunction() : null;
			if (func != null) {
				List<ParameterImpl> params = List.of(new ParameterImpl("numbytes",
					goTypes.getUintDT(), program, SourceType.ANALYSIS));

				func.updateFunction(ccname, retVal, params,
					FunctionUpdateType.DYNAMIC_STORAGE_ALL_PARAMS, true, SourceType.ANALYSIS);
			}
			for (int i = 1; i <= 8; i++) {
				funcData = goBinary.getFunctionByName("runtime.gcWriteBarrier" + i);
				func = funcData != null ? funcData.getFunction() : null;
				if (func != null) {
					func.updateFunction(ccname, retVal, List.of(),
						FunctionUpdateType.DYNAMIC_STORAGE_ALL_PARAMS, true, SourceType.ANALYSIS);
				}
			}
		}
		catch (InvalidInputException | DuplicateNameException e) {
			Msg.error(this, "Failed to update gcwrite function", e);
		}
	}
Converts all discovered golang rtti type records to Ghidra data types, placing them
in the program's DTM in /golang-recovered

@param monitor {@link TaskMonitor}
@throws IOException error converting a golang type to a Ghidra type
@throws CancelledException if the user cancelled the import
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/analysis/GolangSymbolAnalyzer.java