Program: 35395
Project: 35395
Buggy source:
public int compare(DashboardContact p1,DashboardContact p2){
  if (sortField.equals(ContactDTO.TYPE)) {
    return compareNullableStrings(ContactModelType.getName(p1.getContact().getType()),ContactModelType.getName(p2.getContact().getType()));
  }
  if (sortField.equals(ContactDTO.NAME)) {
    return compareNullableStrings(p1.getContact().getName(),p2.getContact().getName());
  }
  if (sortField.equals(ContactDTO.FIRSTNAME)) {
    return compareNullableStrings(p1.getContact().getFirstname(),p2.getContact().getFirstname());
  }
  if (sortField.equals(ContactHistory.FORMATTED_CHANGE_TYPE)) {
    return compareNullableStrings(p1.getLastChange().getFormattedChangeType(),p2.getLastChange().getFormattedChangeType());
  }
  if (sortField.equals(ContactHistory.SUBJECT)) {
    return compareNullableStrings(p1.getLastChange().getSubject(),p2.getLastChange().getSubject());
  }
  if (sortField.equals(ContactHistory.FORMATTED_VALUE)) {
    return compareNullableStrings(p1.getLastChange().getFormattedValue(),p2.getLastChange().getFormattedValue());
  }
  if (sortField.equals(ContactDTO.EMAIL)) {
    return compareNullableStrings(p1.getContact().getEmail(),p2.getContact().getEmail());
  }
  if (sortField.equals(ContactDTO.ID)) {
    return compareNullableStrings(String.valueOf(p1.getContact().getId()),String.valueOf(p2.getContact().getId()));
  }
  if (sortField.equals(ContactDTO.PARENT)) {
    ContactDTO org1=p1.getContact().getParent();
    ContactDTO org2=p2.getContact().getParent();
    String nom1=org1 == null ? "String_Node_Str" : org1.getOrganizationName();
    String nom2=org2 == null ? "String_Node_Str" : org2.getOrganizationName();
    return compareNullableStrings(nom1,nom2);
  }
  if (sortField.equals(ContactDTO.ROOT)) {
    ContactDTO org1=p1.getContact().getRoot();
    ContactDTO org2=p2.getContact().getRoot();
    String nom1=org1 == null ? "String_Node_Str" : org1.getOrganizationName();
    String nom2=org2 == null ? "String_Node_Str" : org2.getOrganizationName();
    return compareNullableStrings(nom1,nom2);
  }
  if (sortField.equals(ContactHistory.UPDATED_AT)) {
    return compareNullableDates(p1.getLastChange().getUpdatedAt(),p2.getLastChange().getUpdatedAt());
  }
  if (sortField.equals(ContactHistory.COMMENT)) {
    return compareNullableStrings(p1.getLastChange().getComment(),p2.getLastChange().getComment());
  }
  return 0;
}

Fixed version (ground truth):
public int compare(DashboardContact p1,DashboardContact p2){
  if (sortField.equals(ContactDTO.TYPE)) {
    return compareNullableStrings(ContactModelType.getName(p1.getContact().getType()),ContactModelType.getName(p2.getContact().getType()));
  }
  if (sortField.equals(ContactDTO.NAME)) {
    return compareNullableStrings(p1.getContact().getName(),p2.getContact().getName());
  }
  if (sortField.equals(ContactDTO.FIRSTNAME)) {
    return compareNullableStrings(p1.getContact().getFirstname(),p2.getContact().getFirstname());
  }
  if (sortField.equals(ContactHistory.FORMATTED_CHANGE_TYPE)) {
    return compareNullableStrings(p1.getLastChange().getFormattedChangeType(),p2.getLastChange().getFormattedChangeType());
  }
  if (sortField.equals(ContactHistory.SUBJECT)) {
    return compareNullableStrings(p1.getLastChange().getSubject(),p2.getLastChange().getSubject());
  }
  if (sortField.equals(ContactHistory.FORMATTED_VALUE)) {
    return compareNullableStrings(p1.getLastChange().getFormattedValue(),p2.getLastChange().getFormattedValue());
  }
  if (sortField.equals(ContactDTO.EMAIL)) {
    return compareNullableStrings(p1.getContact().getEmail(),p2.getContact().getEmail());
  }
  if (sortField.equals(ContactDTO.ID)) {
    return compareNullableStrings(String.valueOf(p1.getContact().getId()),String.valueOf(p2.getContact().getId()));
  }
  if (sortField.equals(ContactDTO.PARENT)) {
    ContactDTO org1=p1.getContact().getParent();
    ContactDTO org2=p2.getContact().getParent();
    String nom1=org1 == null ? "String_Node_Str" : org1.getOrganizationName();
    String nom2=org2 == null ? "String_Node_Str" : org2.getOrganizationName();
    return compareNullableStrings(nom1,nom2);
  }
  if (sortField.equals(ContactDTO.ROOT)) {
    ContactDTO org1=p1.getContact().getRoot();
    ContactDTO org2=p2.getContact().getRoot();
    String nom1=org1 == null ? "String_Node_Str" : org1.getOrganizationName();
    String nom2=org2 == null ? "String_Node_Str" : org2.getOrganizationName();
    return compareNullableStrings(nom1,nom2);
  }
  if (sortField.equals(ContactHistory.UPDATED_AT)) {
    Date d1=p1.getLastChange() != null ? p1.getLastChange().getUpdatedAt() : null;
    Date d2=p2.getLastChange() != null ? p2.getLastChange().getUpdatedAt() : null;
    return compareNullableDates(d1,d2);
  }
  if (sortField.equals(ContactHistory.COMMENT)) {
    return compareNullableStrings(p1.getLastChange().getComment(),p2.getLastChange().getComment());
  }
  return 0;
}