code: protected <MAP extends Map> MapFactory registerMapFactory(MapFactory<? extends MAP> factory, Class<MAP> mapInterface) {
  
      return this.mapFactoryMap.put(mapInterface, factory);
    }
docs: This method registers the given {@code factory} for the given {@code mapInterface}.
  
  @param <MAP> is the generic type of the {@code mapInterface}.
  @param factory is the {@link MapFactory} to register.
  @param mapInterface is the interface of the associated {@link Map}. It has to be
  {@link Class#isAssignableFrom(Class) assignable from} the {@link MapFactory#getMapInterface() map-interface}
  of the given {@code factory}.
  @return the {@link MapFactory} that was registered for the given {@code mapInterface} before and has now been
  replaced with {@code factory} or {@code null} if none was replaced.