addPkChange.apply(currentModel);
addPkChange.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);            }        }        // Next we add/remove columns        // While Oracle has an ALTER TABLE MODIFY statement, it is somewhat limited        // esp. if there is data in the table, so we don't use it        for (Iterator changeIt = changes.iterator(); changeIt.hasNext();)        {            TableChange change = (TableChange)changeIt.next();            if (change instanceof AddColumnChange)            {                AddColumnChange addColumnChange = (AddColumnChange)change;                // Oracle can only add not insert columns                if (addColumnChange.isAtEnd())                {                    processChange(currentModel, desiredModel, addColumnChange);                    change.apply(currentModel);                    changeIt.remove();                }            }            else if (change instanceof RemoveColumnChange)            {                processChange(currentModel, desiredModel, (RemoveColumnChange)change);                change.apply(currentModel);                changeIt.remove();            }        }        // Finally we add primary keys        for (Iterator changeIt = changes.iterator(); changeIt.hasNext();)        {            TableChange change = (TableChange)changeIt.next();            if (change instanceof AddPrimaryKeyChange)            {                processChange(currentModel, desiredModel, (AddPrimaryKeyChange)change);                change.apply(currentModel);                changeIt.remove();            }            else if (change instanceof PrimaryKeyChange)            {                PrimaryKeyChange    pkChange    = (PrimaryKeyChange)change;                AddPrimaryKeyChange addPkChange = new AddPrimaryKeyChange(pkChange.getChangedTable(),                                                                          pkChange.getNewPrimaryKeyColumns());                processChange(currentModel, desiredModel, addPkChange);                addPkChange.apply(currentModel);                changeIt.remove();            }        }    }