Program: 131564
Project: 131564
Buggy source:
public void addZhaoPairFeatures(int pidx,int aidx,BinaryStrFVBuilder feats){
  System.out.println("String_Node_Str");
  ZhaoObject zhaoPred=new ZhaoObject(pidx,parents,sent,prm,"String_Node_Str");
  ZhaoObject zhaoArg=new ZhaoObject(aidx,parents,sent,prm,"String_Node_Str");
  ZhaoObject zhaoPredArgPair=new ZhaoObject(pidx,aidx,zhaoPred,zhaoArg,parents);
  ZhaoObject zhaoPredLast;
  ZhaoObject zhaoPredNext;
  ZhaoObject zhaoPredParent;
  ZhaoObject zhaoArgLast;
  ZhaoObject zhaoArgNext;
  ZhaoObject zhaoArgParent;
  if (pidx - 1 > 0) {
    zhaoPredLast=new ZhaoObject(pidx - 1,parents,sent,prm,"String_Node_Str");
  }
 else {
    zhaoPredLast=new ZhaoObject("String_Node_Str");
  }
  if (pidx + 1 < sent.size()) {
    zhaoPredNext=new ZhaoObject(pidx + 1,parents,sent,prm,"String_Node_Str");
  }
 else {
    zhaoPredNext=new ZhaoObject("String_Node_Str");
  }
  if (zhaoPred.getParent() < 0) {
    zhaoPredParent=new ZhaoObject("String_Node_Str");
  }
 else {
    zhaoPredParent=new ZhaoObject(zhaoPred.getParent(),parents,sent,prm,"String_Node_Str");
  }
  if (aidx - 1 > 0) {
    zhaoArgLast=new ZhaoObject(aidx - 1,parents,sent,prm,"String_Node_Str");
  }
 else {
    zhaoArgLast=new ZhaoObject("String_Node_Str");
  }
  if (aidx + 1 < sent.size()) {
    zhaoArgNext=new ZhaoObject(aidx + 1,parents,sent,prm,"String_Node_Str");
  }
 else {
    zhaoArgNext=new ZhaoObject("String_Node_Str");
  }
  if (zhaoArg.getParent() < 0) {
    zhaoArgParent=new ZhaoObject("String_Node_Str");
  }
 else {
    zhaoArgParent=new ZhaoObject(zhaoArg.getParent(),parents,sent,prm,"String_Node_Str");
  }
  ArrayList<Integer> predChildren=zhaoPred.getChildren();
  ArrayList<Integer> argChildren=zhaoArg.getChildren();
  List<Pair<Integer,Dir>> betweenPath=zhaoPredArgPair.getBetweenPath();
  List<Pair<Integer,Dir>> dpPathPred=zhaoPredArgPair.getDpPathPred();
  List<Pair<Integer,Dir>> dpPathArg=zhaoPredArgPair.getDpPathArg();
  ArrayList<Integer> linePath=zhaoPredArgPair.getLinePath();
  ArrayList<CoNLL09Token> argChildrenTokens=getTokens(argChildren);
  ArrayList<CoNLL09Token> betweenPathTokens=getTokens(betweenPath);
  ArrayList<CoNLL09Token> linePathCoNLL=getTokens(linePath);
  if (prm.withSupervision) {
    addZhaoSupervisedPredFeats(zhaoPred,zhaoArg,zhaoPredLast,zhaoPredNext,feats);
    addZhaoSupervisedArgFeats(zhaoPred,zhaoArg,zhaoPredLast,zhaoPredNext,zhaoArgLast,zhaoArgNext,zhaoArgParent,argChildrenTokens,feats);
    addZhaoSupervisedCombinedFeats(zhaoPred,zhaoArg,feats,betweenPathTokens,linePathCoNLL,dpPathArg);
  }
  addZhaoUnsupervisedPredFeats(zhaoPred,zhaoPredLast,zhaoPredNext,feats);
  addZhaoUnsupervisedArgFeats(zhaoArg,zhaoArgLast,zhaoArgNext,argChildrenTokens,feats);
  addZhaoUnsupervisedCombinedFeats(linePath,linePathCoNLL,feats);
}

Fixed version (ground truth):
public void addZhaoPairFeatures(int pidx,int aidx,BinaryStrFVBuilder feats){
  ZhaoObject zhaoPred=new ZhaoObject(pidx,parents,sent,prm,"String_Node_Str");
  ZhaoObject zhaoArg=new ZhaoObject(aidx,parents,sent,prm,"String_Node_Str");
  ZhaoObject zhaoPredArgPair=new ZhaoObject(pidx,aidx,zhaoPred,zhaoArg,parents);
  ZhaoObject zhaoPredLast;
  ZhaoObject zhaoPredNext;
  ZhaoObject zhaoPredParent;
  ZhaoObject zhaoArgLast;
  ZhaoObject zhaoArgNext;
  ZhaoObject zhaoArgParent;
  if (pidx - 1 > 0) {
    zhaoPredLast=new ZhaoObject(pidx - 1,parents,sent,prm,"String_Node_Str");
  }
 else {
    zhaoPredLast=new ZhaoObject("String_Node_Str");
  }
  if (pidx + 1 < sent.size()) {
    zhaoPredNext=new ZhaoObject(pidx + 1,parents,sent,prm,"String_Node_Str");
  }
 else {
    zhaoPredNext=new ZhaoObject("String_Node_Str");
  }
  if (zhaoPred.getParent() < 0) {
    zhaoPredParent=new ZhaoObject("String_Node_Str");
  }
 else {
    zhaoPredParent=new ZhaoObject(zhaoPred.getParent(),parents,sent,prm,"String_Node_Str");
  }
  if (aidx - 1 > 0) {
    zhaoArgLast=new ZhaoObject(aidx - 1,parents,sent,prm,"String_Node_Str");
  }
 else {
    zhaoArgLast=new ZhaoObject("String_Node_Str");
  }
  if (aidx + 1 < sent.size()) {
    zhaoArgNext=new ZhaoObject(aidx + 1,parents,sent,prm,"String_Node_Str");
  }
 else {
    zhaoArgNext=new ZhaoObject("String_Node_Str");
  }
  if (zhaoArg.getParent() < 0) {
    zhaoArgParent=new ZhaoObject("String_Node_Str");
  }
 else {
    zhaoArgParent=new ZhaoObject(zhaoArg.getParent(),parents,sent,prm,"String_Node_Str");
  }
  ArrayList<Integer> predChildren=zhaoPred.getChildren();
  ArrayList<Integer> argChildren=zhaoArg.getChildren();
  List<Pair<Integer,Dir>> betweenPath=zhaoPredArgPair.getBetweenPath();
  List<Pair<Integer,Dir>> dpPathPred=zhaoPredArgPair.getDpPathPred();
  List<Pair<Integer,Dir>> dpPathArg=zhaoPredArgPair.getDpPathArg();
  ArrayList<Integer> linePath=zhaoPredArgPair.getLinePath();
  ArrayList<CoNLL09Token> argChildrenTokens=getTokens(argChildren);
  ArrayList<CoNLL09Token> betweenPathTokens=getTokens(betweenPath);
  ArrayList<CoNLL09Token> linePathCoNLL=getTokens(linePath);
  if (prm.withSupervision) {
    addZhaoSupervisedPredFeats(zhaoPred,zhaoArg,zhaoPredLast,zhaoPredNext,feats);
    addZhaoSupervisedArgFeats(zhaoPred,zhaoArg,zhaoPredLast,zhaoPredNext,zhaoArgLast,zhaoArgNext,zhaoArgParent,argChildrenTokens,feats);
    addZhaoSupervisedCombinedFeats(zhaoPred,zhaoArg,feats,betweenPathTokens,linePathCoNLL,dpPathArg);
  }
  addZhaoUnsupervisedPredFeats(zhaoPred,zhaoPredLast,zhaoPredNext,feats);
  addZhaoUnsupervisedArgFeats(zhaoArg,zhaoArgLast,zhaoArgNext,argChildrenTokens,feats);
  addZhaoUnsupervisedCombinedFeats(linePath,linePathCoNLL,feats);
}