A couple of years ago I began a personal project aimed to simplify working with the JTOpen (JT400) IBM library, for communicating with an IBMi (AS400) machine. JTOpen site
The target file system was the QSYS one. Being a personal project I had not much time to think about the structure, so I just tought about the QSYS structure and I came up with this hierarchy.
If you're not familiar with the IBMi architecture you can have a look here: AS/400 Objects and libraries
After several months I wanted to improve what I had done, but unfortunately I found it to be quite difficult, because of the "diamond" effect and because of problems caused by modifying a base/abstract class.
Now I'm wondering, is this a clear case of the "composition over inheritance" matter? How could this be structured with composition?
I find that I'm too much into OOP that I cannot think about different solutions, and looking over the internet there is not a clear example (just a bunch of "Fruit" or "Animal" examples).