code: public PojoPathFunction registerFunction(PojoPathFunction function, String functionName) {
  
      if (function instanceof AbstractComponent) {
        // make things easier for users, duplicate initialization will do nothing
        ((AbstractComponent) function).initialize();
      }
      return this.functionMap.put(functionName, function);
    }
docs: This method registers the given {@code function} for the given {@code functionName} so it is available via
  {@link #getFunction(String)}.
  
  @see #getFunction(String)
  
  @param function is the {@link PojoPathFunction} to register.
  @param functionName is the {@link #getFunction(String) associated name}.
  @return the {@link PojoPathFunction} that was registered before for the given {@code functionName} and has now been
  replaced.