@Override
  public ExprNodeDesc clone() {
    List<ExprNodeDesc> cloneCh = new ArrayList<ExprNodeDesc>(children.size());
    for (ExprNodeDesc ch : children) {
      cloneCh.add(ch.clone());
    }
    ExprNodeGenericFuncDesc clone = new ExprNodeGenericFuncDesc(typeInfo,
        FunctionRegistry.cloneGenericUDF(genericUDF), funcText, cloneCh);
    return clone;
  }
This class uses a writableObjectInspector rather than a TypeInfo to store
the canonical type information for this NodeDesc.
ql/src/java/org/apache/hadoop/hive/ql/plan/ExprNodeGenericFuncDesc.java