private static void checkListAndMap(ExprNodeDesc desc, FieldNode pathToRoot, FieldNode fn) {
    TypeInfo ti = desc.getTypeInfo();

    // Check cases for arr[i].f and map[key].v
    // For these we should not generate paths like arr.f or map.v
    // Otherwise we would have a mismatch between type info and path
    if (ti.getCategory() != ObjectInspector.Category.LIST
        && ti.getCategory() != ObjectInspector.Category.MAP) {
      fn.addFieldNodes(pathToRoot);
    }
  }
Given the 'desc', construct a list of field nodes representing the
nested columns paths referenced by this 'desc'.
@param desc the node descriptor
@return a list of nested column paths referenced in the 'desc'
ql/src/java/org/apache/hadoop/hive/ql/optimizer/ColumnPrunerProcCtx.java