Here is a fast explanation on this study for Freek to improve compile-time:
https://github.com/ProjectSeptemberInc/freek/blob/optim/cop/src/main/scala/CoproductK.scala#L14-L34
In Freek, Higher-Kinded Coproduct was based on Shapeless HList/Coproduct representation like:
sealed trait CoproductK[A] extends Product with Serializable
sealed trait CNilK[A] extends CoproductK[A]