Program: 50109
Project: 50109
Buggy source:
public int loadTreeAnalysis(String[] args) throws Exception {
  if (args.length < 4) {
    System.out.println("String_Node_Str");
    return 1;
  }
  String filename=args[1];
  String taxaloaded=args[3];
  boolean tloaded=true;
  boolean isSubset=false;
  if (taxaloaded.toLowerCase().equals("String_Node_Str")) {
    tloaded=false;
  }
  if (args.length == 5) {
    isSubset=true;
  }
  String graphname=args[2];
  int treeCounter=0;
  String ts="String_Node_Str";
  List<Tree> jt=new ArrayList<Tree>();
  MessageLogger messageLogger=new MessageLogger("String_Node_Str");
  Map<TreeNode,String> subsetTipInfo=null;
  Map<Tree,String> sourceForTrees=null;
  try {
    BufferedReader br=new BufferedReader(new FileReader(filename));
    boolean sourceAvail=false;
    String first=br.readLine();
    if (first.split("String_Node_Str").length > 1 && first.split("String_Node_Str")[0].length() > 0) {
      sourceAvail=true;
      sourceForTrees=new HashMap<Tree,String>();
    }
    br.close();
    br=new BufferedReader(new FileReader(filename));
    System.out.println("String_Node_Str" + sourceAvail + "String_Node_Str");
    while ((ts=br.readLine()) != null) {
      if (ts.length() > 1) {
        String source=null;
        if (sourceAvail) {
          String[] spls=ts.split("String_Node_Str");
          source=spls[0];
          ts=spls[1];
        }
        Tree tt=jade.tree.TreeReader.readTree(ts);
        if (tt.internalNodeCount() < 2) {
          System.out.println("String_Node_Str" + tt);
          continue;
        }
        if (((String)tt.getRoot().getLabel()).contains("String_Node_Str")) {
          if (subsetTipInfo == null)           subsetTipInfo=new HashMap<TreeNode,String>();
          String[] spls=((String)tt.getRoot().getLabel()).split("String_Node_Str");
          String subset=spls[1];
          ((jade.tree.JadeNode)tt.getRoot()).setName("String_Node_Str");
          subsetTipInfo.put(tt.getRoot(),subset);
        }
        for (        TreeNode jn : tt.externalNodes()) {
          if (((String)jn.getLabel()).contains("String_Node_Str")) {
            String[] spls=((String)jn.getLabel()).split("String_Node_Str");
            String id=spls[1];
            ((jade.tree.JadeNode)jn).setName(id);
          }
        }
        for (        TreeNode jn : tt.externalNodes()) {
          if (((String)jn.getLabel()).contains("String_Node_Str")) {
            if (subsetTipInfo == null) {
              subsetTipInfo=new HashMap<TreeNode,String>();
            }
            String[] spls=((String)jn.getLabel()).split("String_Node_Str");
            String name=spls[0];
            String subset=spls[1];
            ((jade.tree.JadeNode)jn).setName(name);
            subsetTipInfo.put(jn,subset);
          }
        }
        if (sourceAvail) {
          sourceForTrees.put(tt,source);
        }
        jt.add(tt);
        treeCounter++;
      }
    }
    br.close();
  }
 catch (  FileNotFoundException e) {
    System.err.println("String_Node_Str" + args[1] + "String_Node_Str");
    return -1;
  }
catch (  IOException ioe) {
  }
  if (treeCounter == 0) {
    System.err.println("String_Node_Str" + args[1] + "String_Node_Str");
    return -1;
  }
  System.out.println(treeCounter + "String_Node_Str");
  GraphDatabaseAgent gdb=new GraphDatabaseAgent(graphname);
  System.out.println("String_Node_Str");
  BipartOracle bo=new BipartOracle(jt,gdb,tloaded,sourceForTrees,subsetTipInfo,isSubset,filename);
  gdb.shutdownDb();
  return 0;
}

Fixed version (ground truth):
public int loadTreeAnalysis(String[] args) throws Exception {
  if (args.length < 4) {
    System.out.println("String_Node_Str");
    return 1;
  }
  String filename=args[1];
  String taxaloaded=args[3];
  boolean tloaded=true;
  boolean isSubset=false;
  if (taxaloaded.toLowerCase().equals("String_Node_Str")) {
    tloaded=false;
  }
  if (args.length == 5) {
    isSubset=true;
  }
  String graphname=args[2];
  int treeCounter=0;
  String ts="String_Node_Str";
  List<Tree> jt=new ArrayList<Tree>();
  MessageLogger messageLogger=new MessageLogger("String_Node_Str");
  Map<TreeNode,String> subsetTipInfo=null;
  Map<Tree,String> sourceForTrees=null;
  try {
    BufferedReader br=new BufferedReader(new FileReader(filename));
    boolean sourceAvail=false;
    String first=br.readLine();
    if (first.split("String_Node_Str").length > 1 && first.split("String_Node_Str")[0].length() > 0) {
      sourceAvail=true;
      sourceForTrees=new HashMap<Tree,String>();
    }
    br.close();
    br=new BufferedReader(new FileReader(filename));
    System.out.println("String_Node_Str" + sourceAvail + "String_Node_Str");
    while ((ts=br.readLine()) != null) {
      if (ts.length() > 1) {
        String source=null;
        if (sourceAvail) {
          String[] spls=ts.split("String_Node_Str");
          source=spls[0].replace("String_Node_Str","String_Node_Str");
          ts=spls[1];
        }
        Tree tt=jade.tree.TreeReader.readTree(ts);
        if (tt.internalNodeCount() < 2) {
          System.out.println("String_Node_Str" + tt);
          continue;
        }
        if (((String)tt.getRoot().getLabel()).contains("String_Node_Str")) {
          if (subsetTipInfo == null)           subsetTipInfo=new HashMap<TreeNode,String>();
          String[] spls=((String)tt.getRoot().getLabel()).split("String_Node_Str");
          String subset=spls[1];
          ((jade.tree.JadeNode)tt.getRoot()).setName("String_Node_Str");
          subsetTipInfo.put(tt.getRoot(),subset);
        }
        for (        TreeNode jn : tt.externalNodes()) {
          if (((String)jn.getLabel()).contains("String_Node_Str")) {
            String[] spls=((String)jn.getLabel()).split("String_Node_Str");
            String id=spls[1];
            ((jade.tree.JadeNode)jn).setName(id);
          }
        }
        for (        TreeNode jn : tt.externalNodes()) {
          if (((String)jn.getLabel()).contains("String_Node_Str")) {
            if (subsetTipInfo == null) {
              subsetTipInfo=new HashMap<TreeNode,String>();
            }
            String[] spls=((String)jn.getLabel()).split("String_Node_Str");
            String name=spls[0];
            String subset=spls[1];
            ((jade.tree.JadeNode)jn).setName(name);
            subsetTipInfo.put(jn,subset);
          }
        }
        if (sourceAvail) {
          sourceForTrees.put(tt,source);
        }
        jt.add(tt);
        treeCounter++;
      }
    }
    br.close();
  }
 catch (  FileNotFoundException e) {
    System.err.println("String_Node_Str" + args[1] + "String_Node_Str");
    return -1;
  }
catch (  IOException ioe) {
  }
  if (treeCounter == 0) {
    System.err.println("String_Node_Str" + args[1] + "String_Node_Str");
    return -1;
  }
  System.out.println(treeCounter + "String_Node_Str");
  GraphDatabaseAgent gdb=new GraphDatabaseAgent(graphname);
  System.out.println("String_Node_Str");
  BipartOracle bo=new BipartOracle(jt,gdb,tloaded,sourceForTrees,subsetTipInfo,isSubset,filename);
  gdb.shutdownDb();
  return 0;
}