Program: 130340
Project: 130340
Buggy source:
/** 
 * Verifies that the names of columns with a modification in the values between the start point and the end point is equals to the parameters.
 * @param < A >       The type of the assertion which call this method.
 * @param assertion The assertion which call this method.
 * @param info      Writable information about an assertion.
 * @param change    The change.
 * @param names     The names of the modified columns.
 * @return {@code this} assertion object.
 * @throws AssertionError If the names of the modified columns are different to the names in parameters.
 */
public static <A extends AbstractAssert>A hasModifiedColumns(A assertion,WritableAssertionInfo info,Change change,String... names){
  if (names == null) {
    throw new NullPointerException("String_Node_Str");
  }
  List<String> namesList=new ArrayList<String>();
  for (  String name : names) {
    if (name == null) {
      throw new NullPointerException("String_Node_Str");
    }
    namesList.add(name.toUpperCase());
  }
  Collections.sort(namesList);
  Integer[] indexesOfModifiedColumns=Changes.getIndexesOfModifiedColumns(change);
  String[] namesOfModifiedColumns=new String[names.length];
  List<String> columnsNameList=change.getColumnsNameList();
  for (int i=0; i < indexesOfModifiedColumns.length; i++) {
    namesOfModifiedColumns[i]=columnsNameList.get(indexesOfModifiedColumns[i]);
  }
  List<String> namesOfModifiedList=Arrays.asList(namesOfModifiedColumns);
  Collections.sort(namesOfModifiedList);
  if (!namesList.equals(namesOfModifiedList)) {
    throw failures.failure(info,shouldHaveModifications(namesOfModifiedColumns,names));
  }
  return assertion;
}

Fixed version (ground truth):
/** 
 * Verifies that the names of columns with a modification in the values between the start point and the end point is equals to the parameters.
 * @param < A >       The type of the assertion which call this method.
 * @param assertion The assertion which call this method.
 * @param info      Writable information about an assertion.
 * @param change    The change.
 * @param names     The names of the modified columns.
 * @return {@code this} assertion object.
 * @throws AssertionError If the names of the modified columns are different to the names in parameters.
 */
public static <A extends AbstractAssert>A hasModifiedColumns(A assertion,WritableAssertionInfo info,Change change,String... names){
  if (names == null) {
    throw new NullPointerException("String_Node_Str");
  }
  List<String> namesList=new ArrayList<>();
  for (  String name : names) {
    if (name == null) {
      throw new NullPointerException("String_Node_Str");
    }
    namesList.add(name.toUpperCase());
  }
  Collections.sort(namesList);
  Integer[] indexesOfModifiedColumns=Changes.getIndexesOfModifiedColumns(change);
  String[] namesOfModifiedColumns=new String[names.length];
  List<String> columnsNameList=change.getColumnsNameList();
  for (int i=0; i < indexesOfModifiedColumns.length; i++) {
    namesOfModifiedColumns[i]=columnsNameList.get(indexesOfModifiedColumns[i]);
  }
  List<String> namesOfModifiedList=Arrays.asList(namesOfModifiedColumns);
  Collections.sort(namesOfModifiedList);
  if (!namesList.equals(namesOfModifiedList)) {
    throw failures.failure(info,shouldHaveModifications(namesOfModifiedColumns,names));
  }
  return assertion;
}