Generic Programming Constructs and Applications in Object-Oriented Languages