@Override
    public List<Cell> createCells(Line quotedLine) {
        String quotes = quotedLine.getRawLine();
        List<Cell> cells = new ArrayList<>();
        int headerIndex = 0;
        for (int i = 0; i < quotes.length(); i++) {
            StringBuilder quotedValues = new StringBuilder();
            char c = quotes.charAt(i);
            boolean inQuotes = false;
            if (c == '"') {
                inQuotes = true;
                int indexInQuotes = i;
                while (inQuotes) {
                    if (indexInQuotes + 1 >= quotes.length()) {
                        break;
                    }
                    indexInQuotes++;
                    i++;
                    char k = quotes.charAt(indexInQuotes);
                    if (k == '"') {
                        inQuotes = false;
                    }
                    if (k != '"') {
                        quotedValues.append(k);
                    }
                }
            }
            if (!inQuotes) {
                if (!quotedValues.toString().isEmpty()) {
                    Cell cell = new CellImpl(headerIndex, quotedValues.toString());
                    cells.add(cell);
                    headerIndex++;
                }
            }
        }
        return cells;
    }