ReadOnlyArray is an abstract over an ordinary Array which only exposes
APIs that don't modify the instance, hence "read-only".
Note that this doesn't necessarily mean that the instance is immutable.
Other code holding a reference to the underlying Array can still modify it,
and the reference can be obtained with a cast.