Program: 125176
Project: 125176
Buggy source:
void addExtraBipartitionsByInput(ClusterCollection extraClusters,List<Tree> trees,boolean extraTreeRooted){
  String[] leaves=stTaxa;
  int n=leaves.length;
  for (  Tree tr : trees) {
    Map<TNode,STITreeCluster> nodeToSTCluster=new HashMap<TNode,STITreeCluster>(n);
    for (Iterator<TNode> nodeIt=tr.postTraverse().iterator(); nodeIt.hasNext(); ) {
      TNode node=nodeIt.next();
      if (node.isLeaf()) {
        String treeName=node.getName();
        String nodeName=getSpeciesName(treeName);
        STITreeCluster tb=new STITreeCluster();
        tb.addLeaf(nodeName);
        nodeToSTCluster.put(node,tb);
        if (!extraTreeRooted) {
          throw new RuntimeException("String_Node_Str");
        }
      }
 else {
        int childCount=node.getChildCount();
        STITreeCluster childbslist[]=new STITreeCluster[childCount];
        BitSet bs=new BitSet(leaves.length);
        int index=0;
        for (        TNode child : node.getChildren()) {
          childbslist[index++]=nodeToSTCluster.get(child);
          bs.or(nodeToSTCluster.get(child).getBitSet());
        }
        STITreeCluster cluster=new STITreeCluster();
        cluster.setCluster((BitSet)bs.clone());
        addToClusters(cluster,cluster.getClusterSize(),false);
        nodeToSTCluster.put(node,cluster);
        if (extraTreeRooted) {
          if (index > 2) {
            throw new RuntimeException("String_Node_Str" + tr + "String_Node_Str"+ node);
          }
          STITreeCluster l_cluster=childbslist[0];
          STITreeCluster r_cluster=childbslist[1];
          tryAddingSTB(l_cluster,r_cluster,cluster,node,false);
        }
 else {
          throw new RuntimeException("String_Node_Str");
        }
      }
    }
  }
  int s=extraClusters.getClusterCount();
  System.err.println("String_Node_Str" + s);
}

Fixed version (ground truth):
void addExtraBipartitionsByInput(ClusterCollection extraClusters,List<Tree> trees,boolean extraTreeRooted){
  String[] leaves=stTaxa;
  int n=leaves.length;
  for (  Tree tr : trees) {
    Map<TNode,STITreeCluster> nodeToSTCluster=new HashMap<TNode,STITreeCluster>(n);
    for (Iterator<TNode> nodeIt=tr.postTraverse().iterator(); nodeIt.hasNext(); ) {
      TNode node=nodeIt.next();
      if (node.isLeaf()) {
        String treeName=node.getName();
        String nodeName=getSpeciesName(treeName);
        STITreeCluster tb=new STITreeCluster();
        tb.addLeaf(GlobalMaps.taxonIdentifier.taxonId(nodeName));
        nodeToSTCluster.put(node,tb);
        if (!extraTreeRooted) {
          throw new RuntimeException("String_Node_Str");
        }
      }
 else {
        int childCount=node.getChildCount();
        STITreeCluster childbslist[]=new STITreeCluster[childCount];
        BitSet bs=new BitSet(leaves.length);
        int index=0;
        for (        TNode child : node.getChildren()) {
          childbslist[index++]=nodeToSTCluster.get(child);
          bs.or(nodeToSTCluster.get(child).getBitSet());
        }
        STITreeCluster cluster=new STITreeCluster();
        cluster.setCluster((BitSet)bs.clone());
        addToClusters(cluster,cluster.getClusterSize(),false);
        nodeToSTCluster.put(node,cluster);
        if (extraTreeRooted) {
          if (index > 2) {
            throw new RuntimeException("String_Node_Str" + tr + "String_Node_Str"+ node);
          }
          STITreeCluster l_cluster=childbslist[0];
          STITreeCluster r_cluster=childbslist[1];
          tryAddingSTB(l_cluster,r_cluster,cluster,node,false);
        }
 else {
          throw new RuntimeException("String_Node_Str");
        }
      }
    }
  }
  int s=extraClusters.getClusterCount();
  System.err.println("String_Node_Str" + s);
}