@Nullable
  public R getAndCallByName(String className, I argument) {
    // todo: if we ever make java9+ our lowest supported jdk version, we can
    // handle generating these for newly loaded classes from our DynamicClassLoader using
    // MethodHandles.privateLookupIn(). For now this is not possible, because we can't easily
    // create a privileged lookup in a non-default ClassLoader. So while this cache loads
    // over time, it will never load a custom filter from "hbase.dynamic.jars.dir".
    Function<I, ? extends R> lambda =
      ConcurrentMapUtils.computeIfAbsent(lambdasByClass, className, () -> loadFunction(className));

    return lambda.apply(argument);
  }
Get and execute the Function for the given className, passing the argument to the function and
returning the result.
@param className the full name of the class to lookup
@param argument  the argument to pass to the function, if found.
@return null if a function is not found for classname, otherwise the result of the function.
hbase-common/src/main/java/org/apache/hadoop/hbase/util/ReflectedFunctionCache.java