Is `DerivedFromParamTree` meant to be a general solution or just something that's used in case class synthesis? If it's the former, then do we need completion of companion classes in general case? Could that lead to spurious cyclic reference errors?