/*
  * Does not recalculate if greedySplits are already cached.
  */
 private void findGreedySplits() {
   if (greedySplits != null) return;
   sortSplits();
   int nGreedySplits = idg.getIdCount() - 3;
   greedySplits = new Vector<Split>(nGreedySplits);
   greedySplitIndex = new Vector<Integer>(nGreedySplits);
   for (int i = 0; i < sortedSplits.size() && greedySplits.size() < nGreedySplits; i++) {
     String splitStr = sortedSplits.elementAt(i);
     Split split = splits.get(splitStr);
     if (split.compatible(greedySplits)) {
       greedySplits.add(split);
       greedySplitIndex.add(i);
     }
   }
 }
 @Override
 public int whichIdNumber(String name) {
   return idg.whichIdNumber(name);
 }
 @Override
 public void setIdentifier(int i, Identifier id) {
   idg.setIdentifier(i, id);
 };
 @Override
 public Identifier getIdentifier(int i) {
   return idg.getIdentifier(i);
 }
 /*
  * Methods to implement IdGroup, which just pass through to 'idg' member
  */
 @Override
 public int getIdCount() {
   return idg.getIdCount();
 }