private void fixupFuncsWithClosureRefsToTypeStruct(GoType closureStructType,
				boolean isMethodWrapper, TaskMonitor monitor) {
			Address typStructAddr = closureStructType.getStructureContext().getStructureAddress();
			Set<Address> funcsProcessed = new HashSet<>();

			// TODO: this catches most closure funcs because refs to the func will be closely
			// correlated with refs to the closure struct itself.  However, when a closure instance
			// is reused to call another closure func, this simplistic scheme fails
			stream(refMgr.getReferencesTo(typStructAddr).spliterator(), false) //
					.filter(ref -> !monitor.isCancelled() && ref != null &&
						ref.getReferenceType().isData())
					.map(ref -> getNextClosureFuncRef(ref.getFromAddress(), isMethodWrapper, 50))
					.filter(funcData -> funcData != null &&
						!funcsProcessed.contains(funcData.getFuncAddress()))
					.forEach(funcData -> {
						Address addr = funcData.getFuncAddress();
						funcsProcessed.add(addr);
						Function func = program.getFunctionManager().getFunctionAt(addr);
						if (func != null) {
							if (!isOverwriteableClosureFunc(func)) {
								return;
							}
							if (isMethodWrapper) {
								fixupMethodWrapperClosureFunc(funcData, func, closureStructType);
							}
							else {
								fixupClosureFunc(funcData, func, closureStructType);
							}
						}
					});
		}
Partially fixup closure func signatures by matching a closure func (*.func1) with a
closure struct ( struct { F uintptr; X0 blah... } ), and giving the func a context param
Ghidra/Features/Base/src/main/java/ghidra/app/plugin/core/analysis/GolangSymbolAnalyzer.java