Builder Pattern in Scala with Phantom Types
medium.com