private void validateClass(Class input, Class expected) {
    if (!expected.isAssignableFrom(input)) {
      throw new RuntimeException("Registering UDF Class " + input
          + " which does not extend " + expected);
    }
  }
Typically a WindowFunction is the same as a UDAF. The only exceptions are Lead & Lag UDAFs. These
are not registered as regular UDAFs because
- we plan to support Lead & Lag as UDFs (usable only within argument expressions
  of UDAFs when windowing is involved). Since mFunctions holds both UDFs and UDAFs we cannot
  add both FunctionInfos to mFunctions.

@param name
@param wFn
ql/src/java/org/apache/hadoop/hive/ql/exec/Registry.java