An exploration of parametric polymorphism in Java