Base mixin implementation of a List class.
ListMixin can be used as a mixin to make a class implement
This mixin implements all read operations using only the
operator and members. It implements write operations using those and
Classes using this mixin should implement those five operations.
NOTICE: For backwards compatibility reasons,
there is a default implementation of
which only works for lists with a nullable element type.
For lists with a non-nullable element type,
add method must be implemented.
NOTICE: Forwarding just the four
 read/write operations
to a normal growable List (as created by a
will give very bad performance for
These operations are implemented by
increasing the length of the list by one for each
and repeatedly increasing the length of a growable list is not efficient.
To avoid this, override 'add' and 'addAll' to also forward directly
to the growable list, or, if possible, use
"package:collection/collection.dart" instead of a
// TODO: @Deprecated("Use List instead") typedef ListMixin<E> = ListBase<E>;