anchor.diff:     *
      * An object [:o:] satisfies [test] if [:test(o):] is true.
      *
  +   *     List<String> numbers = ['one', 'two', 'three', 'four'];
  +   *     numbers.removeWhere((item) => item.length == 3);
  +   *     numbers.join(', '); // 'three, four'
  +   *
      * Throws an [UnsupportedError] if this is a fixed-length list.
      */
     void removeWhere(bool test(E element));
  
positive.code:    *
     * An object [:o:] satisfies [test] if [:test(o):] is true.
     *
     * Throws an [UnsupportedError] if this is a fixed-length list.
     */
    void retainWhere(bool test(E element));
  
    /**
     * Returns a new list containing the objects
     * from [start] inclusive to [end] exclusive.
     *
     * If [end] is omitted, the [length] of `this` is used.
     *
     * An error occurs if [start] is outside the range `0` .. `length` or if
     * [end] is outside the range `start` .. `length`.
  
negative.code:    * The first time an object [:o:] is encountered so that [:o == element:],
     * the index of [:o:] is returned.
     *
     *     List<String> notes = ['do', 're', 'mi', 're'];
     *     notes.lastIndexOf('re', 2); // 1
     *
     * If [start] is not provided, this method searches from the end of the
     * list./Returns
     *
     *     notes.lastIndexOf('re');  // 3
     *
     * Returns -1 if [element] is not found.
     *
     *     notes.lastIndexOf('fa');  // -1
     */
    int lastIndexOf(E element, [int start]);
  
  