public static GoSymbolName parseTypeName(String s, String packagePath) {
		int endOfPrefix = indexOfAny(s, "*[]0123456789.", 0, false);
		if (endOfPrefix == -1) {
			endOfPrefix = 0;
		}
		String prefixStr = s.substring(0, endOfPrefix);
		
		s = s.substring(endOfPrefix);
		int typeNameLimit = indexOfAny(s, " {([", 0, true);
		if (typeNameLimit == -1) {
			typeNameLimit = s.length();
		}
		
		int packagePathEnd = s.lastIndexOf('/', typeNameLimit - 1);
		boolean foundAbsPkgPath = packagePathEnd >= 0;
		String packageStr = "";
		if (foundAbsPkgPath) {
			packageStr = s.substring(0, packagePathEnd + 1);
			s = s.substring(packagePathEnd + 1);
			typeNameLimit -= (packagePathEnd + 1);
		}
		
		int typeNameStart = s.lastIndexOf('.', typeNameLimit - 1);
		if ( typeNameStart >= 0 ) {
			packageStr += s.substring(0, typeNameStart);
			s = s.substring(typeNameStart + 1);
		}
		String typeName = s;
		
		if ( !foundAbsPkgPath && packagePath != null && !packagePath.isEmpty() && packagePath.endsWith(packageStr) ) {
			packageStr = packagePath;
		}
		
		String canonicalName = prefixStr + packageStr +
			(!packageStr.isEmpty() && !packageStr.endsWith("/") ? "." : "") + typeName;
		return new GoSymbolName(canonicalName, packageStr, extractPackageName(packageStr), null,
			null, typeName, prefixStr, GoSymbolNameType.DATA_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