I once worked with a library that had such a deep inheritance tree, only for ontological purposes, that I was always confused as to where anything was actually implemented. I decided to squash the layers and found almost every method was overrode two or three times.
That was the project that I turned against inheritance, it was 2009, project was written in Java 1.4
That was the project that I turned against inheritance, it was 2009, project was written in Java 1.4