To improve things, there is an abstract class called AbstractModule, which straightforwardly extends the module interface, so applications can rely upon AbstractModule as opposed to module.
It's strongly suggested that modules should be extended to the usage of AbstractModule. It gives a more readable configuration, and additionally steers us away from the excessive invoking of methods on the binder.
In our example ApplicationModule, to configure Guice instead of implementing the module interface, we have used AbstractModule, where Guice passes our module to the binder interface.