code: public static <T> Map<Key<T>, Class<? extends T>> associateInterfaceToImplementations(Class<T> anInterface,
              Collection<Class<? extends T>> implementations, boolean overridingMode) {
          return BindingUtils.resolveBindingDefinitions(anInterface, implementations.stream()
                  .filter(overridingMode ? isOverridingImplementation() : isOverridingImplementation().negate())
                  .collect(Collectors.toList()));
      }
docs: Associates scanned interfaces to their implementations. It also handles qualified bindings in
  the case where there is multiple implementation for the same interface. <p> This is the
  "default mode" for binding in the business framework. </p>
  
  @param <T>             the class of the interface.
  @param anInterface     the interface to bind
  @param implementations the classes implementing the interface.
  @param overridingMode  if true, only implementations that satisfy {@link
  #isOverridingImplementation()} are bound, if false only implementations
  that don't satisfy {@link #isOverridingImplementation()} are bound.
  @return the map of interface/implementation to bind
  @see BindingUtils#resolveBindingDefinitions(Class, Class, Class[])