Program: 138097
Project: 138097
Buggy source:
@Override public boolean isSimilar(EObject obj1,EObject obj2) throws FactoryException {
  DatabaseConnection connection1=SwitchHelpers.DATABASECONNECTION_SWITCH.doSwitch(obj1);
  DatabaseConnection connection2=SwitchHelpers.DATABASECONNECTION_SWITCH.doSwitch(obj2);
  if (connection1 != null && connection2 != null) {
    changeUrl=ConnectionHelper.isUrlChanged(connection1);
  }
  if (changeUrl) {
    return false;
  }
 else {
    boolean result=false;
    if (obj1 instanceof Catalog && obj2 instanceof Catalog) {
      Catalog catalog1=(Catalog)obj1;
      Catalog catalog2=(Catalog)obj2;
      result=StringUtils.equalsIgnoreCase(catalog1.getName(),catalog2.getName());
    }
 else     if (obj1 instanceof Schema && obj2 instanceof Schema) {
      Schema schema1=(Schema)obj1;
      Schema schema2=(Schema)obj2;
      result=StringUtils.equalsIgnoreCase(schema1.getName(),schema2.getName());
    }
 else     if (obj1 instanceof TdTable && obj2 instanceof TdTable) {
      TdTable tdTable1=(TdTable)obj1;
      TdTable tdTable2=(TdTable)obj2;
      result=StringUtils.equalsIgnoreCase(tdTable1.getName(),tdTable2.getName());
    }
 else     if (obj1 instanceof TdView && obj2 instanceof TdView) {
      TdView tdView1=(TdView)obj1;
      TdView tdView2=(TdView)obj2;
      result=StringUtils.equalsIgnoreCase(tdView1.getName(),tdView2.getName());
    }
 else     if (obj1 instanceof TdColumn && obj2 instanceof TdColumn) {
      TdColumn tdColumn1=(TdColumn)obj1;
      TdColumn tdColumn2=(TdColumn)obj2;
      result=StringUtils.equalsIgnoreCase(tdColumn1.getName(),tdColumn2.getName()) && isSimilar(tdColumn1.getSqlDataType(),tdColumn2.getSqlDataType());
    }
 else     if (obj1 instanceof TaggedValue && obj2 instanceof TaggedValue) {
      TaggedValue taggedValue1=(TaggedValue)obj1;
      TaggedValue taggedValue2=(TaggedValue)obj2;
      result=StringUtils.equalsIgnoreCase(taggedValue1.getTag(),taggedValue2.getTag()) && StringUtils.equalsIgnoreCase(taggedValue1.getValue(),taggedValue2.getValue());
    }
 else     if (obj1 instanceof TdExpression && obj2 instanceof TdExpression) {
      TdExpression tdExpression1=(TdExpression)obj1;
      TdExpression tdExpression2=(TdExpression)obj2;
      result=StringUtils.equalsIgnoreCase(tdExpression1.getLanguage(),tdExpression2.getLanguage()) && StringUtils.equalsIgnoreCase(tdExpression1.getBody(),tdExpression2.getBody());
    }
 else     if (obj1 instanceof TdSqlDataType && obj2 instanceof TdSqlDataType) {
      TdSqlDataType tdExpression1=(TdSqlDataType)obj1;
      TdSqlDataType tdExpression2=(TdSqlDataType)obj2;
      result=StringUtils.equalsIgnoreCase(tdExpression1.getName(),tdExpression2.getName());
    }
 else {
      result=super.isSimilar(obj1,obj2);
    }
    return result;
  }
}

Fixed version (ground truth):
@Override public boolean isSimilar(EObject obj1,EObject obj2) throws FactoryException {
  DatabaseConnection connection1=SwitchHelpers.DATABASECONNECTION_SWITCH.doSwitch(obj1);
  DatabaseConnection connection2=SwitchHelpers.DATABASECONNECTION_SWITCH.doSwitch(obj2);
  if (connection1 != null && connection2 != null) {
    changeUrl=ConnectionHelper.isUrlChanged(connection1);
  }
  boolean result=true;
  if (obj1 instanceof Catalog && obj2 instanceof Catalog) {
    Catalog catalog1=(Catalog)obj1;
    Catalog catalog2=(Catalog)obj2;
    result=StringUtils.equalsIgnoreCase(catalog1.getName(),catalog2.getName());
  }
 else   if (obj1 instanceof Schema && obj2 instanceof Schema) {
    Schema schema1=(Schema)obj1;
    Schema schema2=(Schema)obj2;
    result=StringUtils.equalsIgnoreCase(schema1.getName(),schema2.getName());
  }
 else   if (obj1 instanceof TdTable && obj2 instanceof TdTable) {
    TdTable tdTable1=(TdTable)obj1;
    TdTable tdTable2=(TdTable)obj2;
    result=StringUtils.equalsIgnoreCase(tdTable1.getName(),tdTable2.getName());
  }
 else   if (obj1 instanceof TdView && obj2 instanceof TdView) {
    TdView tdView1=(TdView)obj1;
    TdView tdView2=(TdView)obj2;
    result=StringUtils.equalsIgnoreCase(tdView1.getName(),tdView2.getName());
  }
 else   if (obj1 instanceof TdColumn && obj2 instanceof TdColumn) {
    TdColumn tdColumn1=(TdColumn)obj1;
    TdColumn tdColumn2=(TdColumn)obj2;
    result=StringUtils.equalsIgnoreCase(tdColumn1.getName(),tdColumn2.getName()) && isSimilar(tdColumn1.getSqlDataType(),tdColumn2.getSqlDataType());
  }
 else   if (obj1 instanceof TaggedValue && obj2 instanceof TaggedValue) {
    TaggedValue taggedValue1=(TaggedValue)obj1;
    TaggedValue taggedValue2=(TaggedValue)obj2;
    result=StringUtils.equalsIgnoreCase(taggedValue1.getTag(),taggedValue2.getTag()) && StringUtils.equalsIgnoreCase(taggedValue1.getValue(),taggedValue2.getValue());
  }
 else   if (obj1 instanceof TdExpression && obj2 instanceof TdExpression) {
    TdExpression tdExpression1=(TdExpression)obj1;
    TdExpression tdExpression2=(TdExpression)obj2;
    result=StringUtils.equalsIgnoreCase(tdExpression1.getLanguage(),tdExpression2.getLanguage()) && StringUtils.equalsIgnoreCase(tdExpression1.getBody(),tdExpression2.getBody());
  }
 else   if (obj1 instanceof TdSqlDataType && obj2 instanceof TdSqlDataType) {
    TdSqlDataType tdExpression1=(TdSqlDataType)obj1;
    TdSqlDataType tdExpression2=(TdSqlDataType)obj2;
    result=StringUtils.equalsIgnoreCase(tdExpression1.getName(),tdExpression2.getName());
  }
  if (obj1 instanceof DatabaseConnection) {
    return true;
  }
 else   if (changeUrl && !result) {
    return false;
  }
  return true;
}