Program: 131286
Project: 131286
Buggy source:
@Override public void annotate(AnnoSentenceCollection sents){
  if (mat == null) {
    throw new IllegalStateException("String_Node_Str");
  }
  int numEdgesTot=0;
  int numEdgesKept=0;
  for (  AnnoSentence sent : sents) {
    DepEdgeMask mask=sent.getDepEdgeMask();
    if (mask == null) {
      mask=new DepEdgeMask(sent.size(),true);
      sent.setDepEdgeMask(mask);
    }
    LabelSequence<String> tagSeq=new LabelSequence<String>(alphabet,sent.getPosTags());
    int[] tags=tagSeq.getLabelIds();
    for (int i=0; i < tags.length; i++) {
      for (int j=0; j < tags.length; j++) {
        if (tags[i] >= mat.getNumRows() || tags[j] >= mat.getNumRows()) {
          continue;
        }
        int dist=Math.abs(i - j);
        if (dist > mat.get(tags[i],tags[j])) {
          mask.setIsPruned(i,j,true);
          if (log.isTraceEnabled()) {
            log.trace(String.format("String_Node_Str",alphabet.lookupObject(tags[i]),alphabet.lookupObject(tags[j]),dist));
          }
        }
 else {
          numEdgesKept++;
        }
        numEdgesTot++;
      }
    }
    numEdgesTot+=sent.size();
    if (InsideOutsideDepParse.singleRoot && !mask.allowsSinglyRootedTrees()) {
      log.warn("String_Node_Str");
      log.trace(String.format("String_Node_Str",sent.getWords().toString(),mask.toString()));
      if (sent.getParents() != null) {
        log.trace("String_Node_Str" + Arrays.toString(sent.getParents()));
      }
    }
  }
  int numEdgesPruned=numEdgesTot - numEdgesKept;
  log.info(String.format("String_Node_Str",numEdgesPruned,numEdgesTot,(double)numEdgesPruned / numEdgesTot));
}

Fixed version (ground truth):
@Override public void annotate(AnnoSentenceCollection sents){
  if (mat == null) {
    throw new IllegalStateException("String_Node_Str");
  }
  int numEdgesTot=0;
  int numEdgesKept=0;
  for (  AnnoSentence sent : sents) {
    DepEdgeMask mask=sent.getDepEdgeMask();
    if (mask == null) {
      mask=new DepEdgeMask(sent.size(),true);
      sent.setDepEdgeMask(mask);
    }
    LabelSequence<String> tagSeq=new LabelSequence<String>(alphabet,sent.getPosTags());
    int[] tags=tagSeq.getLabelIds();
    for (int i=0; i < tags.length; i++) {
      for (int j=0; j < tags.length; j++) {
        if (tags[i] >= mat.getNumRows() || tags[j] >= mat.getNumRows()) {
          continue;
        }
        int dist=Math.abs(i - j);
        if (dist > mat.get(tags[i],tags[j])) {
          mask.setIsPruned(i,j,true);
          if (log.isTraceEnabled()) {
            log.trace(String.format("String_Node_Str",alphabet.lookupObject(tags[i]),alphabet.lookupObject(tags[j]),dist));
          }
        }
 else {
          numEdgesKept++;
        }
        numEdgesTot++;
      }
    }
    numEdgesTot+=sent.size();
    if (InsideOutsideDepParse.singleRoot && !mask.allowsSingleRootTrees()) {
      log.warn("String_Node_Str");
      log.trace(String.format("String_Node_Str",sent.getWords().toString(),mask.toString()));
      if (sent.getParents() != null) {
        log.trace("String_Node_Str" + Arrays.toString(sent.getParents()));
      }
    }
 else     if (!InsideOutsideDepParse.singleRoot && !mask.allowsMultiRootTrees()) {
      log.warn("String_Node_Str");
    }
  }
  int numEdgesPruned=numEdgesTot - numEdgesKept;
  log.info(String.format("String_Node_Str",numEdgesPruned,numEdgesTot,(double)numEdgesPruned / numEdgesTot));
}