private ExprNodeDesc generateFilterTagExpression(int[] filterMap, List<ExprNodeDesc> filterExprs) {
    ExprNodeDesc filterTagExpr = new ExprNodeConstantDesc(shortType, (short) 0);
    Map<Byte, ExprNodeDesc> filterExprMap = getFilterExprMap(filterMap, filterExprs);

    for (Map.Entry<Byte, ExprNodeDesc> entry: filterExprMap.entrySet()) {
      ExprNodeDesc filterTagMaskExpr = generateFilterTagMask(entry.getKey(), entry.getValue());

      if (filterTagExpr instanceof ExprNodeConstantDesc) {
        filterTagExpr = filterTagMaskExpr;
      } else {
        List<ExprNodeDesc> plusArgs = Arrays.asList(filterTagMaskExpr, filterTagExpr);
        filterTagExpr = new ExprNodeGenericFuncDesc(shortType, new GenericUDFOPPlus(), plusArgs);
      }
    }

    return filterTagExpr;
  }
Generate an ExprNodeDesc that expresses the following method:
JoinUtil#isFiltered(Object, List<ExprNodeEvaluator>, List<ObjectInspector>, int[]).
ql/src/java/org/apache/hadoop/hive/ql/optimizer/FiltertagAppenderProc.java