I've created a custom product search provider for Prestashop 1.7. To achieve this, I had to dig into the heart of the code and understand how it works.
I have tons of paper notes and diagrams showing what method calls what classes->method overridden by this otherclass->method, passing parameter...