Deep dive into Dependency Injection (DI) internals. First, we will introduce DI, then give a high level comparison overview of the different frameworks available for Android. We will then explore in depth the technologies behind DI like reflection vs. annotation processing and code generation. Finally, we will compare two DI frameworks: Dagger & Toothpick, with a lot of code examples to illustrate what it means in real life applications to use one or the other.