Program: 20158
Project: 20158
Buggy source:
public CurrentWeather getCurrentCondition(String data) throws WeatherLibException {
  CurrentWeather cWeather=new CurrentWeather();
  Weather weather=new Weather();
  try {
    JSONObject rootObj=new JSONObject(data);
    JSONObject jObj=getObject("String_Node_Str",rootObj);
    JSONObject dObj=getObject("String_Node_Str",jObj);
    Location loc=new Location();
    loc.setLatitude(getFloat("String_Node_Str",dObj));
    loc.setLongitude(getFloat("String_Node_Str",dObj));
    loc.setCountry(getString("String_Node_Str",dObj));
    loc.setCity(getString("String_Node_Str",dObj));
    weather.location=loc;
    weather.currentCondition.setDescr(getString("String_Node_Str",jObj));
    weather.currentCondition.setIcon(getString("String_Node_Str",jObj));
    if (codeProvider != null)     weather.currentCondition.setWeatherCode(codeProvider.getWeatherCode(weather.currentCondition.getIcon()));
    String relUm=getString("String_Node_Str",jObj);
    weather.currentCondition.setHumidity(Integer.parseInt(relUm.substring(0,relUm.length() - 1)));
    weather.wind.setDeg(getFloat("String_Node_Str",jObj));
    String trend=getString("String_Node_Str",jObj);
    int trendVal=-1;
    if ("String_Node_Str".equals(trend))     trendVal=0;
 else     trendVal=Integer.parseInt(trend);
    weather.currentCondition.setPressureTrend(trendVal);
    weather.currentCondition.setUV(getFloat("String_Node_Str",jObj));
    weather.currentCondition.setSolarRadiation(getString("String_Node_Str",jObj));
    if (WeatherUtility.isMetric(config.unitSystem)) {
      weather.currentCondition.setPressure(getInt("String_Node_Str",jObj));
      weather.temperature.setTemp(getFloat("String_Node_Str",jObj));
      weather.wind.setGust(getFloat("String_Node_Str",jObj));
      weather.wind.setSpeed(getFloat("String_Node_Str",jObj));
      weather.currentCondition.setVisibility(getFloat("String_Node_Str",jObj));
      weather.currentCondition.setFeelsLike(getFloat("String_Node_Str",jObj));
      weather.currentCondition.setDewPoint(getFloat("String_Node_Str",jObj));
      weather.currentCondition.setHeatIndex(getString("String_Node_Str",jObj));
    }
 else {
      weather.currentCondition.setPressure(getInt("String_Node_Str",jObj));
      weather.temperature.setTemp(getFloat("String_Node_Str",jObj));
      weather.wind.setGust(getFloat("String_Node_Str",jObj));
      weather.wind.setSpeed(getFloat("String_Node_Str",jObj));
      weather.currentCondition.setVisibility(getFloat("String_Node_Str",jObj));
      weather.currentCondition.setFeelsLike(getFloat("String_Node_Str",jObj));
      weather.currentCondition.setDewPoint(getFloat("String_Node_Str",jObj));
      weather.currentCondition.setHeatIndex(getString("String_Node_Str",jObj));
    }
    parseForecast(rootObj,weather);
    JSONObject moonObj=getObject("String_Node_Str",rootObj);
    weather.location.getAstronomy().percIllum=getString("String_Node_Str",moonObj);
    weather.location.getAstronomy().moonAge=getString("String_Node_Str",moonObj);
    weather.location.getAstronomy().moonPhaseDescr=getString("String_Node_Str",moonObj);
    weather.location.getAstronomy().hemisphere=getString("String_Node_Str",moonObj);
    SimpleDateFormat sdf=new SimpleDateFormat("String_Node_Str");
    JSONObject riseObj=getObject("String_Node_Str",moonObj);
    String d1=getString("String_Node_Str",riseObj) + "String_Node_Str" + getString("String_Node_Str",riseObj);
    try {
      weather.location.setSunrise(sdf.parse(d1).getTime());
    }
 catch (    ParseException e) {
    }
    JSONObject setObj=getObject("String_Node_Str",moonObj);
    String d2=getString("String_Node_Str",setObj) + "String_Node_Str" + getString("String_Node_Str",setObj);
    try {
      weather.location.setSunset(sdf.parse(d2).getTime());
    }
 catch (    ParseException e) {
    }
  }
 catch (  JSONException json) {
    throw new WeatherLibException(json);
  }
  cWeather.setUnit(units);
  cWeather.weather=weather;
  return cWeather;
}

Fixed version (ground truth):
public CurrentWeather getCurrentCondition(String data) throws WeatherLibException {
  CurrentWeather cWeather=new CurrentWeather();
  Weather weather=new Weather();
  try {
    JSONObject rootObj=new JSONObject(data);
    JSONObject jObj=getObject("String_Node_Str",rootObj);
    JSONObject dObj=getObject("String_Node_Str",jObj);
    Location loc=new Location();
    loc.setLatitude(getFloat("String_Node_Str",dObj));
    loc.setLongitude(getFloat("String_Node_Str",dObj));
    loc.setCountry(getString("String_Node_Str",dObj));
    loc.setCity(getString("String_Node_Str",dObj));
    weather.location=loc;
    weather.currentCondition.setDescr(getString("String_Node_Str",jObj));
    weather.currentCondition.setIcon(getString("String_Node_Str",jObj));
    if (codeProvider != null) {
      try {
        weather.currentCondition.setWeatherCode(codeProvider.getWeatherCode(weather.currentCondition.getIcon()));
      }
 catch (      Throwable t) {
        weather.currentCondition.setWeatherCode(WeatherCode.NOT_AVAILABLE);
      }
    }
    String relUm=getString("String_Node_Str",jObj);
    weather.currentCondition.setHumidity(Integer.parseInt(relUm.substring(0,relUm.length() - 1)));
    weather.wind.setDeg(getFloat("String_Node_Str",jObj));
    String trend=getString("String_Node_Str",jObj);
    int trendVal=-1;
    if ("String_Node_Str".equals(trend))     trendVal=0;
 else     trendVal=Integer.parseInt(trend);
    weather.currentCondition.setPressureTrend(trendVal);
    weather.currentCondition.setUV(getFloat("String_Node_Str",jObj));
    weather.currentCondition.setSolarRadiation(getString("String_Node_Str",jObj));
    if (WeatherUtility.isMetric(config.unitSystem)) {
      weather.currentCondition.setPressure(getInt("String_Node_Str",jObj));
      weather.temperature.setTemp(getFloat("String_Node_Str",jObj));
      weather.wind.setGust(getFloat("String_Node_Str",jObj));
      weather.wind.setSpeed(getFloat("String_Node_Str",jObj));
      weather.currentCondition.setVisibility(getFloat("String_Node_Str",jObj));
      weather.currentCondition.setFeelsLike(getFloat("String_Node_Str",jObj));
      weather.currentCondition.setDewPoint(getFloat("String_Node_Str",jObj));
      weather.currentCondition.setHeatIndex(getString("String_Node_Str",jObj));
    }
 else {
      weather.currentCondition.setPressure(getInt("String_Node_Str",jObj));
      weather.temperature.setTemp(getFloat("String_Node_Str",jObj));
      weather.wind.setGust(getFloat("String_Node_Str",jObj));
      weather.wind.setSpeed(getFloat("String_Node_Str",jObj));
      weather.currentCondition.setVisibility(getFloat("String_Node_Str",jObj));
      weather.currentCondition.setFeelsLike(getFloat("String_Node_Str",jObj));
      weather.currentCondition.setDewPoint(getFloat("String_Node_Str",jObj));
      weather.currentCondition.setHeatIndex(getString("String_Node_Str",jObj));
    }
    parseForecast(rootObj,weather);
    JSONObject moonObj=getObject("String_Node_Str",rootObj);
    weather.location.getAstronomy().percIllum=getString("String_Node_Str",moonObj);
    weather.location.getAstronomy().moonAge=getString("String_Node_Str",moonObj);
    weather.location.getAstronomy().moonPhaseDescr=getString("String_Node_Str",moonObj);
    weather.location.getAstronomy().hemisphere=getString("String_Node_Str",moonObj);
    SimpleDateFormat sdf=new SimpleDateFormat("String_Node_Str");
    JSONObject riseObj=getObject("String_Node_Str",moonObj);
    String d1=getString("String_Node_Str",riseObj) + "String_Node_Str" + getString("String_Node_Str",riseObj);
    try {
      weather.location.setSunrise(sdf.parse(d1).getTime());
    }
 catch (    ParseException e) {
    }
    JSONObject setObj=getObject("String_Node_Str",moonObj);
    String d2=getString("String_Node_Str",setObj) + "String_Node_Str" + getString("String_Node_Str",setObj);
    try {
      weather.location.setSunset(sdf.parse(d2).getTime());
    }
 catch (    ParseException e) {
    }
  }
 catch (  JSONException json) {
    throw new WeatherLibException(json);
  }
  cWeather.setUnit(units);
  cWeather.weather=weather;
  return cWeather;
}