I've definitely personally experienced improper use of inheritance which resulted in a complicated and inflexible mess.  I am not saying that inheritance is evil or shouldn't be used, but just when misused, yeah, maybe "evil" is the right word. So, I've looked for opportunities to change the behavior of some of my classes by injecting different objects, and have found a few which has greatly simplified matters.  But I still struggling to identify more opportunities.  Most of the examples I