code: @Override
    @SuppressWarnings({ "rawtypes", "unchecked" })
    protected <POJO> POJO newInstanceForInterface(Class<POJO> pojoInterface) throws InstantiationFailedException {
  
      if (Collection.class.isAssignableFrom(pojoInterface)) {
        CollectionFactory<? extends Collection> collectionFactory = getCollectionFactoryManager()
            .getCollectionFactory((Class<? extends Collection>) pojoInterface);
        if (collectionFactory == null) {
          throw new InstantiationFailedException(pojoInterface);
        }
        return pojoInterface.cast(collectionFactory.createGeneric());
      } else if (Map.class.isAssignableFrom(pojoInterface)) {
        MapFactory mapFactory = getCollectionFactoryManager().getMapFactory((Class<? extends Map>) pojoInterface);
        if (mapFactory == null) {
          throw new InstantiationFailedException(pojoInterface);
        }
        return pojoInterface.cast(mapFactory.createGeneric());
      }
      return null;
    }
docs: This method is invoked from {@link #newInstance(Class)} if the given {@link Class} is an {@link Class#isInterface()
  interface}.
  
  @param <POJO> is the generic type of the {@link net.sf.mmm.util.pojo.api.Pojo} to create.
  @param pojoInterface is the interface reflecting the {@link net.sf.mmm.util.pojo.api.Pojo} to create.
  @return the new instance of the given {@code pojoType}.
  @throws InstantiationFailedException if the instantiation failed.