processChange(currentModel, desiredModel, (RemoveColumnChange)change); change.apply(currentModel);
RemoveColumnChange removeColumnChange = (RemoveColumnChange)change;     if (!removeColumnChange.getColumn().isPrimaryKey()) { processChange(currentModel, desiredModel, removeColumnChange); change.apply(currentModel, getPlatform().isDelimitedIdentifierModeOn()); changeIt.remove(); } } } for (Iterator changeIt = changes.iterator(); changeIt.hasNext();) { TableChange change = (TableChange)changeIt.next();    if ((change instanceof AddPrimaryKeyChange) && !pkColumnAdded) { processChange(currentModel, desiredModel, (AddPrimaryKeyChange)change); change.apply(currentModel, getPlatform().isDelimitedIdentifierModeOn());
    protected void processTableStructureChanges(Database currentModel, Database desiredModel, Table sourceTable, Table targetTable, Map parameters, List changes) throws IOException    {        // First we drop primary keys as necessary        for (Iterator changeIt = changes.iterator(); changeIt.hasNext();)        {            TableChange change = (TableChange)changeIt.next();            if (change instanceof RemovePrimaryKeyChange)            {                processChange(currentModel, desiredModel, (RemovePrimaryKeyChange)change);                change.apply(currentModel);                changeIt.remove();            }            else if (change instanceof PrimaryKeyChange)            {                PrimaryKeyChange       pkChange       = (PrimaryKeyChange)change;                RemovePrimaryKeyChange removePkChange = new RemovePrimaryKeyChange(pkChange.getChangedTable(),                                                                                   pkChange.getOldPrimaryKeyColumns());                processChange(currentModel, desiredModel, removePkChange);                removePkChange.apply(currentModel);            }        }        for (Iterator changeIt = changes.iterator(); changeIt.hasNext();)        {            TableChange change = (TableChange)changeIt.next();            if (change instanceof AddColumnChange)            {                processChange(currentModel, desiredModel, (AddColumnChange)change);                change.apply(currentModel);                changeIt.remove();            }            else if (change instanceof RemoveColumnChange)            {                processChange(currentModel, desiredModel, (RemoveColumnChange)change);                change.apply(currentModel);                changeIt.remove();            }        }        super.processTableStructureChanges(currentModel, desiredModel, sourceTable, targetTable, parameters, changes);    }