Program: 20155
Project: 20155
Buggy source:
public CurrentWeather getCurrentCondition(String data) throws WeatherLibException {
  CurrentWeather cWeather=new CurrentWeather();
  Weather weather=new Weather();
  try {
    JSONObject jObj=new JSONObject(data);
    Location loc=new Location();
    JSONObject coordObj=getObject("String_Node_Str",jObj);
    loc.setLatitude(getFloat("String_Node_Str",coordObj));
    loc.setLongitude(getFloat("String_Node_Str",coordObj));
    JSONObject sysObj=getObject("String_Node_Str",jObj);
    loc.setCountry(getString("String_Node_Str",sysObj));
    loc.setSunrise(getInt("String_Node_Str",sysObj));
    loc.setSunset(getInt("String_Node_Str",sysObj));
    loc.setCity(getString("String_Node_Str",jObj));
    weather.location=loc;
    JSONArray jArr=jObj.getJSONArray("String_Node_Str");
    JSONObject JSONWeather=jArr.getJSONObject(0);
    weather.currentCondition.setWeatherId(getInt("String_Node_Str",JSONWeather));
    if (codeProvider != null)     weather.currentCondition.setWeatherCode(codeProvider.getWeatherCode(String.valueOf(weather.currentCondition.getWeatherId())));
    weather.currentCondition.setDescr(getString("String_Node_Str",JSONWeather));
    weather.currentCondition.setCondition(getString("String_Node_Str",JSONWeather));
    weather.currentCondition.setIcon(getString("String_Node_Str",JSONWeather));
    JSONObject mainObj=getObject("String_Node_Str",jObj);
    weather.currentCondition.setHumidity(getInt("String_Node_Str",mainObj));
    weather.currentCondition.setPressure(getFloat("String_Node_Str",mainObj));
    weather.currentCondition.setPressureGroundLevel(getFloat("String_Node_Str",mainObj));
    weather.currentCondition.setPressureSeaLevel(getFloat("String_Node_Str",mainObj));
    weather.temperature.setMaxTemp(getFloat("String_Node_Str",mainObj));
    weather.temperature.setMinTemp(getFloat("String_Node_Str",mainObj));
    weather.temperature.setTemp(getFloat("String_Node_Str",mainObj));
    JSONObject wObj=getObject("String_Node_Str",jObj);
    weather.wind.setSpeed(getFloat("String_Node_Str",wObj));
    weather.wind.setDeg(getFloat("String_Node_Str",wObj));
    weather.wind.setGust((float)wObj.optDouble("String_Node_Str"));
    JSONObject cObj=getObject("String_Node_Str",jObj);
    weather.clouds.setPerc(getInt("String_Node_Str",cObj));
    JSONObject rObj=jObj.optJSONObject("String_Node_Str");
    if (rObj != null) {
      float amm1=(float)rObj.optDouble("String_Node_Str");
      if (amm1 > 0) {
        weather.rain[0].setAmmount(amm1);
        weather.rain[0].setTime("String_Node_Str");
      }
      float amm3=(float)rObj.optDouble("String_Node_Str");
      if (amm3 > 0) {
        weather.rain[1].setAmmount(amm3);
        weather.rain[1].setTime("String_Node_Str");
      }
    }
    JSONObject sObj=jObj.optJSONObject("String_Node_Str");
    if (sObj != null) {
      weather.snow.setAmmount((float)sObj.optDouble("String_Node_Str"));
      weather.snow.setTime("String_Node_Str");
    }
  }
 catch (  JSONException json) {
    json.printStackTrace();
    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 jObj=new JSONObject(data);
    Location loc=new Location();
    JSONObject coordObj=getObject("String_Node_Str",jObj);
    loc.setLatitude(getFloat("String_Node_Str",coordObj));
    loc.setLongitude(getFloat("String_Node_Str",coordObj));
    JSONObject sysObj=getObject("String_Node_Str",jObj);
    loc.setCountry(getString("String_Node_Str",sysObj));
    loc.setSunrise(getInt("String_Node_Str",sysObj));
    loc.setSunset(getInt("String_Node_Str",sysObj));
    loc.setCity(getString("String_Node_Str",jObj));
    weather.location=loc;
    JSONArray jArr=jObj.getJSONArray("String_Node_Str");
    JSONObject JSONWeather=jArr.getJSONObject(0);
    weather.currentCondition.setWeatherId(getInt("String_Node_Str",JSONWeather));
    if (codeProvider != null) {
      try {
        weather.currentCondition.setWeatherCode(codeProvider.getWeatherCode(String.valueOf(weather.currentCondition.getWeatherId())));
      }
 catch (      Throwable t) {
        weather.currentCondition.setWeatherCode(WeatherCode.NOT_AVAILABLE);
      }
    }
    weather.currentCondition.setDescr(getString("String_Node_Str",JSONWeather));
    weather.currentCondition.setCondition(getString("String_Node_Str",JSONWeather));
    weather.currentCondition.setIcon(getString("String_Node_Str",JSONWeather));
    JSONObject mainObj=getObject("String_Node_Str",jObj);
    weather.currentCondition.setHumidity(getInt("String_Node_Str",mainObj));
    weather.currentCondition.setPressure(getFloat("String_Node_Str",mainObj));
    weather.currentCondition.setPressureGroundLevel(getFloat("String_Node_Str",mainObj));
    weather.currentCondition.setPressureSeaLevel(getFloat("String_Node_Str",mainObj));
    weather.temperature.setMaxTemp(getFloat("String_Node_Str",mainObj));
    weather.temperature.setMinTemp(getFloat("String_Node_Str",mainObj));
    weather.temperature.setTemp(getFloat("String_Node_Str",mainObj));
    JSONObject wObj=getObject("String_Node_Str",jObj);
    weather.wind.setSpeed(getFloat("String_Node_Str",wObj));
    weather.wind.setDeg(getFloat("String_Node_Str",wObj));
    weather.wind.setGust((float)wObj.optDouble("String_Node_Str"));
    JSONObject cObj=getObject("String_Node_Str",jObj);
    weather.clouds.setPerc(getInt("String_Node_Str",cObj));
    JSONObject rObj=jObj.optJSONObject("String_Node_Str");
    if (rObj != null) {
      float amm1=(float)rObj.optDouble("String_Node_Str");
      if (amm1 > 0) {
        weather.rain[0].setAmmount(amm1);
        weather.rain[0].setTime("String_Node_Str");
      }
      float amm3=(float)rObj.optDouble("String_Node_Str");
      if (amm3 > 0) {
        weather.rain[1].setAmmount(amm3);
        weather.rain[1].setTime("String_Node_Str");
      }
    }
    JSONObject sObj=jObj.optJSONObject("String_Node_Str");
    if (sObj != null) {
      weather.snow.setAmmount((float)sObj.optDouble("String_Node_Str"));
      weather.snow.setTime("String_Node_Str");
    }
  }
 catch (  JSONException json) {
    json.printStackTrace();
    throw new WeatherLibException(json);
  }
  cWeather.setUnit(units);
  cWeather.weather=weather;
  return cWeather;
}