Program: 161281
Project: 161281
Buggy source:
@Override public Map<String,Object> getAnnotations(final VariantContext ctx){
  if (!ctx.isVariant())   return Collections.emptyMap();
  final int contig=contig2eigen(ctx.getContig());
  if (contig < 1)   return Collections.emptyMap();
  try {
    if (this.codingFeatureReader == null) {
      this.codingFeatureReader=new TabixFeatureReader<>(new File(this.eigenDirectory,getTabixPrefix() + "String_Node_Str").getPath(),new CodingFeatureCodec());
    }
    if (this.prev_contig == -1 || prev_contig != contig) {
      CloserUtil.close(this.nonCodingFeatureReader);
      this.nonCodingFeatureReader=new TabixFeatureReader<>(getNonCodingFileForContig(contig).getPath(),new NonCodingFeatureCodec());
      this.prev_contig=contig;
    }
    final Map<Allele,NonCodingFeature> alt2nonCoding=new HashMap<>();
    CloseableTribbleIterator<NonCodingFeature> iter1=this.nonCodingFeatureReader.query(String.valueOf(contig),ctx.getStart(),ctx.getEnd());
    while (iter1.hasNext()) {
      NonCodingFeature feat=iter1.next();
      if (feat == null || !feat.accept(ctx))       continue;
      alt2nonCoding.put(feat.alt,feat);
    }
    iter1.close();
    final Map<Allele,CodingFeature> alt2coding=new HashMap<>();
    CloseableTribbleIterator<CodingFeature> iter2=this.codingFeatureReader.query(String.valueOf(contig),ctx.getStart(),ctx.getEnd());
    while (iter2.hasNext()) {
      CodingFeature feat=iter2.next();
      if (feat == null || !feat.accept(ctx))       continue;
      alt2coding.put(feat.alt,feat);
    }
    iter2.close();
    if (alt2nonCoding.isEmpty() && alt2coding.isEmpty())     return Collections.emptyMap();
    final List<Allele> alternateAlleles=ctx.getAlternateAlleles();
    final Map<String,Object> map=new HashMap<>();
    for (int side=0; side < 2; ++side) {
      for (int i=0; i < (side == 0 ? noncodingheaderlines.size() : codingheaderlines.size()); ++i) {
        final VCFInfoHeaderLine vihl=(side == 0 ? noncodingheaderlines.get(i) : codingheaderlines.get(i));
        final List<Object> atts=new ArrayList<>(alternateAlleles.size());
        boolean found_one=false;
        for (int altn=0; altn < alternateAlleles.size(); ++altn) {
          final Allele alt=alternateAlleles.get(altn);
          final AbstractFeature feat=(side == 0 ? alt2nonCoding.get(alt) : alt2coding.get(alt));
          if (feat == null) {
            atts.add("String_Node_Str");
            continue;
          }
          final String token=feat.get(4 + i);
          if (token == null || token.isEmpty() || token.equals("String_Node_Str")) {
            atts.add("String_Node_Str");
            continue;
          }
 else           if (vihl.getType() == VCFHeaderLineType.String) {
            found_one=true;
            atts.add(token.replace(',','|'));
          }
 else {
            try {
              Float dbl=new Float(token);
              atts.add(dbl);
              found_one=true;
            }
 catch (            NumberFormatException err) {
              throw new IOException("String_Node_Str" + token + "String_Node_Str"+ vihl);
            }
          }
        }
        if (!found_one) {
        }
 else         if (vihl.getCountType() != VCFHeaderLineCount.R) {
          map.put(vihl.getID(),new ArrayList<>(new HashSet<>(atts)));
        }
 else {
          map.put(vihl.getID(),atts);
        }
      }
    }
    return map;
  }
 catch (  final IOException err) {
    throw new RuntimeException(err);
  }
}

Fixed version (ground truth):
@Override public Map<String,Object> getAnnotations(final VariantContext ctx){
  if (!ctx.isVariant())   return Collections.emptyMap();
  final int contig=contig2eigen(ctx.getContig());
  if (contig < 1)   return Collections.emptyMap();
  try {
    if (this.codingFeatureReader == null) {
      this.codingFeatureReader=new TabixFeatureReader<>(new File(this.eigenDirectory,getTabixPrefix() + "String_Node_Str").getPath(),new CodingFeatureCodec());
    }
    if (this.prev_contig == -1 || prev_contig != contig) {
      CloserUtil.close(this.nonCodingFeatureReader);
      this.nonCodingFeatureReader=new TabixFeatureReader<>(getNonCodingFileForContig(contig).getPath(),new NonCodingFeatureCodec());
      this.prev_contig=contig;
    }
    final Map<Allele,NonCodingFeature> alt2nonCoding=new HashMap<>();
    CloseableTribbleIterator<NonCodingFeature> iter1=this.nonCodingFeatureReader.query(String.valueOf(contig),ctx.getStart(),ctx.getEnd());
    while (iter1.hasNext()) {
      NonCodingFeature feat=iter1.next();
      if (feat == null || !feat.accept(ctx))       continue;
      alt2nonCoding.put(feat.alt,feat);
    }
    iter1.close();
    final Map<Allele,CodingFeature> alt2coding=new HashMap<>();
    CloseableTribbleIterator<CodingFeature> iter2=this.codingFeatureReader.query(String.valueOf(contig),ctx.getStart(),ctx.getEnd());
    while (iter2.hasNext()) {
      CodingFeature feat=iter2.next();
      if (feat == null || !feat.accept(ctx))       continue;
      alt2coding.put(feat.alt,feat);
    }
    iter2.close();
    if (alt2nonCoding.isEmpty() && alt2coding.isEmpty())     return Collections.emptyMap();
    final List<Allele> alternateAlleles=ctx.getAlternateAlleles();
    final Map<String,Object> map=new HashMap<>();
    for (int side=0; side < 2; ++side) {
      for (int i=0; i < (side == 0 ? noncodingheaderlines.size() : codingheaderlines.size()); ++i) {
        final VCFInfoHeaderLine vihl=(side == 0 ? noncodingheaderlines.get(i) : codingheaderlines.get(i));
        final List<Object> atts=new ArrayList<>(alternateAlleles.size());
        boolean found_one=false;
        for (int altn=0; altn < alternateAlleles.size(); ++altn) {
          final Allele alt=alternateAlleles.get(altn);
          final AbstractFeature feat=(side == 0 ? alt2nonCoding.get(alt) : alt2coding.get(alt));
          if (feat == null) {
            atts.add("String_Node_Str");
            continue;
          }
          final String token=feat.get(4 + i);
          if (token == null || token.isEmpty() || token.equals("String_Node_Str")) {
            atts.add("String_Node_Str");
            continue;
          }
 else           if (vihl.getType() == VCFHeaderLineType.String) {
            found_one=true;
            atts.add(token.replace(',','|'));
          }
 else {
            try {
              Float dbl=new Float(token);
              atts.add(dbl);
              found_one=true;
            }
 catch (            NumberFormatException err) {
              throw new IOException("String_Node_Str" + token + "String_Node_Str"+ vihl);
            }
          }
        }
        if (!found_one) {
        }
 else         if (vihl.getCountType() == VCFHeaderLineCount.R) {
          map.put(vihl.getID(),new ArrayList<>(new LinkedHashSet<>(atts)));
        }
 else {
          if (atts.size() != ctx.getAlternateAlleles().size()) {
            System.err.println("String_Node_Str");
          }
          map.put(vihl.getID(),atts);
        }
      }
    }
    return map;
  }
 catch (  final IOException err) {
    throw new RuntimeException(err);
  }
}