Program: 59548
Project: 59548
Buggy source:
public static HashMap<String,HashMap<StockField,String>> getQuotes(Context context,String[] symbols){
  boolean hasFX=false;
  boolean hasGoogle=false;
  for (  String s : symbols) {
    if (s.contains("String_Node_Str"))     hasFX=true;
    if (s.contains("String_Node_Str") || s.contains("String_Node_Str"))     hasGoogle=true;
  }
  JSONObject fxData=new JSONObject();
  if (hasFX) {
    try {
      fxData=new JSONObject(URLData.getURLData(context,FX_URL,86400));
    }
 catch (    JSONException ignored) {
    }
  }
  JSONArray gData=new JSONArray();
  if (hasGoogle) {
    try {
      gData=new JSONArray(URLData.getURLData(context,GOOGLE_URL,300).replace("String_Node_Str","String_Node_Str"));
    }
 catch (    JSONException ignored) {
    }
  }
  HashMap<String,HashMap<StockField,String>> quotes=new HashMap<String,HashMap<StockField,String>>();
  StringBuilder sQuery=new StringBuilder();
  for (  String s : symbols) {
    if (s.equals("String_Node_Str"))     continue;
    if (!sQuery.toString().equals("String_Node_Str"))     sQuery.append("String_Node_Str");
    sQuery.append(s);
  }
  String url=BASE_URL + "String_Node_Str" + FORMAT+ "String_Node_Str"+ sQuery.toString();
  String response=URLData.getURLData(context,url,300);
  if (response.equals("String_Node_Str") || response.equals("String_Node_Str")) {
    return quotes;
  }
  for (  String s : symbols) {
    quotes.put(s,new HashMap<StockField,String>());
  }
  for (  String line : response.split("String_Node_Str")) {
    String[] values=line.replace("String_Node_Str","String_Node_Str").split("String_Node_Str",COUNT_FIELDS);
    if (values.length < COUNT_FIELDS) {
      continue;
    }
    if (gData.length() > 0 && values[0].equals("String_Node_Str")) {
      JSONObject dji;
      try {
        dji=gData.getJSONObject(0);
        values[0]="String_Node_Str";
        values[3]=((String)dji.get("String_Node_Str")).replace("String_Node_Str","String_Node_Str");
        values[4]=(String)dji.get("String_Node_Str");
        values[5]=(String)dji.get("String_Node_Str");
        values[6]="String_Node_Str";
        values[7]="String_Node_Str";
        values[8]="String_Node_Str";
      }
 catch (      JSONException ignored) {
      }
    }
    if (gData.length() > 0 && values[0].equals("String_Node_Str")) {
      JSONObject jsonObject;
      try {
        jsonObject=gData.getJSONObject(1);
        values[3]=((String)jsonObject.get("String_Node_Str")).replace("String_Node_Str","String_Node_Str");
        values[4]=(String)jsonObject.get("String_Node_Str");
        values[5]=(String)jsonObject.get("String_Node_Str");
        values[6]="String_Node_Str";
        values[7]="String_Node_Str";
        values[8]="String_Node_Str";
      }
 catch (      JSONException ignored) {
      }
    }
    if (!quotes.containsKey(values[0])) {
      continue;
    }
    Boolean isFX=values[0].contains("String_Node_Str");
    Double yesterdayPrice=null;
    if (isFX) {
      try {
        JSONObject item=fxData.getJSONObject(values[0]);
        yesterdayPrice=Double.parseDouble(item.getString("String_Node_Str"));
      }
 catch (      Exception ignored) {
      }
    }
    Double price=null;
    if (!values[3].equals("String_Node_Str")) {
      try {
        price=Double.parseDouble(values[3]);
        if (isFX)         quotes.get(values[0]).put(StockField.PRICE,Tools.getTrimmedDouble2(price,6));
 else         quotes.get(values[0]).put(StockField.PRICE,Tools.getTrimmedDouble(price,6,4));
      }
 catch (      Exception e) {
        try {
          quotes.get(values[0]).put(StockField.PRICE,"String_Node_Str");
        }
 catch (        Exception e1) {
          continue;
        }
      }
      if (values[4].equals("String_Node_Str") && yesterdayPrice == null) {
        values[4]="String_Node_Str";
      }
      if (values[5].equals("String_Node_Str") && yesterdayPrice == null) {
        values[5]="String_Node_Str";
      }
    }
    Double change=null;
    if (!values[4].equals("String_Node_Str")) {
      change=Double.parseDouble(values[4]);
    }
 else     if (yesterdayPrice != null && price != null) {
      change=price - yesterdayPrice;
    }
    if (change != null) {
      if (price != null && (price < 10 || isFX))       quotes.get(values[0]).put(StockField.CHANGE,Tools.getTrimmedDouble(change,5,3));
 else       quotes.get(values[0]).put(StockField.CHANGE,Tools.getTrimmedDouble(change,5));
    }
    Double pc=null;
    if (!values[5].equals("String_Node_Str")) {
      pc=Double.parseDouble(values[5].replace("String_Node_Str","String_Node_Str"));
    }
 else {
      if (change != null && price != null) {
        pc=(change / price) * 100;
      }
    }
    if (pc != null) {
      quotes.get(values[0]).put(StockField.PERCENT,String.format("String_Node_Str",pc) + "String_Node_Str");
    }
    quotes.get(values[0]).put(StockField.EXCHANGE,values[6]);
    quotes.get(values[0]).put(StockField.VOLUME,values[7]);
    quotes.get(values[0]).put(StockField.NAME,values[8]);
  }
  return quotes;
}

Fixed version (ground truth):
public static HashMap<String,HashMap<StockField,String>> getQuotes(Context context,String[] symbols){
  boolean hasFX=false;
  boolean hasGoogle=false;
  for (  String s : symbols) {
    if (s.contains("String_Node_Str"))     hasFX=true;
    if (s.contains("String_Node_Str") || s.contains("String_Node_Str"))     hasGoogle=true;
  }
  JSONObject fxData=new JSONObject();
  if (hasFX) {
    try {
      fxData=new JSONObject(URLData.getURLData(context,FX_URL,86400));
    }
 catch (    JSONException ignored) {
    }
  }
  JSONArray gData=new JSONArray();
  if (hasGoogle) {
    try {
      gData=new JSONArray(URLData.getURLData(context,GOOGLE_URL,300).replace("String_Node_Str","String_Node_Str"));
    }
 catch (    JSONException ignored) {
    }
  }
  HashMap<String,HashMap<StockField,String>> quotes=new HashMap<String,HashMap<StockField,String>>();
  StringBuilder sQuery=new StringBuilder();
  for (  String s : symbols) {
    if (s.equals("String_Node_Str"))     continue;
    if (!sQuery.toString().equals("String_Node_Str"))     sQuery.append("String_Node_Str");
    sQuery.append(s);
  }
  String url=BASE_URL + "String_Node_Str" + FORMAT+ "String_Node_Str"+ sQuery.toString();
  String response=URLData.getURLData(context,url,300);
  if (response.equals("String_Node_Str") || response.equals("String_Node_Str")) {
    return quotes;
  }
  for (  String s : symbols) {
    quotes.put(s,new HashMap<StockField,String>());
  }
  for (  String line : response.split("String_Node_Str")) {
    String[] values=line.replace("String_Node_Str","String_Node_Str").split("String_Node_Str",COUNT_FIELDS);
    if (values.length < COUNT_FIELDS) {
      continue;
    }
    if (gData.length() > 0 && values[0].equals("String_Node_Str")) {
      JSONObject dji;
      try {
        dji=gData.getJSONObject(0);
        values[0]="String_Node_Str";
        values[3]=((String)dji.get("String_Node_Str")).replace("String_Node_Str","String_Node_Str");
        values[4]=(String)dji.get("String_Node_Str");
        values[5]=(String)dji.get("String_Node_Str");
        values[6]="String_Node_Str";
        values[7]="String_Node_Str";
        values[8]="String_Node_Str";
      }
 catch (      JSONException ignored) {
      }
    }
    if (gData.length() > 0 && values[0].equals("String_Node_Str")) {
      JSONObject jsonObject;
      try {
        jsonObject=gData.getJSONObject(1);
        values[3]=((String)jsonObject.get("String_Node_Str")).replace("String_Node_Str","String_Node_Str");
        values[4]=(String)jsonObject.get("String_Node_Str");
        values[5]=(String)jsonObject.get("String_Node_Str");
        values[6]="String_Node_Str";
        values[7]="String_Node_Str";
        values[8]="String_Node_Str";
      }
 catch (      JSONException ignored) {
      }
    }
    if (!quotes.containsKey(values[0])) {
      continue;
    }
    Boolean isFX=values[0].contains("String_Node_Str");
    Double yesterdayPrice=null;
    if (isFX) {
      try {
        JSONObject item=fxData.getJSONObject(values[0]);
        yesterdayPrice=Double.parseDouble(item.getString("String_Node_Str"));
      }
 catch (      Exception ignored) {
      }
    }
    Double price=null;
    if (!values[3].equals("String_Node_Str")) {
      try {
        price=Double.parseDouble(values[3]);
        if (isFX)         quotes.get(values[0]).put(StockField.PRICE,Tools.getTrimmedDouble2(price,6));
 else         quotes.get(values[0]).put(StockField.PRICE,Tools.getTrimmedDouble(price,6,4));
      }
 catch (      Exception e) {
        try {
          quotes.get(values[0]).put(StockField.PRICE,"String_Node_Str");
        }
 catch (        Exception e1) {
          continue;
        }
      }
      if ((values[4].equals("String_Node_Str") || values[4].equals("String_Node_Str")) && yesterdayPrice == null) {
        values[4]="String_Node_Str";
      }
      if ((values[5].equals("String_Node_Str") || values[5].equals("String_Node_Str")) && yesterdayPrice == null) {
        values[5]="String_Node_Str";
      }
    }
    Double change=null;
    if (!values[4].equals("String_Node_Str") && !values[4].equals("String_Node_Str")) {
      change=Double.parseDouble(values[4]);
    }
 else     if (yesterdayPrice != null && price != null) {
      change=price - yesterdayPrice;
    }
    if (change != null) {
      if (price != null && (price < 10 || isFX))       quotes.get(values[0]).put(StockField.CHANGE,Tools.getTrimmedDouble(change,5,3));
 else       quotes.get(values[0]).put(StockField.CHANGE,Tools.getTrimmedDouble(change,5));
    }
    Double pc=null;
    if (!values[5].equals("String_Node_Str") && !values[5].equals("String_Node_Str")) {
      pc=Double.parseDouble(values[5].replace("String_Node_Str","String_Node_Str"));
    }
 else {
      if (change != null && price != null) {
        pc=(change / price) * 100;
      }
    }
    if (pc != null) {
      quotes.get(values[0]).put(StockField.PERCENT,String.format("String_Node_Str",pc) + "String_Node_Str");
    }
    quotes.get(values[0]).put(StockField.EXCHANGE,values[6]);
    quotes.get(values[0]).put(StockField.VOLUME,values[7]);
    quotes.get(values[0]).put(StockField.NAME,values[8]);
  }
  return quotes;
}