code: public <ABS, IMPL extends ABS> InjectorConfiguration withAlias(
          Class scope,
          Executable forExecutable,
          Class<ABS> abstractDefinition,
          Class<IMPL> implementationDefinition
      ) {
          //noinspection unchecked
          return new InjectorConfiguration(
              scopes, definedClasses,
              factories,
              factoryClasses, sharedClasses,
              sharedInstances,
              aliases.withModified(scope, (value) -> value.with(forExecutable, abstractDefinition, implementationDefinition)),
              collectedAliases, namedParameterValues
          );
      }
docs: Defines on a per-method or per-constructor basis that instead of the class defined in `abstractDefinition` the
  class defined in `implementationDefinition` should be used.
  
  @param forExecutable the constructor or method this alias should be used on.
  @param abstractDefinition the abstract class or interface to replace.
  @param implementationDefinition the implementation class
  @param <ABS> type of the abstract class/interface
  @param <IMPL> type if the implementation
  
  @return a modified copy of this injection configuration.