@SuppressWarnings("unchecked")
 public <T extends CatalogType> Histogram<T> buildHistogramForType(Class<T> search_key) {
   Histogram<T> h = new ObjectHistogram<T>();
   for (CatalogPair e : this) {
     if (ClassUtil.getSuperClasses(e.getFirst().getClass()).contains(search_key)) {
       h.put((T) e.getFirst());
     }
     if (ClassUtil.getSuperClasses(e.getSecond().getClass()).contains(search_key)) {
       h.put((T) e.getSecond());
     }
   } // FOR
   return (h);
 }
 @SuppressWarnings("unchecked")
 public <T extends CatalogType> Collection<T> findAllForType(Class<T> search_key) {
   List<T> found = new ArrayList<T>();
   for (CatalogPair e : this) {
     if (ClassUtil.getSuperClasses(e.getFirst().getClass()).contains(search_key)) {
       found.add((T) e.getFirst());
     }
     if (ClassUtil.getSuperClasses(e.getSecond().getClass()).contains(search_key)) {
       found.add((T) e.getSecond());
     }
   } // FOR
   return (found);
 }
 /**
  * @param match_class
  * @param search_key
  * @return
  */
 public PredicatePairs createPredicatePairsForParent(
     Class<? extends CatalogType> match_class, CatalogType parent_search_key) {
   PredicatePairs ret = new PredicatePairs(this.catalog_stmts);
   // We're looking for Pairs where one of the elements matches the search_key,
   // and the other element is of the same type of match_class
   for (CatalogPair e : this) {
     if (e.getFirst().getClass().equals(match_class)
         && e.getSecond().getParent().equals(parent_search_key)) {
       ret.add(
           CatalogPair.factory(
               e.getSecond(), e.getFirst(), e.getComparisonExp(), e.getQueryTypes()));
     } else if (e.getSecond().getClass().equals(match_class)
         && e.getFirst().getParent().equals(parent_search_key)) {
       ret.add(e);
     }
   } // FOR
   return (ret);
 }
 /**
  * @param search_key
  * @return
  */
 public Collection<CatalogPair> findAllForParent(CatalogType search_key) {
   List<CatalogPair> found = new ArrayList<CatalogPair>();
   for (CatalogPair entry : this) {
     if (entry.getFirst().getParent().equals(search_key)
         || entry.getSecond().getParent().equals(search_key)) {
       found.add(entry);
     }
   } // FOR
   return (found);
 }