I just finished a project where literally everything had been over engineered to the point that it took them weeks to do a release.
The code generally had one path but every method was built using dictionaries of possible classes that would implement interfaces so they wouldn’t have any duplicate code.
Sometimes some dev teams go down the wrong path.