Program: 84278
Project: 84278
Buggy source:
public String[] generateStatements(Database database) throws UnsupportedChangeException {
  List<String> sql=new ArrayList<String>();
  String alterTable="String_Node_Str" + getTableName() + "String_Node_Str"+ getColumn().getName()+ "String_Node_Str"+ database.getColumnType(getColumn());
  if (column.getConstraints() != null && column.getConstraints().isNullable() != null && !column.getConstraints().isNullable()) {
    alterTable+="String_Node_Str";
  }
 else {
    alterTable+="String_Node_Str";
  }
  sql.add(alterTable);
  if (database instanceof DB2Database) {
    sql.add("String_Node_Str" + getTableName() + "String_Node_Str");
  }
  if (getColumn().getDefaultValue() != null || getColumn().getDefaultValueBoolean() != null || getColumn().getDefaultValueDate() != null || getColumn().getDefaultValueNumeric() != null) {
    AddDefaultValueChange change=new AddDefaultValueChange();
    change.setTableName(getTableName());
    change.setColumnName(getColumn().getName());
    change.setDefaultValue(getColumn().getDefaultValue());
    change.setDefaultValueNumeric(getColumn().getDefaultValueNumeric());
    change.setDefaultValueDate(getColumn().getDefaultValueDate());
    change.setDefaultValueBoolean(getColumn().getDefaultValueBoolean());
    sql.addAll(Arrays.asList(change.generateStatements(database)));
  }
  if (getColumn().getConstraints() != null) {
    if (getColumn().getConstraints().isPrimaryKey() != null && getColumn().getConstraints().isPrimaryKey()) {
      AddPrimaryKeyChange change=new AddPrimaryKeyChange();
      change.setTableName(getTableName());
      change.setColumnNames(getColumn().getName());
      sql.addAll(Arrays.asList(change.generateStatements(database)));
    }
    if (getColumn().getConstraints().isNullable() != null && !getColumn().getConstraints().isNullable()) {
      AddNotNullConstraintChange change=new AddNotNullConstraintChange();
      change.setTableName(getTableName());
      change.setColumnName(getColumn().getName());
      change.setColumnDataType(getColumn().getType());
      sql.addAll(Arrays.asList(change.generateStatements(database)));
    }
  }
  return sql.toArray(new String[sql.size()]);
}

Fixed version (ground truth):
public String[] generateStatements(Database database) throws UnsupportedChangeException {
  List<String> sql=new ArrayList<String>();
  String alterTable="String_Node_Str" + getTableName() + "String_Node_Str"+ getColumn().getName()+ "String_Node_Str"+ database.getColumnType(getColumn());
  if (column.getConstraints() != null) {
    if (column.getConstraints().isNullable() != null && !column.getConstraints().isNullable()) {
      alterTable+="String_Node_Str";
    }
 else {
    }
    if (column.getDefaultValue() != null || column.getDefaultValueBoolean() != null || column.getDefaultValueDate() != null || column.getDefaultValueNumeric() != null) {
      alterTable+="String_Node_Str" + column.getDefaultColumnValue(database);
    }
  }
  sql.add(alterTable);
  if (database instanceof DB2Database) {
    sql.add("String_Node_Str" + getTableName() + "String_Node_Str");
  }
  if (getColumn().getConstraints() != null) {
    if (getColumn().getConstraints().isPrimaryKey() != null && getColumn().getConstraints().isPrimaryKey()) {
      AddPrimaryKeyChange change=new AddPrimaryKeyChange();
      change.setTableName(getTableName());
      change.setColumnNames(getColumn().getName());
      sql.addAll(Arrays.asList(change.generateStatements(database)));
    }
  }
  return sql.toArray(new String[sql.size()]);
}