Based on your description this sounds as a way of how Java tries to implement generics.
So maybe you should look in this way to find your answer faster.