As a side note, I would argue that this abstract UseCase class doesn’t provide you with any benefits. Why not simply have each UseCase be its own class, without some sort of hierarchy, do you ever use them as their base class? Doesn’t this params: Params? = null make them simply worse to use?
Sorry for being off-topic but I really think this will only make your life harder for no reason.