The intercept is the initial cost of learning and setup for a library, and the slope is how the library's complexity changes over time. class }) interface AppComponent { App app (); } @Module final class AppModule { @Provides static Database provideDatabase () { return new Database (); } } final class App { private Database database ; @Inject App ( Database database ) { this . Providing multiple APIs at different levels of abstraction allows solving 80% of use cases with a simple API, then 80% of the remaining 20% with a more detailed API, and then the final slice with a low-level API.