public static String[] parse(String line) {
		boolean insideQuote = false;
		ArrayList<String> result = new ArrayList<String>();		
		int quoteCount = 0;
		StringBuilder sb = new StringBuilder();
		for(int i = 0; i < line.length(); i++) {
			char c = line.charAt(i);

			if(c == QUOTE) {
				insideQuote = !insideQuote;
				quoteCount++;
			}
			
			if(c == COMMA && !insideQuote) {
				String value = sb.toString();
				value = unQuoteUnEscape(value);
				result.add(value);
				sb = new StringBuilder();
				continue;
			}
			
			sb.append(c);
		}
		
		result.add(sb.toString());

		// Validate
		if (quoteCount % 2 != 0) {
			return new String[0];
		}
		
		return result.toArray(new String[result.size()]);
	}