Program: 50126
Project: 50126
Buggy source:
/** 
 * instantiation runs the entire analysis
 * @param trees
 * @param gdb
 * @param mapInternalNodesToTax
 * @throws Exception
 */
public BipartOracle(List<Tree> trees,GraphDatabaseAgent gdb,boolean useTaxonomy,Map<Tree,String> sources,Map<TreeNode,String> subsetInfo,boolean subset,String subsetFileName) throws Exception {
  this.subset=subset;
  if (subset) {
    mapdeepest=false;
    Transaction tx=gdb.beginTx();
    Index<Node> ottIdIndex=gdb.getNodeIndex("String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str");
    if (subsetFileName.contains("String_Node_Str")) {
      ottidFromSubset=subsetFileName.split("String_Node_Str")[1];
    }
 else {
      ottidFromSubset=subsetFileName;
    }
    ottidFromSubset=ottidFromSubset.replace("String_Node_Str","String_Node_Str").replace("String_Node_Str","String_Node_Str");
    taxnodeFromSubset=ottIdIndex.get(NodeProperty.TAX_UID.propertyName,ottidFromSubset).getSingle();
    Index<Node> ottIdIndexss=gdb.getNodeIndex("String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str");
    ottIdIndexss.add(taxnodeFromSubset,"String_Node_Str",ottidFromSubset);
    tx.success();
    tx.finish();
  }
  this.gdb=gdb;
  this.USING_TAXONOMY=useTaxonomy;
  this.subsetTipInfo=subsetInfo;
  this.sourceForTrees=sources;
  long w=new Date().getTime();
  validateTrees(trees);
  createTreeIdRankMap(trees);
  if (USING_TAXONOMY) {
    explodedTipsHash=TipExploder.explodeTipsReturnHash(trees,gdb);
    reduceExplodedTipsHash();
  }
  gatherTreeData(trees);
  if (USING_TAXONOMY) {
    mapTreeNodesToTaxa(trees);
  }
  if (USING_TAXONOMY) {
    populateTaxonomyGraphNodesMap(trees);
  }
  gatherBipartitions(trees);
  identifyNestedChildBiparts(trees);
  findAllPaths();
  createNodesUsingPaths();
  mapTreeRootNodes(trees);
  generateMRCAChildOfs();
  mapNonRootNodes(trees);
  removeUnusedNodesAndRels();
  System.out.println("String_Node_Str" + (new Date().getTime() - w) / 1000 + "String_Node_Str");
}

Fixed version (ground truth):
/** 
 * instantiation runs the entire analysis
 * @param trees
 * @param gdb
 * @param mapInternalNodesToTax
 * @throws Exception
 */
public BipartOracle(List<Tree> trees,GraphDatabaseAgent gdb,boolean useTaxonomy,Map<Tree,String> sources,Map<TreeNode,String> subsetInfo,boolean subset,String subsetFileName) throws Exception {
  this.subset=subset;
  if (subset) {
    Transaction tx=gdb.beginTx();
    Index<Node> ottIdIndex=gdb.getNodeIndex("String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str");
    if (subsetFileName.contains("String_Node_Str")) {
      ottidFromSubset=subsetFileName.split("String_Node_Str")[1];
    }
 else {
      ottidFromSubset=subsetFileName;
    }
    ottidFromSubset=ottidFromSubset.replace("String_Node_Str","String_Node_Str").replace("String_Node_Str","String_Node_Str");
    taxnodeFromSubset=ottIdIndex.get(NodeProperty.TAX_UID.propertyName,ottidFromSubset).getSingle();
    Index<Node> ottIdIndexss=gdb.getNodeIndex("String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str");
    ottIdIndexss.add(taxnodeFromSubset,"String_Node_Str",ottidFromSubset);
    tx.success();
    tx.finish();
  }
  this.gdb=gdb;
  this.USING_TAXONOMY=useTaxonomy;
  this.subsetTipInfo=subsetInfo;
  this.sourceForTrees=sources;
  long w=new Date().getTime();
  validateTrees(trees);
  createTreeIdRankMap(trees);
  if (USING_TAXONOMY) {
    explodedTipsHash=TipExploder.explodeTipsReturnHash(trees,gdb);
    reduceExplodedTipsHash();
  }
  gatherTreeData(trees);
  if (USING_TAXONOMY) {
    mapTreeNodesToTaxa(trees);
  }
  if (USING_TAXONOMY) {
    populateTaxonomyGraphNodesMap(trees);
  }
  gatherBipartitions(trees);
  identifyNestedChildBiparts(trees);
  findAllPaths();
  createNodesUsingPaths();
  mapTreeRootNodes(trees);
  generateMRCAChildOfs();
  mapNonRootNodes(trees);
  removeUnusedNodesAndRels();
  System.out.println("String_Node_Str" + (new Date().getTime() - w) / 1000 + "String_Node_Str");
}