private void fixGcWriteBarrierBufferedFunctions() {
		// gcWriteBarrier scheme for versions up to 1.20
		// Signature is: gcWriteBarrier(val,dest)
		String ccname = GoConstants.GOLANG_GCWRITE_BUFFERED_CALLINGCONVENTION_NAME;
		if (!goBinary.hasCallingConvention(ccname)) {
			Msg.warn(this, "Missing " + ccname + " from this arch's .cspec");
			return;
		}
		try {
			DataType voidPtr = goTypes.getDTM().getPointer(null);
			ReturnParameterImpl retVal = new ReturnParameterImpl(VoidDataType.dataType, program);
			List<ParameterImpl> params =
				List.of(new ParameterImpl("value", voidPtr, program, SourceType.ANALYSIS),
					new ParameterImpl("dest", voidPtr, program, SourceType.ANALYSIS));

			GoFuncData funcData = goBinary.getFunctionByName("runtime.gcWriteBarrier");
			Function func = funcData != null ? funcData.getFunction() : null;
			if (func != null) {
				func.updateFunction(ccname, retVal, params,
					FunctionUpdateType.DYNAMIC_STORAGE_ALL_PARAMS, true, SourceType.ANALYSIS);
			}

			if (goBinary.getBuildInfo().getGOARCH(program).equals("amd64")) {
				// fix the amd64 specific variants such as gcWriteBarrierBX, etc
				Language lang = program.getLanguage();
				Register destReg = lang.getRegister("RDI"); // TODO: could also get name from cspec
				for (String regName : GoConstants.GCWRITE_BUFFERED_x86_64_Regs) {
					String gregName = regName.startsWith("R") ? regName : "R" + regName;
					funcData = goBinary.getFunctionByName("runtime.gcWriteBarrier" + regName);
					func = funcData != null ? funcData.getFunction() : null;
					Register reg = lang.getRegister(gregName);
					if (func != null && reg != null) {
						params = List.of(
							new ParameterImpl("value", voidPtr, reg, program, SourceType.ANALYSIS),
							new ParameterImpl("dest", voidPtr, destReg, program,
								SourceType.ANALYSIS));
						func.updateFunction(ccname, retVal, params,
							FunctionUpdateType.CUSTOM_STORAGE, 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