Shower thought: Smalltalk (and to some extent other OO languages) replace pattern matching with dynamic dispatch.
I miss pattern matching in Lisp dialects without a good implementation, but I haven't noticed its absence in Smalltalk.
Racket has 2 object systems, both single dispatch and CLOS style multimethods! Single dispatch is the default, which seems to help cohesion.
Adding a dyn keyword to Rust in order to make dynamic dispatch more explicit:
https://github.com/rust-lang/rfcs/pull/2113