Program: 86296
Project: 86296
Buggy source:
protected SearchRequestResult parse_search(String html,int page) throws OpacErrorException {
  Document doc=Jsoup.parse(html);
  updateSearchSetValue(doc);
  if (doc.select("String_Node_Str").size() > 0) {
    if (doc.select("String_Node_Str").text().trim().equals("String_Node_Str")) {
      return new SearchRequestResult(new ArrayList<SearchResult>(),0,1,1);
    }
 else {
      throw new OpacErrorException(doc.select("String_Node_Str").first().text().trim());
    }
  }
  reusehtml=html;
  int results_total=-1;
  String resultnumstr=doc.select("String_Node_Str").first().text();
  Pattern p=Pattern.compile("String_Node_Str");
  Matcher m=p.matcher(resultnumstr);
  if (m.find()) {
    resultnumstr=m.group();
  }
  if (resultnumstr.contains("String_Node_Str")) {
    results_total=Integer.parseInt(resultnumstr.replaceAll("String_Node_Str","String_Node_Str"));
  }
 else   if (resultnumstr.contains("String_Node_Str")) {
    results_total=Integer.parseInt(resultnumstr.replaceAll("String_Node_Str","String_Node_Str"));
  }
 else {
    results_total=Integer.parseInt(resultnumstr);
  }
  List<SearchResult> results=new ArrayList<SearchResult>();
  if (results_total == 1) {
    try {
      DetailledItem singleResult=parse_result(html);
      SearchResult sr=new SearchResult();
      sr.setType(getMediaTypeInSingleResult(html));
      sr.setInnerhtml("String_Node_Str" + singleResult.getTitle() + "String_Node_Str"+ singleResult.getDetails().get(0).getContent());
      results.add(sr);
    }
 catch (    IOException e) {
      e.printStackTrace();
    }
  }
  Elements table=doc.select("String_Node_Str");
  Elements links=doc.select("String_Node_Str");
  boolean haslink=false;
  for (int i=0; i < links.size(); i++) {
    Element node=links.get(i);
    if (node.hasAttr("String_Node_Str") & node.attr("String_Node_Str").contains("String_Node_Str") && !haslink) {
      haslink=true;
      try {
        List<NameValuePair> anyurl=URLEncodedUtils.parse(new URI(node.attr("String_Node_Str")),ENCODING);
        for (        NameValuePair nv : anyurl) {
          if (nv.getName().equals("String_Node_Str")) {
            break;
          }
        }
      }
 catch (      Exception e) {
        e.printStackTrace();
      }
    }
  }
  for (int i=0; i < table.size(); i++) {
    Element tr=table.get(i);
    SearchResult sr=new SearchResult();
    if (tr.select("String_Node_Str").size() > 0) {
      String[] fparts=tr.select("String_Node_Str").get(0).attr("String_Node_Str").split("String_Node_Str");
      String fname=fparts[fparts.length - 1];
      if (data.has("String_Node_Str")) {
        try {
          sr.setType(MediaType.valueOf(data.getJSONObject("String_Node_Str").getString(fname)));
        }
 catch (        JSONException e) {
          sr.setType(defaulttypes.get(fname.toLowerCase(Locale.GERMAN).replace("String_Node_Str","String_Node_Str").replace("String_Node_Str","String_Node_Str").replace("String_Node_Str","String_Node_Str")));
        }
catch (        IllegalArgumentException e) {
          sr.setType(defaulttypes.get(fname.toLowerCase(Locale.GERMAN).replace("String_Node_Str","String_Node_Str").replace("String_Node_Str","String_Node_Str").replace("String_Node_Str","String_Node_Str")));
        }
      }
 else {
        sr.setType(defaulttypes.get(fname.toLowerCase(Locale.GERMAN).replace("String_Node_Str","String_Node_Str").replace("String_Node_Str","String_Node_Str").replace("String_Node_Str","String_Node_Str")));
      }
    }
    Element middlething=tr.child(2);
    List<Node> children=middlething.childNodes();
    int childrennum=children.size();
    List<String[]> strings=new ArrayList<String[]>();
    for (int ch=0; ch < childrennum; ch++) {
      Node node=children.get(ch);
      if (node instanceof TextNode) {
        String text=((TextNode)node).text().trim();
        if (text.length() > 3)         strings.add(new String[]{"String_Node_Str","String_Node_Str",text});
      }
 else       if (node instanceof Element) {
        List<Node> subchildren=node.childNodes();
        for (int j=0; j < subchildren.size(); j++) {
          Node subnode=subchildren.get(j);
          if (subnode instanceof TextNode) {
            String text=((TextNode)subnode).text().trim();
            if (text.length() > 3)             strings.add(new String[]{((Element)node).tag().getName(),"String_Node_Str",text,((Element)node).className(),((Element)node).attr("String_Node_Str")});
          }
 else           if (subnode instanceof Element) {
            String text=((Element)subnode).text().trim();
            if (text.length() > 3)             strings.add(new String[]{((Element)node).tag().getName(),((Element)subnode).tag().getName(),text,((Element)node).className(),((Element)node).attr("String_Node_Str")});
          }
        }
      }
    }
    StringBuilder description=new StringBuilder();
    int k=0;
    for (    String[] part : strings) {
      if (part[0] == "String_Node_Str" && k == 0) {
        description.append("String_Node_Str" + part[2] + "String_Node_Str");
      }
 else       if (k < 3) {
        description.append("String_Node_Str" + part[2]);
      }
      k++;
    }
    sr.setInnerhtml(description.toString());
    sr.setNr(10 * (page - 1) + i);
    sr.setId(null);
    results.add(sr);
  }
  resultcount=results.size();
  return new SearchRequestResult(results,results_total,page);
}

Fixed version (ground truth):
protected SearchRequestResult parse_search(String html,int page) throws OpacErrorException {
  Document doc=Jsoup.parse(html);
  updateSearchSetValue(doc);
  if (doc.select("String_Node_Str").size() > 0) {
    if (doc.select("String_Node_Str").text().trim().equals("String_Node_Str")) {
      return new SearchRequestResult(new ArrayList<SearchResult>(),0,1,1);
    }
 else {
      throw new OpacErrorException(doc.select("String_Node_Str").first().text().trim());
    }
  }
  reusehtml=html;
  int results_total=-1;
  String resultnumstr=doc.select("String_Node_Str").first().text();
  Pattern p=Pattern.compile("String_Node_Str");
  Matcher m=p.matcher(resultnumstr);
  if (m.find()) {
    resultnumstr=m.group();
  }
  if (resultnumstr.contains("String_Node_Str")) {
    results_total=Integer.parseInt(resultnumstr.replaceAll("String_Node_Str","String_Node_Str"));
  }
 else   if (resultnumstr.contains("String_Node_Str")) {
    results_total=Integer.parseInt(resultnumstr.replaceAll("String_Node_Str","String_Node_Str"));
  }
 else {
    results_total=Integer.parseInt(resultnumstr);
  }
  List<SearchResult> results=new ArrayList<SearchResult>();
  if (results_total == 1) {
    try {
      DetailledItem singleResult=parse_result(html);
      SearchResult sr=new SearchResult();
      sr.setType(getMediaTypeInSingleResult(html));
      sr.setInnerhtml("String_Node_Str" + singleResult.getTitle() + "String_Node_Str"+ singleResult.getDetails().get(0).getContent());
      results.add(sr);
    }
 catch (    IOException e) {
      e.printStackTrace();
    }
  }
  Elements table=doc.select("String_Node_Str");
  Elements links=doc.select("String_Node_Str");
  boolean haslink=false;
  for (int i=0; i < links.size(); i++) {
    Element node=links.get(i);
    if (node.hasAttr("String_Node_Str") & node.attr("String_Node_Str").contains("String_Node_Str") && !haslink) {
      haslink=true;
      try {
        List<NameValuePair> anyurl=URLEncodedUtils.parse(new URI(node.attr("String_Node_Str")),getDefaultEncoding());
        for (        NameValuePair nv : anyurl) {
          if (nv.getName().equals("String_Node_Str")) {
            break;
          }
        }
      }
 catch (      Exception e) {
        e.printStackTrace();
      }
    }
  }
  for (int i=0; i < table.size(); i++) {
    Element tr=table.get(i);
    SearchResult sr=new SearchResult();
    if (tr.select("String_Node_Str").size() > 0) {
      String[] fparts=tr.select("String_Node_Str").get(0).attr("String_Node_Str").split("String_Node_Str");
      String fname=fparts[fparts.length - 1];
      if (data.has("String_Node_Str")) {
        try {
          sr.setType(MediaType.valueOf(data.getJSONObject("String_Node_Str").getString(fname)));
        }
 catch (        JSONException e) {
          sr.setType(defaulttypes.get(fname.toLowerCase(Locale.GERMAN).replace("String_Node_Str","String_Node_Str").replace("String_Node_Str","String_Node_Str").replace("String_Node_Str","String_Node_Str")));
        }
catch (        IllegalArgumentException e) {
          sr.setType(defaulttypes.get(fname.toLowerCase(Locale.GERMAN).replace("String_Node_Str","String_Node_Str").replace("String_Node_Str","String_Node_Str").replace("String_Node_Str","String_Node_Str")));
        }
      }
 else {
        sr.setType(defaulttypes.get(fname.toLowerCase(Locale.GERMAN).replace("String_Node_Str","String_Node_Str").replace("String_Node_Str","String_Node_Str").replace("String_Node_Str","String_Node_Str")));
      }
    }
    Element middlething=tr.child(2);
    List<Node> children=middlething.childNodes();
    int childrennum=children.size();
    List<String[]> strings=new ArrayList<String[]>();
    for (int ch=0; ch < childrennum; ch++) {
      Node node=children.get(ch);
      if (node instanceof TextNode) {
        String text=((TextNode)node).text().trim();
        if (text.length() > 3)         strings.add(new String[]{"String_Node_Str","String_Node_Str",text});
      }
 else       if (node instanceof Element) {
        List<Node> subchildren=node.childNodes();
        for (int j=0; j < subchildren.size(); j++) {
          Node subnode=subchildren.get(j);
          if (subnode instanceof TextNode) {
            String text=((TextNode)subnode).text().trim();
            if (text.length() > 3)             strings.add(new String[]{((Element)node).tag().getName(),"String_Node_Str",text,((Element)node).className(),((Element)node).attr("String_Node_Str")});
          }
 else           if (subnode instanceof Element) {
            String text=((Element)subnode).text().trim();
            if (text.length() > 3)             strings.add(new String[]{((Element)node).tag().getName(),((Element)subnode).tag().getName(),text,((Element)node).className(),((Element)node).attr("String_Node_Str")});
          }
        }
      }
    }
    StringBuilder description=new StringBuilder();
    int k=0;
    for (    String[] part : strings) {
      if (part[0] == "String_Node_Str" && k == 0) {
        description.append("String_Node_Str" + part[2] + "String_Node_Str");
      }
 else       if (k < 3) {
        description.append("String_Node_Str" + part[2]);
      }
      k++;
    }
    sr.setInnerhtml(description.toString());
    sr.setNr(10 * (page - 1) + i);
    sr.setId(null);
    results.add(sr);
  }
  resultcount=results.size();
  return new SearchRequestResult(results,results_total,page);
}