public String[] parse(CharSequence line) {
List<String> tokens = new ArrayList<>();
CharacterIterator ci = new CharSequenceCharacterIterator(line);
StringBuilder tok = new StringBuilder();
State state = State.BEGIN;
loop: for (char c = ci.first();; c = ci.next()) {
switch (c) {
case '"':
switch (state) {
case BEGIN:
// start of a quoted string