I think these types can clarify things, but I would go one step further and add comments for CoGroup and CoGroupCombiner to describe what they actually are.