private static GroupType buildProjectedGroupType(
    GroupType originalType,
    List<Type> types) {
    if (types == null || types.isEmpty()) {
      return null;
    }
    return new GroupType(originalType.getRepetition(), originalType.getName(), types);
  }
Return the columns which contains required nested attribute level
E.g., given struct a:<x:int, y:int> while 'x' is required and 'y' is not, the method will return
a pruned struct for 'a' which only contains the attribute 'x'

@param nestedColPaths the paths for required nested attribute
@return a map from the column to its selected nested column paths, of which the keys are all lower-cased.
ql/src/java/org/apache/hadoop/hive/ql/io/parquet/read/DataWritableReadSupport.java