Expressing polymorphism for immutable object hierarchies

Found yourself stuck when trying to model hierarchies of immutable objects? Duplicating code because the types don’t work out when creating a superclass? Wondered how the types and abstractions work within Scala collections?
This talk aims to connect the dots, providing an overview on designing typesafe, immutable object hierarchies for your domain model, using F-Bounded polymorphism and Functional Dependencies.