Program: 73962
Project: 73962
Buggy source:
/** 
 * Iterate on the given list of constraints to find a minimal subset that still contains an error. This can be done efficiently in a manner similar to binary search. The pseudocode is as follows: <pre> errorList = constraintList size = errorList.size()/2 while (size >= 1): for (testList of size size in errorList): (i.e. errorlist[0:size] , errorlist[size+1, 2*size], ...) if _resolveProperties(errorList - testList) == error: errorList = errorList - testList; size = errorList.size()/2 continue while loop; size = size/2; </pre>
 * @param toplevel
 * @param toplevelHelper
 * @param constraintList A list of constraints that causes an error
 * @throws TypeConflictException
 * @throws PropertyResolutionException
 * @throws IllegalActionException
 */
private void _doDeltaIteration(NamedObj toplevel,PropertyConstraintHelper toplevelHelper,List<Inequality> constraintList) throws TypeConflictException, PropertyResolutionException, IllegalActionException {
  List<Inequality> errorList=constraintList;
  int blockSize=errorList.size() / 2;
  WHILE_LOOP:   while (blockSize >= 1) {
    for (int i=0; i < errorList.size(); i+=blockSize) {
      List<Inequality> testList=new LinkedList<Inequality>(errorList);
      testList.removeAll(errorList.subList(i,Math.min(errorList.size(),i + blockSize)));
      if (testList.size() > 0) {
        _resolveProperties(toplevel,toplevelHelper,testList);
        if (checkForErrors()) {
          errorList=testList;
          blockSize=errorList.size() / 2;
          continue WHILE_LOOP;
        }
      }
    }
    blockSize/=2;
    System.err.println("String_Node_Str" + blockSize);
  }
  System.out.println(errorList);
  _resolveProperties(toplevel,toplevelHelper,errorList);
}

Fixed version (ground truth):
/** 
 * Iterate on the given list of constraints to find a minimal subset that still contains an error. This can be done efficiently in a manner similar to binary search. The pseudocode is as follows: <pre> errorList = constraintList size = errorList.size()/2 while (size >= 1): for (testList of size size in errorList): (i.e. errorlist[0:size] , errorlist[size+1, 2*size], ...) if _resolveProperties(errorList - testList) == error: errorList = errorList - testList; size = errorList.size()/2 continue while loop; size = size/2; </pre>
 * @param toplevel
 * @param toplevelHelper
 * @param constraintList A list of constraints that causes an error
 * @throws TypeConflictException
 * @throws PropertyResolutionException
 * @throws IllegalActionException
 */
private void _doDeltaIteration(NamedObj toplevel,PropertyConstraintHelper toplevelHelper,List<Inequality> constraintList) throws TypeConflictException, PropertyResolutionException, IllegalActionException {
  List<Inequality> errorList=constraintList;
  int blockSize=errorList.size() / 2;
  WHILE_LOOP:   while (blockSize >= 1) {
    for (int i=0; i < errorList.size(); i+=blockSize) {
      List<Inequality> testList=new LinkedList<Inequality>(errorList);
      testList.removeAll(errorList.subList(i,Math.min(errorList.size(),i + blockSize)));
      if (testList.size() > 0) {
        _resolvedProperties.clear();
        _resolveProperties(toplevel,toplevelHelper,testList);
        if (checkForErrors()) {
          errorList=testList;
          blockSize=errorList.size() / 2;
          continue WHILE_LOOP;
        }
      }
    }
    blockSize/=2;
    System.err.println("String_Node_Str" + blockSize);
  }
  System.out.println(errorList);
  _resolvedProperties.clear();
  _resolveProperties(toplevel,toplevelHelper,errorList);
}