void replaceRange (int start, int end, Iterable<T> newContents) inherited
void replaceRange(int start, int end, Iterable<E> newContents) { RangeError.checkValidRange(start, end, this.length); if (start == this.length) { addAll(newContents); return; } if (newContents is! EfficientLengthIterable) { newContents = newContents.toList(); } int removeLength = end - start; int insertLength = newContents.length; if (removeLength >= insertLength) { int insertEnd = start + insertLength; this.setRange(start, insertEnd, newContents); if (removeLength > insertLength) { _closeGap(insertEnd, end); } } else if (end == this.length) { int i = start; for (E element in newContents) { if (i < end) { this[i] = element; } else { add(element); } i++; } } else { int delta = insertLength - removeLength; int oldLength = this.length; int insertEnd = start + insertLength; // aka. end + delta. for (int i = oldLength - delta; i < oldLength; ++i) { add(this[i > 0 ? i : 0]); } if (insertEnd < oldLength) { this.setRange(insertEnd, oldLength, this, end); } this.setRange(start, insertEnd, newContents); } }