size => length so we don't create a transient ArrayOps object