In many immutable places, we keep `Vec<T>` instead of using `Box<[T]>` which save 8 bytes and also represent immutability better than Vec.