private void removePersistentFunctionUnderLock(FunctionInfo fi) {
    try {
      Class<?> functionClass = getPermanentUdfClass(fi);
      Integer refCount = persistent.get(functionClass);
      if (refCount != null) {
        if (refCount == 1) {
          persistent.remove(functionClass);
        } else {
          persistent.put(functionClass, Integer.valueOf(refCount - 1));
        }
      }
    } catch (ClassNotFoundException e) {
      LOG.debug("Associated class could not be found when dropping a custom UDF {}." +
          "This may happen if this UDF was never used in this session.", fi.getDisplayName());
    }
  }
Get the GenericUDAF evaluator for the name and argumentClasses.

@param name         the name of the UDAF
@param argumentOIs
@param isDistinct
@param isAllColumns
@return The UDAF evaluator
ql/src/java/org/apache/hadoop/hive/ql/exec/Registry.java