protected static Set<TableScanOperator> findTableScanOperators(Operator<?> startPoint) {
    if (startPoint instanceof ReduceSinkOperator) {
      assert startPoint.getNumParent() == 1; // for now
      startPoint = startPoint.getParentOperators().get(0);
    }
    return findTableScanOperators(startPoint, new LinkedHashSet<TableScanOperator>());
  }
Search the query plan tree from startPoint to the bottom. If there is no ReduceSinkOperator
between startPoint and the corresponding TableScanOperator, return the corresponding
TableScanOperator. Otherwise, return null.
@param startPoint the operator which the search will start at
@return the TableScanOperator traced from startPoint. Null, if the search encounters any
ReduceSinkOperator.
ql/src/java/org/apache/hadoop/hive/ql/optimizer/correlation/CorrelationUtilities.java