fighting bit rot with types ( experience report : scala collections ) .
How to make ad-hoc polymorphism less ad hoc