Program: 140422
Project: 140422
Buggy source:
public static boolean compare(IndicatorParameters indicatorParam,AbstractIndicatorParameter formParam){
  boolean same=true;
  TextParameters textParameters=indicatorParam.getTextParameter();
  DateParameters dateParameters=indicatorParam.getDateParameters();
switch (formParam.getFormEnum()) {
case BinsDesignerForm:
    BinsDesignerParameter binsParam=(BinsDesignerParameter)formParam;
  Domain newDomain=binsParam.getUserDomian();
Domain oldDomain=indicatorParam.getBins();
if (oldDomain != null) {
EList<RangeRestriction> ranges=oldDomain.getRanges();
EList<RangeRestriction> ranges2=newDomain.getRanges();
if (ranges.size() != ranges2.size()) {
  same=false;
}
for (int i=0; i < ranges2.size() && same; i++) {
  RangeRestriction d2=ranges2.get(i);
  RangeRestriction d1=ranges.get(i);
  double v1=((RealNumberValue)d1.getLowerValue()).getValue();
  double v2=((RealNumberValue)d2.getLowerValue()).getValue();
  if (v1 != v2) {
    same=false;
    break;
  }
  v1=((RealNumberValue)d1.getUpperValue()).getValue();
  v2=((RealNumberValue)d2.getUpperValue()).getValue();
  if (v1 != v2) {
    same=false;
    break;
  }
}
}
 else {
same=false;
}
if (indicatorParam.getTopN() != binsParam.getNumOfShown()) {
same=false;
}
break;
case TextLengthForm:
TextLengthParameter lengthParam=(TextLengthParameter)formParam;
if (textParameters == null || textParameters.isUseBlank() != lengthParam.isUseBlank() || textParameters.isUseNulls() != lengthParam.isUseNull()) {
same=false;
}
break;
case TextParametersForm:
TextParameter textParam=(TextParameter)formParam;
if (textParameters == null || textParameters.isIgnoreCase() != textParam.isIngoreCase() || indicatorParam.getTopN() != textParam.getNumOfShown()) {
same=false;
}
break;
case DataThresholdsForm:
same=checkDomain(formParam,indicatorParam.getDataValidDomain());
break;
case IndicatorThresholdsForm:
same=checkDomain(formParam,indicatorParam.getIndicatorValidDomain());
break;
case TimeSlicesForm:
TimeSlicesParameter timeParam=(TimeSlicesParameter)formParam;
DateGrain dateGrain=DateGrain.get(timeParam.getDataUnit());
if (dateParameters == null || dateGrain.compareTo(dateParameters.getDateAggregationType()) != 0 || timeParam.getNumOfShown() != indicatorParam.getTopN()) {
same=false;
}
break;
case NumbericNominalForm:
NumbericNominalParameter numbParam=(NumbericNominalParameter)formParam;
same=indicatorParam.getTopN() == numbParam.getNumberOfShown();
break;
case ExpectedValueForm:
ExpectedValueParameter expParam=(ExpectedValueParameter)formParam;
String oldValue=IndicatorHelper.getExpectedValue(indicatorParam);
String newValue=expParam.getExpectedValue();
if (oldValue != null && newValue != null) {
same=newValue.equals(oldValue);
}
 else {
same=false;
}
break;
default :
}
return same;
}

Fixed version (ground truth):
public static boolean compare(IndicatorParameters indicatorParam,AbstractIndicatorParameter formParam){
  boolean same=true;
  TextParameters textParameters=indicatorParam.getTextParameter();
  DateParameters dateParameters=indicatorParam.getDateParameters();
switch (formParam.getFormEnum()) {
case BinsDesignerForm:
    BinsDesignerParameter binsParam=(BinsDesignerParameter)formParam;
  Domain newDomain=binsParam.getUserDomian();
Domain oldDomain=indicatorParam.getBins();
if (newDomain == null) {
newDomain=DomainHelper.createContiguousClosedBinsIntoDomain("String_Node_Str",binsParam.getNumOfBins(),binsParam.getMinValue(),binsParam.getMaxValue());
}
if (oldDomain != null) {
EList<RangeRestriction> ranges=oldDomain.getRanges();
EList<RangeRestriction> ranges2=newDomain.getRanges();
if (ranges.size() != ranges2.size()) {
same=false;
}
for (int i=0; i < ranges2.size() && same; i++) {
RangeRestriction d2=ranges2.get(i);
RangeRestriction d1=ranges.get(i);
double v1=((RealNumberValue)d1.getLowerValue()).getValue();
double v2=((RealNumberValue)d2.getLowerValue()).getValue();
if (v1 != v2) {
  same=false;
  break;
}
v1=((RealNumberValue)d1.getUpperValue()).getValue();
v2=((RealNumberValue)d2.getUpperValue()).getValue();
if (v1 != v2) {
  same=false;
  break;
}
}
}
 else {
same=false;
}
if (indicatorParam.getTopN() != binsParam.getNumOfShown()) {
same=false;
}
break;
case TextLengthForm:
TextLengthParameter lengthParam=(TextLengthParameter)formParam;
if (textParameters == null || textParameters.isUseBlank() != lengthParam.isUseBlank() || textParameters.isUseNulls() != lengthParam.isUseNull()) {
same=false;
}
break;
case TextParametersForm:
TextParameter textParam=(TextParameter)formParam;
if (textParameters == null || textParameters.isIgnoreCase() != textParam.isIngoreCase() || indicatorParam.getTopN() != textParam.getNumOfShown()) {
same=false;
}
break;
case DataThresholdsForm:
same=checkDomain(formParam,indicatorParam.getDataValidDomain());
break;
case IndicatorThresholdsForm:
same=checkDomain(formParam,indicatorParam.getIndicatorValidDomain());
break;
case TimeSlicesForm:
TimeSlicesParameter timeParam=(TimeSlicesParameter)formParam;
DateGrain dateGrain=DateGrain.get(timeParam.getDataUnit());
if (dateParameters == null || dateGrain.compareTo(dateParameters.getDateAggregationType()) != 0 || timeParam.getNumOfShown() != indicatorParam.getTopN()) {
same=false;
}
break;
case NumbericNominalForm:
NumbericNominalParameter numbParam=(NumbericNominalParameter)formParam;
same=indicatorParam.getTopN() == numbParam.getNumberOfShown();
break;
case ExpectedValueForm:
ExpectedValueParameter expParam=(ExpectedValueParameter)formParam;
String oldValue=IndicatorHelper.getExpectedValue(indicatorParam);
String newValue=expParam.getExpectedValue();
if (oldValue != null && newValue != null) {
same=newValue.equals(oldValue);
}
 else {
same=false;
}
break;
default :
}
return same;
}