This kind of thing is very recognizable.
Once beginning programmers have learned the basics and are starting to think about how to design programs in a larger way, they often get this idea that things have to be designed in a more generic way, because that would make the code more flexible and easier to reuse. What they forget is that it also becomes more complex and more abstract.
I remember one project I worked on in the past where one of the other developers had just discovered generics. He thought it was a good idea to make everything as generic as possible. So he created classes that had 7 type arguments, completely unnecessary and way too complicated to be useful in any way.
The next thing that people who do that should learn is
KISS and YAGNI.