void () { int offset = myNodeContentRange.getStartOffset(); while (offset < myNodeContentRange.getEndOffset()) { // First, skip named unicode escapes like "\N{LATIN SMALL LETTER A}" wherever they are final int nextOffset = skipNamedUnicodeEscape(offset); if (offset != nextOffset) { offset = nextOffset; continue; } final char c1 = myNodeText.charAt(offset); final char c2 = offset + 1 < myNodeContentRange.getEndOffset() ? myNodeText.charAt(offset + 1) : '\0'; if ((c1 == '{' && c2 == '{') || (c1 == '}' && c2 == '}')) { offset += 2; continue; } else if (c1 == '{') { final Field field = parseField(offset, 1); myTopLevelFields.add(field); offset = field.getFieldEnd(); continue; } // Will be marked as errors else if (c1 == '}') { mySingleRightBraces.add(offset); } offset++; } }