Program: 89474
Project: 89474
Buggy source:
public void run(Konto konto) throws ApplicationException {
  ArrayList<String> seiten=new ArrayList<String>();
  try {
    String username=konto.getKundennummer();
    String password=konto.getMeta(PROP_PASSWORD,null);
    if (username == null || username.length() == 0) {
      throw new ApplicationException(i18n.tr("String_Node_Str"));
    }
    try {
      if (password == null || password.length() == 0) {
        password=Application.getCallback().askPassword(getName());
      }
    }
 catch (    Exception e1) {
      e1.printStackTrace();
      throw new ApplicationException("String_Node_Str" + e1.getMessage());
    }
    final WebClient webClient=new WebClient(BrowserVersion.INTERNET_EXPLORER_8);
    webClient.setCssErrorHandler(new SilentCssErrorHandler());
    webClient.setRefreshHandler(new ThreadedRefreshHandler());
    webClient.getOptions().setJavaScriptEnabled(false);
    HtmlPage page=webClient.getPage("String_Node_Str");
    seiten.add(page.asXml());
    List<HtmlForm> forms=(List<HtmlForm>)page.getByXPath("String_Node_Str");
    if (forms.size() != 1) {
      throw new ApplicationException("String_Node_Str");
    }
    HtmlForm form=forms.get(0);
    form.getInputByName("String_Node_Str").setValueAttribute(username);
    form.getInputByName("String_Node_Str").setValueAttribute(password);
    HtmlInput input=form.getInputByName("String_Node_Str");
    page=input.click();
    seiten.add(page.asXml());
    try {
      page=page.getAnchorByText("String_Node_Str").click();
    }
 catch (    com.gargoylesoftware.htmlunit.ElementNotFoundException e) {
      return;
    }
    HashMap<String,String> infos=new HashMap<String,String>();
    DateFormat df=new SimpleDateFormat("String_Node_Str");
    for (    HtmlAnchor x : page.getAnchors()) {
      if (x.getAttribute("String_Node_Str").contains("String_Node_Str")) {
        infos.clear();
        page=x.click();
        seiten.add(page.asXml());
        DomNodeList<DomElement> list=page.getElementsByTagName("String_Node_Str");
        if (list.size() != 3) {
        }
        tohash(infos,(HtmlTable)list.get(2),false);
        tohash(infos,(HtmlTable)list.get(3),true);
        String[] kurs=((String)infos.get("String_Node_Str")).replaceAll("String_Node_Str","String_Node_Str").split("String_Node_Str");
        Date d;
        try {
          d=df.parse(infos.get("String_Node_Str").substring(0,10));
        }
 catch (        ParseException e) {
          throw new ApplicationException("String_Node_Str" + infos.get("String_Node_Str"));
        }
        Utils.addUmsatz(infos.get("String_Node_Str"),infos.get("String_Node_Str"),infos.get("String_Node_Str"),infos.toString(),Utils.getDoubleFromZahl(infos.get("String_Node_Str")),Utils.getDoubleFromZahl(kurs[0]),kurs[1],Math.rint(Utils.getDoubleFromZahl(kurs[0]) * Utils.getDoubleFromZahl(infos.get("String_Node_Str")) * 100 / 100),kurs[1],d,infos.get("String_Node_Str"));
      }
    }
    infos=null;
    try {
      page=page.getAnchorByText("String_Node_Str").click();
      seiten.add(page.asXml());
    }
 catch (    com.gargoylesoftware.htmlunit.ElementNotFoundException e) {
      return;
    }
    List<HtmlTable> tabs=(List<HtmlTable>)page.getByXPath("String_Node_Str");
    if (tabs.size() == 0) {
      Utils.report((List<? extends HtmlElement>)page.getByXPath("String_Node_Str"));
      throw new ApplicationException("String_Node_Str");
    }
    ArrayList<HashMap<String,String>> liste=tableRowsToHashs(tabs.get(0));
    Utils.clearBestand(konto);
    double bestandswert=0;
    for (    HashMap<String,String> i : liste) {
      String[] bk=i.get("String_Node_Str").split("String_Node_Str");
      Utils.addBestand(konto,Utils.getDoubleFromZahl(i.get("String_Node_Str")),i.get("String_Node_Str"),Utils.getDoubleFromZahl(bk[0]),bk[1],Utils.getDoubleFromZahl(i.get("String_Node_Str")) * Utils.getDoubleFromZahl(bk[0]),bk[1],new Date());
      bestandswert+=Utils.getDoubleFromZahl(i.get("String_Node_Str")) * Utils.getDoubleFromZahl(bk[0]);
    }
    konto.setSaldo(bestandswert);
    konto.store();
  }
 catch (  IOException e) {
    throw new ApplicationException(e);
  }
 finally {
    try {
      debug(seiten,konto);
    }
 catch (    RemoteException e) {
      throw new ApplicationException(e);
    }
  }
}

Fixed version (ground truth):
public void run(Konto konto) throws ApplicationException {
  ArrayList<String> seiten=new ArrayList<String>();
  try {
    String username=konto.getKundennummer();
    String password=konto.getMeta(PROP_PASSWORD,null);
    if (username == null || username.length() == 0) {
      throw new ApplicationException(i18n.tr("String_Node_Str"));
    }
    try {
      if (password == null || password.length() == 0) {
        password=Application.getCallback().askPassword(getName());
      }
    }
 catch (    Exception e1) {
      e1.printStackTrace();
      throw new ApplicationException("String_Node_Str" + e1.getMessage());
    }
    final WebClient webClient=new WebClient(BrowserVersion.INTERNET_EXPLORER_8);
    webClient.setCssErrorHandler(new SilentCssErrorHandler());
    webClient.setRefreshHandler(new ThreadedRefreshHandler());
    webClient.getOptions().setJavaScriptEnabled(false);
    HtmlPage page=webClient.getPage("String_Node_Str");
    seiten.add(page.asXml());
    List<HtmlForm> forms=(List<HtmlForm>)page.getByXPath("String_Node_Str");
    if (forms.size() != 1) {
      Utils.report((List<? extends HtmlElement>)page.getByXPath("String_Node_Str"));
      throw new ApplicationException("String_Node_Str");
    }
    HtmlForm form=forms.get(0);
    form.getInputByName("String_Node_Str").setValueAttribute(username);
    form.getInputByName("String_Node_Str").setValueAttribute(password);
    HtmlInput input=form.getInputByName("String_Node_Str");
    page=input.click();
    seiten.add(page.asXml());
    try {
      page=page.getAnchorByText("String_Node_Str").click();
    }
 catch (    com.gargoylesoftware.htmlunit.ElementNotFoundException e) {
      Utils.report(page.getAnchors());
      throw new ApplicationException("String_Node_Str");
    }
    HashMap<String,String> infos=new HashMap<String,String>();
    DateFormat df=new SimpleDateFormat("String_Node_Str");
    for (    HtmlAnchor x : page.getAnchors()) {
      if (x.getAttribute("String_Node_Str").contains("String_Node_Str")) {
        infos.clear();
        page=x.click();
        seiten.add(page.asXml());
        DomNodeList<DomElement> list=page.getElementsByTagName("String_Node_Str");
        if (list.size() != 3) {
        }
        tohash(infos,(HtmlTable)list.get(2),false);
        tohash(infos,(HtmlTable)list.get(3),true);
        String[] kurs=((String)infos.get("String_Node_Str")).replaceAll("String_Node_Str","String_Node_Str").split("String_Node_Str");
        Date d;
        try {
          d=df.parse(infos.get("String_Node_Str").substring(0,10));
        }
 catch (        ParseException e) {
          throw new ApplicationException("String_Node_Str" + infos.get("String_Node_Str"));
        }
        Utils.addUmsatz(infos.get("String_Node_Str"),infos.get("String_Node_Str"),infos.get("String_Node_Str"),infos.toString(),Utils.getDoubleFromZahl(infos.get("String_Node_Str")),Utils.getDoubleFromZahl(kurs[0]),kurs[1],Math.rint(Utils.getDoubleFromZahl(kurs[0]) * Utils.getDoubleFromZahl(infos.get("String_Node_Str")) * 100 / 100),kurs[1],d,infos.get("String_Node_Str"));
      }
    }
    infos=null;
    try {
      page=page.getAnchorByText("String_Node_Str").click();
      seiten.add(page.asXml());
    }
 catch (    com.gargoylesoftware.htmlunit.ElementNotFoundException e) {
      Utils.report(page.getAnchors());
      throw new ApplicationException("String_Node_Str");
    }
    List<HtmlTable> tabs=(List<HtmlTable>)page.getByXPath("String_Node_Str");
    if (tabs.size() == 0) {
      Utils.report((List<? extends HtmlElement>)page.getByXPath("String_Node_Str"));
      throw new ApplicationException("String_Node_Str");
    }
    ArrayList<HashMap<String,String>> liste=tableRowsToHashs(tabs.get(0));
    Utils.clearBestand(konto);
    double bestandswert=0;
    for (    HashMap<String,String> i : liste) {
      String[] bk=i.get("String_Node_Str").split("String_Node_Str");
      Utils.addBestand(konto,Utils.getDoubleFromZahl(i.get("String_Node_Str")),i.get("String_Node_Str"),Utils.getDoubleFromZahl(bk[0]),bk[1],Utils.getDoubleFromZahl(i.get("String_Node_Str")) * Utils.getDoubleFromZahl(bk[0]),bk[1],new Date());
      bestandswert+=Utils.getDoubleFromZahl(i.get("String_Node_Str")) * Utils.getDoubleFromZahl(bk[0]);
    }
    konto.setSaldo(bestandswert);
    konto.store();
  }
 catch (  IOException e) {
    throw new ApplicationException(e);
  }
 finally {
    try {
      debug(seiten,konto);
    }
 catch (    RemoteException e) {
      throw new ApplicationException(e);
    }
  }
}