  // -- 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
  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.
