anchor.diff:     *     list.replaceRange(1, 4, [6, 7]);
      *     list.join(', '); // '1, 6, 7, 5'
      *
  -   * An error occurs if [start]..[end] is not a valid range for `this`.
  +   * The provide range, given by [start] and [end], must be valid.
  +   * A range from [start] to [end] is valid if `0 <= start <= end <= len`, where
  +   * `len` is this list's `length`. The range starts at `start` and has length
  +   * `end - start`. An empty range (with `end == start`) is valid.
      *
      * This method does not work on fixed-length lists, even when [replacement]
      * has the same number of elements as the replaced range. In that case use
  
positive.code:    * Sets the objects in the range [start] inclusive to [end] exclusive
     * to the given [fillValue].
     *
     * An error occurs if [start]..[end] is not a valid range for `this`.
     */
    void fillRange(int start, int end, [E fillValue]);
  
  
negative.code:    *     list1.setRange(1, 3, list2, 3);
     *     list1.join(', '); // '1, 8, 9, 4'
     *
     * The provide range, given by [start] and [end], must be valid.
     * A range from [start] to [end] is valid if `0 <= start <= end <= len`, where
     * `len` is this list's `length`. The range starts at `start` and has length
     * `end - start`. An empty range (with `end == start`) is valid.
     *
     * The [iterable] must have enough objects to fill the range from `start`
     * to `end` after skipping [skipCount] objects.
     *
     * If `iterable` is this list, the operation will copies the elements
     * originally in the range from `skipCount` to `skipCount + (end - start)` to
     * the range `start` to `end`, even if the two ranges overlap.
     *
     * If `iterable` depends on this list in some other way, no guarantees are
     * made.
  