Hmm - do we really want ArrayAccess and JsonSerializable as part of the public api?

This mixes up too many things - we shall either return an array and we are fine of work on pure classes/interfaces.