Object-oriented languages such as Eiffel, C++, etc support multiple inheritance of classes, while Smalltalk, Oberon, Modula-3, Ada-95, etc support only single inheritance of classes [25]. Furthermore, Eiffel, C++, Ada-95, etc support generics/templates to promote reuse. In contrast, Java supports neither multiple inheritance of classes nor generics, explicitly. This simplifies the language and its implementation but ``burdens'' the programmers and the Java API designers.