private static String extractModuleString(byte[] bytes, StructureDataType struct)
			throws IOException {
		int sentLen = INFOSTART_SENTINEL.length; // both are same len
		if (bytes.length < sentLen * 2) {
			return "";
		}

		int sentEndStart = bytes.length - sentLen;
		if (!Arrays.equals(INFOSTART_SENTINEL, 0, sentLen, bytes, 0, sentLen) ||
			!Arrays.equals(INFOEND_SENTINEL, 0, sentLen, bytes, sentEndStart, bytes.length)) {
			throw new IOException("bad sentinel");
		}

		int moduleStrLen = bytes.length - (sentLen * 2);
		if (struct != null) {
			struct.add(new ArrayDataType(BYTE, sentLen, -1, struct.getDataTypeManager()), -1,
				"sentinelstart", null);
			struct.add(new ArrayDataType(ASCII, moduleStrLen, -1, struct.getDataTypeManager()), -1,
				"moduleinfo", null);
			struct.add(new ArrayDataType(BYTE, sentLen, -1, struct.getDataTypeManager()), -1,
				"sentinelend", null);
		}

		return new String(bytes, sentLen, moduleStrLen, StandardCharsets.UTF_8);

	}
Returns a Golang "GOARCH" string created by a mapping from the Ghidra program's language (arch).

@param program {@link Program}
@return Golang "GOARCH" string
Ghidra/Features/Base/src/main/java/ghidra/app/util/bin/format/golang/GoBuildInfo.java