anchor.diff:     *
      * This operation does not increase the length of `this`.
      *
  -   * An error occurs if the [index] is less than 0 or greater than length.
  -   * An error occurs if the [iterable] is longer than [length] - [index].
  +   * The [index] must be non-negative and no greater than [length].
  +   *
  +   * The [iterable] must not have more elements than what can fit from [index]
  +   * to [length].
  +   *
  +   * If `iterable` is based on this list, its values may change /during/ the
  +   * `setAll` operation.
      */
     void setAll(int index, Iterable<E> iterable);
   
  
positive.code:    *     list1.setRange(1, 3, list2, 3);
     *     list1.join(', '); // '1, 8, 9, 4'
     *
     * If [start] equals [end] and [start]..[end] represents a legal range, this
     * method has no effect.
     *
     * An error occurs if [start]..[end] is not a valid range for `this`.
     * An error occurs if the [iterable] does not have enough objects after
     * skipping [skipCount] objects.
     *
     */
    void setRange(int start, int end, Iterable<E> iterable, [int skipCount = 0]);
  
  
negative.code: 
    /**
     * Copies the objects of [iterable], skipping [skipCount] objects first,
     * into the range [start], inclusive, to [end], exclusive, of the list.
     *
     *     List<int> list1 = [1, 2, 3, 4];
     *     List<int> list2 = [5, 6, 7, 8, 9];
  