Associated types and constraint propagation for generic programming in Scala. - Pelenitsyn, A. (Programming & Computer Software, 2015)