public List<String> parse(final String line) {
		final List<String> list = new ArrayList<>();
		final Matcher m = csvRE.matcher(line);
		// For each field
		while (m.find()) {
			String match = m.group();
			if (match == null) {
				break;
			}
			if (match.endsWith(",")) {	// trim trailing ,
				match = match.substring(0, match.length() - 1);
			}
			if (match.startsWith("\"")) { // must also end with \"
				if (!match.endsWith("\"")) {
					throw new IllegalArgumentException(
						"Quoted column missing end quote: " + line);
				}
				match = match.substring(1, match.length() - 1);
			}
			if (match.length() == 0) {
				match = "";
			}
			list.add(match);
		}
		return list;
	}