code: protected Object create(CachingPojoPath currentPath, PojoPathContext context, PojoPathState state, Class<?> pojoClass) throws PojoPathCreationException {
  
      if ((pojoClass == null) || Object.class.equals(pojoClass)) {
        throw new PojoPathCreationException(state.rootPath.pojo, currentPath.getPojoPath());
      }
      Object result;
      try {
        PojoFactory factory = context.getPojoFactory();
        if (factory == null) {
          factory = this.pojoFactory;
        }
        result = factory.newInstance(pojoClass);
      } catch (RuntimeException e) {
        throw new PojoPathCreationException(e, state.rootPath.pojo, currentPath.getPojoPath());
      }
      if (result == null) {
        throw new PojoPathCreationException(state.rootPath.pojo, currentPath.getPojoPath());
      }
      return result;
    }
docs: This method creates a {@link net.sf.mmm.util.pojo.api.Pojo} of the given {@code pojoType}.
  
  @param currentPath is the current {@link CachingPojoPath} to evaluate.
  @param context is the {@link PojoPathContext context} for this operation.
  @param state is the {@link #createState(Object, String, PojoPathMode, PojoPathContext) state} of this operation.
  @param pojoClass is the {@link Class} reflecting the {@link net.sf.mmm.util.pojo.api.Pojo} to create.
  @return the created {@link net.sf.mmm.util.pojo.api.Pojo}.
  @throws PojoPathCreationException if the creation failed.