Preventing runtime errors is a hot topic, whether it's the Whitehouse telling you to rewrite code in Rust, or that Jane Street telling you to make illegal states unrepresentable. But Static Types surely get in the way and prevent you writing expressive code surely? Well I propose that match types give you the expressive power of a dynamic language (e..g Ruby or Elixir) but with the safety of static types. This talk contains everything you could need to know about the Scala 3 match types feature.