boolean (@NotNull CharSequence line) { int offset = 0; if (myResult.isEmpty()) { if (!CharArrayUtil.regionMatches(line, offset, myRecordStart)) { return false; } offset += myRecordStart.length(); } while (offset < line.length()) { if (atRecordEnd(line, offset)) { myResult.finishItem(); if (!hasCompleteOptionsList()) { throwGFE("Parsed incomplete options " + myResult.getResult() + " for " + Arrays.toString(myOptions), line); } return true; } if (CharArrayUtil.regionMatches(line, offset, myItemsSeparator)) { myResult.finishItem(); offset += myItemsSeparator.length(); } else { char c = line.charAt(offset); myResult.append(c); offset++; } } myResult.append('\n'); return false; }