private static GoSymbolName _parse(String s) {
		if (s.startsWith("go:")) {
			// don't try to parse "go:...." symbols
			return null;
		}
		String origStr = s;

		// Special handling for "type:" .eq. and .hash. prefixes
		Matcher m = TYPE_PREFIX_PATTERN.matcher(s);
		if (m.matches()) {
			String prefixStr = m.group(1);
			String typeStr = m.group(3);
			GoSymbolName typeSN = parseTypeName(typeStr, "");
			return new GoSymbolName(s, typeSN.packagePath, typeSN.packageName, null, null, typeStr,
				prefixStr, GoSymbolNameType.FUNC);
		}

		s = fixGolangSpecialSymbolnameChars(origStr);

		int pkgInfoLimit = indexOfAny(s, "([");
		if (pkgInfoLimit == -1) {
			pkgInfoLimit = s.length();
		}

		// "d/p.(xxxx).yyyy.zzz" or "d/p.xxx" or "d/p.xxx[yyy].zzz" or "d/p.xxx.yyy.zzz"
		int lastSlash = s.lastIndexOf('/', pkgInfoLimit);
		int pkgDot = s.indexOf('.', lastSlash + 1);
		if (pkgDot < 0) {
			return null;
		}
		String pkgStr = s.substring(0, pkgDot);

		List<String> parts = splitNestedStringOn(s.substring(pkgDot + 1), '.');
		String firstPart = parts.get(0);
		int baseIndex = 0;

		String recvStr = null;
		String genericsStr = null;
		if (firstPart.startsWith("(") && firstPart.endsWith(")")) {
			String[] recvParts = splitGenerics(firstPart.substring(1, firstPart.length() - 1));
			recvStr = recvParts[0];
			genericsStr = recvParts[1];
			baseIndex++;
		}

		String baseSymbolName;
		if (baseIndex == 0 && parts.size() == 1) {
			// only consider generic string on normal func, not nested or lambdas
			String[] nameParts = splitGenerics(firstPart);
			baseSymbolName = nameParts[0];
			genericsStr = nameParts[1];
		}
		else {
			baseSymbolName = String.join(".", parts.subList(baseIndex, parts.size()));
		}
		GoSymbolNameType type = parts.size() == baseIndex + 1
				? GoSymbolNameType.fromNameWithDashSuffix(parts.get(parts.size() - 1))
				: GoSymbolNameType.fromNameSuffix(parts.get(parts.size() - 1));

		return new GoSymbolName(origStr, pkgStr, extractPackageName(pkgStr), recvStr, genericsStr,
			baseSymbolName, null, type);
	}
Fixes the specified string if it contains any of the golang special symbolname characters:
middle-dot and the weird slash.

@param s string to fix
@return original string, or fixed version
Ghidra/Features/Base/src/main/java/ghidra/app/util/bin/format/golang/rtti/GoSymbolName.java