private static void pruneFromSinglePath(PrunedStructTypeInfo prunedInfo, String path) {
    Preconditions.checkArgument(prunedInfo != null,
      "PrunedStructTypeInfo for path '" + path + "' should not be null");

    int index = path.indexOf('.');
    if (index < 0) {
      index = path.length();
    }

    String fieldName = path.substring(0, index);
    prunedInfo.markSelected(fieldName);
    if (index < path.length()) {
      pruneFromSinglePath(prunedInfo.getChild(fieldName), path.substring(index + 1));
    }
  }
Given a complete struct type info and pruned paths containing selected fields
from the type info, return a pruned struct type info only with the selected fields.

For instance, if 'originalTypeInfo' is: s:struct<a:struct<b:int, c:boolean>, d:string>
  and 'prunedPaths' is ["s.a.b,s.d"], then the result will be:
  s:struct<a:struct<b:int>, d:string>

@param originalTypeInfo the complete struct type info
@param prunedPaths a string representing the pruned paths, separated by ','
@return the pruned struct type info
ql/src/java/org/apache/hadoop/hive/ql/io/parquet/serde/ParquetHiveSerDe.java