если data класс не критичен, то можно попробовать так open class A(val id: Int? = -1, val name: String? = "empty") class B(var value: Boolean, id: Int? = null, name: String? ...
но в этом примере мы все равно заблокируемся на методе getCount? какой профит? в параллельном выполнении?
http://gafter.blogspot.com.by/2006/12/super-type-tokens.html?m=1
А ради каких фич?
и название поменяли из-за коллизии с чуваками из ExcelsiorJet?