public boolean parse(String line) throws IOException {
			int pos = 0;
			pos = skipWhiteSpace(pos, line);
			if (pos >= line.length()) {
				return false;			// Blank line, treat as comment
			}
			if (line.charAt(pos) == '"') {
				throw new IOException("Bad map field in pg_ident.conf entry");
			}
			if (line.charAt(pos) == '#') {
				return false;			// Return false to indicate comment
			}
			int endpos = parseField(pos, line);
			mapName = line.substring(pos, endpos);

			pos = skipWhiteSpace(endpos, line);
			if (pos >= line.length()) {
				throw new IOException("Missing system-name in pg_ident.conf entry");
			}
			else if (line.charAt(pos) == '"') {
				systemNameIsQuoted = true;
				endpos = parseDoubleQuote(pos, line);
				if (line.charAt(endpos - 1) != '"') {
					throw new IOException("Entry missing ending quote in pg_ident.conf");
				}
				systemName = line.substring(pos + 1, endpos - 1);		// Strip quotes
			}
			else {
				systemNameIsQuoted = false;
				endpos = parseField(pos, line);
				systemName = line.substring(pos, endpos);
			}

			pos = skipWhiteSpace(endpos, line);
			if (pos >= line.length()) {
				throw new IOException("Missing role in pg_ident.conf entry");
			}
			else if (line.charAt(pos) == '"') {
				roleNameIsQuoted = true;
				endpos = parseDoubleQuote(pos, line);
				if (line.charAt(endpos - 1) != '"') {
					throw new IOException("Entry missing ending quote in pg_ident.conf");
				}
				roleName = line.substring(pos + 1, endpos - 1);		// Strip quotes
			}
			else {
				roleNameIsQuoted = false;
				endpos = parseField(pos, line);
				roleName = line.substring(pos, endpos);
			}
			return true;
		}
Parse a single line from the pg_ident.conf file and recover the
map name, system name, and role
@param line is the incoming of text
@return true if the line is an ident entry, false if it is a comment
@throws IOException if the text cannot be parsed
Ghidra/Features/BSim/src/main/java/ghidra/features/bsim/query/ServerConfig.java