There is no consensus among researchers on the semantics of multiple inheritance in the presence of method overriding and potential conflicts due to multiple definitions. (Bertrand Meyer [27] provides a lucid account of the key issues and insights for incorporating multiple inheritance in an object-oriented language. Similar issues have also been studied by Artificial Intelligence and Object-Oriented Databases communities [26].) The programming language designers have taken at least three different approaches, exemplified by the design of C++, Eiffel and Java.