Program: 82464
Project: 82464
Buggy source:
public static void fetchRow(IndexReader reader,String table,Selector selector,FetchResult fetchResult) throws CorruptIndexException, IOException {
  fetchResult.table=table;
  String locationId=selector.locationId;
  int lastSlash=locationId.lastIndexOf('/');
  int docId=Integer.parseInt(locationId.substring(lastSlash + 1));
  if (docId >= reader.maxDoc()) {
    throw new RuntimeException("String_Node_Str" + locationId + "String_Node_Str"+ docId+ "String_Node_Str");
  }
  boolean returnIdsOnly=false;
  if (selector.columnFamiliesToFetch.isEmpty() && selector.columnsToFetch.isEmpty()) {
    returnIdsOnly=true;
  }
  Bits liveDocs=MultiFields.getLiveDocs(reader);
  ResetableDocumentStoredFieldVisitor fieldVisitor=getFieldSelector(selector);
  if (selector.isRecordOnly()) {
    if (liveDocs != null && !liveDocs.get(docId)) {
      fetchResult.exists=false;
      fetchResult.deleted=true;
      return;
    }
 else {
      fetchResult.exists=true;
      fetchResult.deleted=false;
      reader.document(docId,fieldVisitor);
      Document document=fieldVisitor.getDocument();
      fieldVisitor.reset();
      fetchResult.recordResult=getRecord(document);
      return;
    }
  }
 else {
    if (liveDocs != null && !liveDocs.get(docId)) {
      fetchResult.exists=false;
      fetchResult.deleted=true;
      return;
    }
 else {
      fetchResult.exists=true;
      fetchResult.deleted=false;
      String rowId=getRowId(reader,docId);
      Term term=new Term(ROW_ID,rowId);
      if (returnIdsOnly) {
        int recordCount=BlurUtil.countDocuments(reader,term);
        fetchResult.rowResult=new FetchRowResult();
        fetchResult.rowResult.row=new Row(rowId,null,recordCount);
      }
 else {
        List<Document> docs=BlurUtil.fetchDocuments(reader,term,fieldVisitor,selector);
        fetchResult.rowResult=new FetchRowResult(getRow(docs));
      }
      return;
    }
  }
}

Fixed version (ground truth):
public static void fetchRow(IndexReader reader,String table,Selector selector,FetchResult fetchResult) throws CorruptIndexException, IOException {
  fetchResult.table=table;
  String locationId=selector.locationId;
  int lastSlash=locationId.lastIndexOf('/');
  int docId=Integer.parseInt(locationId.substring(lastSlash + 1));
  if (docId >= reader.maxDoc()) {
    throw new RuntimeException("String_Node_Str" + locationId + "String_Node_Str"+ docId+ "String_Node_Str");
  }
  boolean returnIdsOnly=false;
  if (selector.columnFamiliesToFetch != null && selector.columnsToFetch != null && selector.columnFamiliesToFetch.isEmpty() && selector.columnsToFetch.isEmpty()) {
    returnIdsOnly=true;
  }
  Bits liveDocs=MultiFields.getLiveDocs(reader);
  ResetableDocumentStoredFieldVisitor fieldVisitor=getFieldSelector(selector);
  if (selector.isRecordOnly()) {
    if (liveDocs != null && !liveDocs.get(docId)) {
      fetchResult.exists=false;
      fetchResult.deleted=true;
      return;
    }
 else {
      fetchResult.exists=true;
      fetchResult.deleted=false;
      reader.document(docId,fieldVisitor);
      Document document=fieldVisitor.getDocument();
      fieldVisitor.reset();
      fetchResult.recordResult=getRecord(document);
      return;
    }
  }
 else {
    if (liveDocs != null && !liveDocs.get(docId)) {
      fetchResult.exists=false;
      fetchResult.deleted=true;
      return;
    }
 else {
      fetchResult.exists=true;
      fetchResult.deleted=false;
      String rowId=getRowId(reader,docId);
      Term term=new Term(ROW_ID,rowId);
      if (returnIdsOnly) {
        int recordCount=BlurUtil.countDocuments(reader,term);
        fetchResult.rowResult=new FetchRowResult();
        fetchResult.rowResult.row=new Row(rowId,null,recordCount);
      }
 else {
        List<Document> docs=BlurUtil.fetchDocuments(reader,term,fieldVisitor,selector);
        fetchResult.rowResult=new FetchRowResult(getRow(docs));
      }
      return;
    }
  }
}