This article aims to show a couple of techniques to tackle some common problems caused by type erasure in Scala. Introduction Scala has a really strong type system. Existential types, structural types, nested types, path-dependant types, abstract and concrete type members, type bounds (upper, lower, view, context), use-site and declaration-site type…