interface box ReadSeq[A]
"""
The readable interface of a sequence.
"""
fun size(): USize
"""
Returns the number of elements in the sequence.
"""
fun apply(i: USize): this->A ?
"""
Returns the i-th element of the sequence. Raises an error if the index
is out of bounds. Note that this returns A^, not this->A.
"""
fun values(): Iterator[this->A]^
"""
Returns an iterator over the elements of the sequence. Note that this
iterates over A^, not this->A.
"""
interface box ReadElement[A]
"""
Used to show that a ReadSeq can return an element of a specific unmodified
type.
"""
fun apply(i: USize): A ?