code: public static <C> Module configModuleWithOverrides(final Class<C> configInterface, Named name, OverrideConsumer<C> overrideConsumer)
      {
          checkNotNull(configInterface);
          checkNotNull(name);
          checkNotNull(overrideConsumer);
          return configModuleWithOverrides(configInterface, Optional.ofNullable(name), Optional.ofNullable(overrideConsumer));
      }
docs: Generates a Guice Module for use with Injector creation. The generate Guice module binds a number of support
  classes to service a dynamically generate implementation of the provided configuration interface.
  This method further overrides the annotated defaults on the configuration class as per the code in
  the given overrideConsumer
  
  @param <C>              The configuration interface type to be implemented
  @param configInterface  The configuration interface
  @param name             Named annotation to provide an arbitrary scope to the configuration interface. Used when
  there are multiple implementations of the config interface.
  @param overrideConsumer a lambda which is given an instance of {@link OverrideModule} which can be used to
  build type-safe overrides for the default configuration of the config.
  @return a module to install in your Guice Injector