Let's endure almost everything which has a situation circumstance. But before that, let's mention some OOP concepts. @MarkusMeskanen: since the object is immutable, and when you mutated it in place you can not specialise it in a very subclass. This was spotted by Khushal Bherwani who posted an illustration on http://5