This isn't overriding anything. I suspect that if you change your tests to have static types not more specific than Box[T] they'll fail.

Can you provide tests that document ~> and ~>! individually on each subclass of Box --- with static types of just Box[T]?

Thanks!