When Protocol Buffers (Protobufs) are compiled against Java, there's no strong relationship between the type of a Generated Message and the type of the relevant builder. Apparently, this is because Java's type system isn't strong enough to support dependent types.
This POC aims to show how it is possible to gain dependent types using Java compiled Protobufs, Scala, structural types, the "Typeclass pattern", and the "Aux pattern".