single property
override
Checks that this iterable has only one element, and returns that element.
Throws a StateError if this
is empty or has more than one element.
This operation will not iterate past the second element.
Implementation
E get single {
if (length > 1) throw IterableElementError.tooMany();
Iterator<E> it = iterator;
if (!it.moveNext()) throw IterableElementError.noElement();
E result = it.current;
return result;
}