I think it's too easy to associate A, B, C, D with declarations of type parameters, so it would be easier to understand if using some more message like class names for those