  // -- start List<$E> mixins.
  // $E is the element type.

$if DEFINE_LENGTH_AS_NUM_ITEMS
  // SVG Collections expose numberOfItems rather than length.
  int get length => numberOfItems;
$endif

$if DEFINE_LENGTH_SETTER
  void set length(int value) {
    throw new UnsupportedError("Cannot resize immutable List.");
  }
$endif

  $E get first {
    if (this.length > 0) {
$if DART2JS
      return JS('$E', '#[0]', this);
$else
$if USE_NATIVE_INDEXED_GETTER
      return $GETTER(0);
$else
      return this[0];
$endif
$endif
    }
    throw new StateError("No elements");
  }

  $E get last {
    int len = this.length;
    if (len > 0) {
$if DART2JS
      return JS('$E', '#[#]', this, len - 1);
$else
$if USE_NATIVE_INDEXED_GETTER
      return $GETTER(len - 1);
$else
      return this[len - 1];
$endif
$endif
    }
    throw new StateError("No elements");
  }

  $E get single {
    int len = this.length;
    if (len == 1) {
$if DART2JS
      return JS('$E', '#[0]', this);
$else
$if USE_NATIVE_INDEXED_GETTER
      return $GETTER(0);
$else
      return this[0];
$endif
$endif
    }
    if (len == 0) throw new StateError("No elements");
    throw new StateError("More than one element");
  }

  $E elementAt(int index) => this[index];
  // -- end List<$E> mixins.
