sublist method
override
    Returns a new list containing the elements between start and end.
The new list is a List<E> containing the elements of this list at
positions greater than or equal to start and less than end in the same
order as they occur in this list.
var colors = ["red", "green", "blue", "orange", "pink"];
print(colors.sublist(1, 3)); // [green, blue]
If end is omitted, it defaults to the length of this list.
print(colors.sublist(1)); // [green, blue, orange, pink]
The start and end positions must satisfy the relations
0 ≤ start ≤ end ≤ this.length
If end is equal to start, then the returned list is empty.
Implementation
List<E> sublist(int start, [int end]) {
  int listLength = this.length;
  if (end == null) end = listLength;
  RangeError.checkValidRange(start, end, listLength);
  int length = end - start;
  List<E> result = <E>[]..length = length;
  for (int i = 0; i < length; i++) {
    result[i] = this[start + i];
  }
  return result;
}