public static GoVerSet parse(String s) throws IOException {
		if (s.trim().equalsIgnoreCase("all")) {
			return ALL;
		}

		List<GoVerRange> result = new ArrayList<>();
		for (String verStr : s.split(",")) {
			verStr = verStr.trim();
			if (verStr.isEmpty()) {
				continue;
			}
			GoVerRange range = GoVerRange.parse(verStr);
			if (range.isEmpty()) {
				continue;
			}
			if (range.start().isWildcard() && !result.isEmpty()) {
				throw new IOException("Invalid start wildcard position: [%s]".formatted(s));
			}
			GoVerRange prev = !result.isEmpty() ? result.get(result.size() - 1) : null;
			if (prev != null && prev.end().isWildcard()) {
				throw new IOException("Invalid end wildcard position: [%s]".formatted(s));
			}
			result.add(range);
		}
		return new GoVerSet(List.copyOf(result)); // immutable list
	}
Parses a version list string (eg. "all", or "1.0-1.5,1.8-1.9,1.11-") and returns 
a {@link GoVerSet} containing the found versions.

@param s string to parse
@return {@link GoVerSet} containing the found versions
@throws IOException if the string had invalid start or end wildcard ranges
Ghidra/Features/Base/src/main/java/ghidra/app/util/bin/format/golang/GoVerSet.java