followedBy method Null safety

Iterable<E> followedBy (
  1. Iterable<E> other

Returns the lazy concatentation of this iterable and other.

The returned iterable will provide the same elements as this iterable, and, after that, the elements of other, in the same order as in the original iterables.


Iterable<E> followedBy(Iterable<E> other) {
  var self = this; // TODO(lrn): Remove when we can promote `this`.
  if (self is EfficientLengthIterable<E>) {
    return FollowedByIterable<E>.firstEfficient(self, other);
  return FollowedByIterable<E>(this, other);