Program: 5356
Project: 5356
Buggy source:
public int compareTo(C other){
  int comp=0;
  String this_cond, other_cond;
  NCLCompoundCondition other_comp;
  if (!(other instanceof NCLCompoundCondition))   return 1;
  other_comp=(NCLCompoundCondition)other;
  if (comp == 0) {
    if (getOperator() == null)     this_cond="String_Node_Str";
 else     this_cond=getOperator().toString();
    if (other_comp.getOperator() == null)     other_cond="String_Node_Str";
 else     other_cond=other_comp.getOperator().toString();
    comp=this_cond.compareTo(other_cond);
  }
  if (comp == 0) {
    int this_del, other_del;
    if (getDelay() == null)     this_del=0;
 else     this_del=getDelay();
    if (other_comp.getDelay() == null)     other_del=0;
 else     other_del=other_comp.getDelay();
    comp=this_del - other_del;
  }
  if (comp == 0) {
    if (getParamDelay() == null && other_comp.getParamDelay() == null)     comp=0;
 else     if (getParamDelay() != null && other_comp.getParamDelay() != null)     comp=getParamDelay().compareTo(other_comp.getParamDelay());
 else     comp=1;
  }
  if (comp == 0)   comp=conditions.size() - ((Set)other_comp.getConditions()).size();
  if (comp == 0) {
    Iterator it=other_comp.getConditions().iterator();
    for (    NCLCondition c : conditions) {
      NCLCondition other_c=(NCLCondition)it.next();
      comp=c.compareTo(other_c);
      if (comp != 0)       break;
    }
  }
  if (comp == 0)   comp=statements.size() - ((Set)other_comp.getStatements()).size();
  if (comp == 0) {
    Iterator it=other_comp.getStatements().iterator();
    for (    NCLStatement st : statements) {
      NCLStatement other_st=(NCLStatement)it.next();
      comp=st.compareTo(other_st);
      if (comp != 0)       break;
    }
  }
  if (comp != 0)   return 1;
 else   return 0;
}

Fixed version (ground truth):
public int compareTo(C other){
  int comp=0;
  String this_cond, other_cond;
  NCLCompoundCondition other_comp;
  if (!(other instanceof NCLCompoundCondition))   return 1;
  other_comp=(NCLCompoundCondition)other;
  if (comp == 0) {
    if (getOperator() == null)     this_cond="String_Node_Str";
 else     this_cond=getOperator().toString();
    if (other_comp.getOperator() == null)     other_cond="String_Node_Str";
 else     other_cond=other_comp.getOperator().toString();
    comp=this_cond.compareTo(other_cond);
  }
  if (comp == 0) {
    int this_del, other_del;
    if (getDelay() == null)     this_del=0;
 else     this_del=getDelay();
    if (other_comp.getDelay() == null)     other_del=0;
 else     other_del=other_comp.getDelay();
    comp=this_del - other_del;
  }
  if (comp == 0) {
    if (getParamDelay() == null && other_comp.getParamDelay() == null)     comp=0;
 else     if (getParamDelay() != null && other_comp.getParamDelay() != null)     comp=getParamDelay().compareTo(other_comp.getParamDelay());
 else     if (getParamDelay() == null)     comp=-1;
 else     comp=1;
  }
  if (comp == 0)   comp=conditions.size() - ((List)other_comp.getConditions()).size();
  if (comp == 0) {
    Iterator it=other_comp.getConditions().iterator();
    for (    NCLCondition c : conditions) {
      NCLCondition other_c=(NCLCondition)it.next();
      comp=c.compareTo(other_c);
      if (comp != 0)       break;
    }
  }
  if (comp == 0)   comp=statements.size() - ((List)other_comp.getStatements()).size();
  if (comp == 0) {
    Iterator it=other_comp.getStatements().iterator();
    for (    NCLStatement st : statements) {
      NCLStatement other_st=(NCLStatement)it.next();
      comp=st.compareTo(other_st);
      if (comp != 0)       break;
    }
  }
  return comp;
}