immutable, cloned, or mix?

I agree that clean is the most desirable here, since I doubt performance will be that different. Personally, I prefer immutables because of that and threading issues…

Just be careful not to give unclear advice, or misleading ones. Mutable structures have their uses and has served the professional gaming industry fine for years. Read “to mutate or not to mutate” by IBM. It is a programming approach, so whether it turns out to be the be all end all solution to data storage you must know why you are not using a mutable data structure.

Having said that I am involved in GBA programming so you tend to have to learn to work without many OO design practices in favour of something that can actually run in real time. I do design and prototype for readability and simplicity and only change the implementation when need be, but see patterns as tools and not parts of your body.