void (@NotNull Graphics g, CharSequence _data, int _start, int _end, int _x, int _y, @Nullable Color _color, boolean drawWhitespace) { final int count = myCount; if (count > 0) { final int lastCount = count - 1; final Color lastColor = color[lastCount]; if (_data == myLastData && _start == ends[lastCount] && (_color == null || lastColor == null || _color.equals(lastColor)) && _y == y[lastCount] /* there is a possible case that vertical position is adjusted because of soft wrap */ && (!myHasBreakSymbols || !myFontType.getSymbolsToBreakDrawingIteration().contains(_data.charAt(ends[lastCount] - 1))) && (!myDisableRtl || _start < 1 || _start >= _data.length() || !isRtlCharacter(_data.charAt(_start)) && !isRtlCharacter(_data.charAt(_start - 1))) && drawWhitespace == whitespaceShown[lastCount]) { ends[lastCount] = _end; if (lastColor == null) color[lastCount] = _color; return; } } myLastData = _data; data[count] = _data; x[count] = _x; y[count] = _y; starts[count] = _start; ends[count] = _end; color[count] = _color; whitespaceShown[count] = drawWhitespace; myCount++; if (count >= CACHED_CHARS_BUFFER_SIZE - 1) { flushContent(g); } }