if (this.ranges != null) { int rangeCount = this.styleCount << 1; int rangeStart = getRangeIndex(start, -1, rangeCount); if (rangeStart >= rangeCount) return null; if (this.ranges[rangeStart] > end) return null; int rangeEnd = Math.min(rangeCount - 2, getRangeIndex(end, rangeStart - 1, rangeCount)); if (this.ranges[rangeEnd] > end) rangeEnd = Math.max(rangeStart, rangeEnd - 2); System.arraycopy(this.ranges, rangeStart, newRanges, 0, newRanges.length); } else { int rangeStart = getRangeIndex(start, -1, this.styleCount); if (rangeStart >= this.styleCount) return null; if (this.styles[rangeStart].start > end) return null; int rangeEnd = Math.min(this.styleCount - 1, getRangeIndex(end, rangeStart - 1, this.styleCount)); if (this.styles[rangeEnd].start > end) rangeEnd = Math.max(rangeStart, rangeEnd - 1);
if (this.ranges != null) { int rangeCount = this.styleCount << 1; int rangeStart = getRangeIndex(start, -1, rangeCount); if (rangeStart >= rangeCount) return null; if (this.ranges[rangeStart] > end) return null; int rangeEnd = Math.min(rangeCount - 2, getRangeIndex(end, rangeStart - 1, rangeCount)); if (this.ranges[rangeEnd] > end) rangeEnd = Math.max(rangeStart, rangeEnd - 2); System.arraycopy(this.ranges, rangeStart, newRanges, 0, newRanges.length); } else { int rangeStart = getRangeIndex(start, -1, this.styleCount); if (rangeStart >= this.styleCount) return null; if (this.styles[rangeStart].start > end) return null; int rangeEnd = Math.min(this.styleCount - 1, getRangeIndex(end, rangeStart - 1, this.styleCount)); if (this.styles[rangeEnd].start > end) rangeEnd = Math.max(rangeStart, rangeEnd - 1);
if (this.ranges != null) { int rangeCount = this.styleCount << 1; int modifyStart = getRangeIndex(start, -1, rangeCount); if (modifyStart == rangeCount) return; int end = start + replaceCharCount; int modifyEnd = getRangeIndex(end, modifyStart - 1, rangeCount); int offset = newCharCount - replaceCharCount; if (modifyStart == modifyEnd && this.ranges[modifyStart] < start && end < this.ranges[modifyEnd] + this.ranges[modifyEnd + 1]) { int modifyStart = getRangeIndex(start, -1, this.styleCount); if (modifyStart == this.styleCount) return; int end = start + replaceCharCount; int modifyEnd = getRangeIndex(end, modifyStart - 1, this.styleCount); int offset = newCharCount - replaceCharCount; if (modifyStart == modifyEnd && this.styles[modifyStart].start < start && end < this.styles[modifyEnd].start + this.styles[modifyEnd].length) {
int rangeCount = this.styleCount << 1; int start = _newRanges[0]; int modifyStart = getRangeIndex(start, -1, rangeCount), modifyEnd; boolean insert = modifyStart == rangeCount; if (!insert) { int end = _newRanges[_newRanges.length - 2] + _newRanges[_newRanges.length - 1]; modifyEnd = getRangeIndex(end, modifyStart - 1, rangeCount); insert = modifyStart == modifyEnd && this.ranges[modifyStart] >= end; int modifyStart = getRangeIndex(start, -1, this.styleCount), modifyEnd; boolean insert = modifyStart == this.styleCount; if (!insert) { int end = _newStyles[_newStyles.length - 1].start + _newStyles[_newStyles.length - 1].length; modifyEnd = getRangeIndex(end, modifyStart - 1, this.styleCount); insert = modifyStart == modifyEnd && this.styles[modifyStart].start >= end;
int rangeCount = this.styleCount << 1; int start = _newRanges[0]; int modifyStart = getRangeIndex(start, -1, rangeCount), modifyEnd; boolean insert = modifyStart == rangeCount; if (!insert) { int end = _newRanges[_newRanges.length - 2] + _newRanges[_newRanges.length - 1]; modifyEnd = getRangeIndex(end, modifyStart - 1, rangeCount); insert = modifyStart == modifyEnd && this.ranges[modifyStart] >= end; int modifyStart = getRangeIndex(start, -1, this.styleCount), modifyEnd; boolean insert = modifyStart == this.styleCount; if (!insert) { int end = _newStyles[_newStyles.length - 1].start + _newStyles[_newStyles.length - 1].length; modifyEnd = getRangeIndex(end, modifyStart - 1, this.styleCount); insert = modifyStart == modifyEnd && this.styles[modifyStart].start >= end;
if (this.ranges != null) { int rangeCount = this.styleCount << 1; int modifyStart = getRangeIndex(start, -1, rangeCount); if (modifyStart == rangeCount) return; int end = start + replaceCharCount; int modifyEnd = getRangeIndex(end, modifyStart - 1, rangeCount); int offset = newCharCount - replaceCharCount; if (modifyStart == modifyEnd && this.ranges[modifyStart] < start && end < this.ranges[modifyEnd] + this.ranges[modifyEnd + 1]) { int modifyStart = getRangeIndex(start, -1, this.styleCount); if (modifyStart == this.styleCount) return; int end = start + replaceCharCount; int modifyEnd = getRangeIndex(end, modifyStart - 1, this.styleCount); int offset = newCharCount - replaceCharCount; if (modifyStart == modifyEnd && this.styles[modifyStart].start < start && end < this.styles[modifyEnd].start + this.styles[modifyEnd].length) {
if (this.ranges != null) { int rangeCount = this.styleCount << 1; int rangeStart = getRangeIndex(start, -1, rangeCount); if (rangeStart >= rangeCount) return null; if (this.ranges[rangeStart] > end) return null; int rangeEnd = Math.min(rangeCount - 2, getRangeIndex(end, rangeStart - 1, rangeCount)); if (this.ranges[rangeEnd] > end) rangeEnd = Math.max(rangeStart, rangeEnd - 2); int rangeStart = getRangeIndex(start, -1, this.styleCount); if (rangeStart >= this.styleCount) return null; if (this.styles[rangeStart].start > end) return null; int rangeEnd = Math.min(this.styleCount - 1, getRangeIndex(end, rangeStart - 1, this.styleCount)); if (this.styles[rangeEnd].start > end) rangeEnd = Math.max(rangeStart, rangeEnd - 1);
if (this.ranges != null) { int rangeCount = this.styleCount << 1; int rangeStart = getRangeIndex(start, -1, rangeCount); if (rangeStart >= rangeCount) return null; if (this.ranges[rangeStart] > end) return null; int rangeEnd = Math.min(rangeCount - 2, getRangeIndex(end, rangeStart - 1, rangeCount)); if (this.ranges[rangeEnd] > end) rangeEnd = Math.max(rangeStart, rangeEnd - 2); int rangeStart = getRangeIndex(start, -1, this.styleCount); if (rangeStart >= this.styleCount) return null; if (this.styles[rangeStart].start > end) return null; int rangeEnd = Math.min(this.styleCount - 1, getRangeIndex(end, rangeStart - 1, this.styleCount)); if (this.styles[rangeEnd].start > end) rangeEnd = Math.max(rangeStart, rangeEnd - 1);