public boolean isValidInlineString(AddressSetView charValidRange,
			Predicate<String> stringContentValidator) throws IOException {
		if (len <= 0 || len > MAX_SANE_STR_LEN) {
			return false;
		}

		Address charStart = getStringAddr();

		try {
			Address charEnd = charStart.addNoWrap(len - 1);
			if (!charValidRange.contains(charStart) || !charValidRange.contains(charEnd)) {
				// TODO: maybe change check to ensure both ends of char array are in same contiguous block
				return false;
			}
		}
		catch (AddressOverflowException e) {
			return false;
		}

		long maxValidLen = charValidRange.getMaxAddress().subtract(charStart) - 1;
		if (len > maxValidLen) {
			return false;
		}
		if (!isCompatibleCharDataType(charStart)) {
			return false;
		}

		String stringValue = getStringValue();
		if (!stringContentValidator.test(stringValue)) {
			return false;
		}

		return true;
	}
Returns true if this string instance points to valid char[] data.

@param charValidRange addresses that are valid locations for a string's char[] data 
@param stringContentValidator a callback that will test a recovered string for validity
@return boolean true if valid string, false if not valid string
@throws IOException if error reading data
Ghidra/Features/Base/src/main/java/ghidra/app/util/bin/format/golang/rtti/GoString.java