For people that are still confused about opaque result types, I did an attempt to explain them from the perspective of the earlier mentioned 'reverse generics'.
It would also be helpful if some people with more knowledge could have a look at it and point out any errors.