Program: 59526
Project: 59526
Buggy source:
public StockQuote(String symbol,String price,String change,String percent,String exchange,String volume,String name,String previousPrice){
  this.symbol=symbol;
  this.exchange=exchange;
  this.volume=volume;
  this.name=name;
  Double p0=null;
  boolean isFx=symbol.contains("String_Node_Str");
  if (isFx) {
    try {
      p0=Double.parseDouble(previousPrice);
    }
 catch (    Exception ignored) {
    }
  }
  Double p=null;
  if (!price.equals("String_Node_Str")) {
    try {
      p=Double.parseDouble(price);
      if (isFx) {
        this.price=NumberTools.getTrimmedDouble2(p,6);
      }
 else {
        this.price=NumberTools.getTrimmedDouble(p,6,4);
      }
    }
 catch (    Exception e) {
      this.price="String_Node_Str";
    }
    if (!this.isNonEmptyNumber(price) && p0 == null) {
      change="String_Node_Str";
    }
    if (!this.isNonEmptyNumber(percent) && p0 == null) {
      percent="String_Node_Str";
    }
  }
  Double c=null;
  if (this.isNonEmptyNumber(change)) {
    c=Double.parseDouble(change);
  }
 else   if (p0 != null && p != null) {
    c=p - p0;
  }
  if (c != null) {
    if (p != null && (p < 10 || isFx)) {
      this.change=NumberTools.getTrimmedDouble(c,5,3);
    }
 else {
      this.change=NumberTools.getTrimmedDouble(c,5);
    }
  }
  Double pc=null;
  if (this.isNonEmptyNumber(percent)) {
    pc=Double.parseDouble(percent.replace("String_Node_Str","String_Node_Str"));
  }
 else {
    if (c != null && p != null) {
      pc=(c / p) * 100;
    }
  }
  if (pc != null) {
    this.percent=String.format("String_Node_Str",pc) + "String_Node_Str";
  }
}

Fixed version (ground truth):
public StockQuote(String symbol,String price,String change,String percent,String exchange,String volume,String name,String previousPrice,Locale locale){
  this.symbol=symbol;
  this.exchange=exchange;
  this.volume=volume;
  this.name=name;
  Double p0=null;
  boolean isFx=symbol.contains("String_Node_Str");
  if (isFx) {
    try {
      p0=NumberTools.tryParseDouble(previousPrice,locale);
    }
 catch (    Exception ignored) {
    }
  }
  Double p=null;
  if (!price.equals("String_Node_Str")) {
    try {
      p=NumberTools.tryParseDouble(price,locale);
      if (isFx) {
        this.price=NumberTools.getTrimmedDouble2(p,6);
      }
 else {
        this.price=NumberTools.getTrimmedDouble(p,6,4);
      }
    }
 catch (    Exception e) {
      this.price="String_Node_Str";
    }
    if (!this.isNonEmptyNumber(price) && p0 == null) {
      change="String_Node_Str";
    }
    if (!this.isNonEmptyNumber(percent) && p0 == null) {
      percent="String_Node_Str";
    }
  }
  Double c=null;
  if (this.isNonEmptyNumber(change)) {
    try {
      c=NumberTools.tryParseDouble(change,locale);
    }
 catch (    ParseException ignored) {
    }
  }
 else   if (p0 != null && p != null) {
    c=p - p0;
  }
  if (c != null) {
    if (p != null && (p < 10 || isFx)) {
      this.change=NumberTools.getTrimmedDouble(c,5,3);
    }
 else {
      this.change=NumberTools.getTrimmedDouble(c,5);
    }
  }
  Double pc=null;
  if (this.isNonEmptyNumber(percent)) {
    try {
      pc=NumberTools.tryParseDouble(percent.replace("String_Node_Str","String_Node_Str"),locale);
    }
 catch (    ParseException ignored) {
    }
  }
 else {
    if (c != null && p != null) {
      pc=(c / p) * 100;
    }
  }
  if (pc != null) {
    this.percent=String.format("String_Node_Str",pc) + "String_Node_Str";
  }
}