code: protected static Map<String, Class<? extends ICustomFunction>> loadCustomFunctions(String functionPackage) {
          Map<String, Class<? extends ICustomFunction>> map = new HashMap<>();
  
          Set<Class<? extends ICustomFunction>> classes = new Reflections(functionPackage).getSubTypesOf(ICustomFunction.class);
  
          for (Class<? extends ICustomFunction> cls : classes) {
  
              if (cls.isAnnotationPresent(CustomFunctionMeta.class)) {
                  CustomFunctionMeta meta = cls.getAnnotation(CustomFunctionMeta.class);
                  map.put(meta.value(), cls);
              }
          }
  
          return map;
      }
docs: Does scan and load for custom functions.
  By default it is invoked from static block of this class with {@link #PACKAGE_FUNCTIONS} as parameter.
  It scans given package for {@link ICustomFunction} and if that class has {@link FunctionMeta} annotation on it,
  it will be added to functions cache ({@link #fs}).
  
  This can be called for other custom functions from 3pty package.