change.apply(currentModel);
change.apply(currentModel, getPlatform().isDelimitedIdentifierModeOn());
    protected void processTableStructureChanges(Database currentModel,                                                Database desiredModel,                                                Table    sourceTable,                                                Table    targetTable,                                                Map      parameters,                                                List     changes) throws IOException    {        // in order to utilize the ALTER TABLE ADD COLUMN BEFORE statement        // we have to apply the add column changes in the correct order        // thus we first gather all add column changes and then execute them        // Since we get them in target table column order, we can simply        // iterate backwards        ArrayList addColumnChanges = new ArrayList();        for (Iterator changeIt = changes.iterator(); changeIt.hasNext();)        {            TableChange change = (TableChange)changeIt.next();            if (change instanceof AddColumnChange)            {                addColumnChanges.add(change);                changeIt.remove();            }        }        for (ListIterator changeIt = addColumnChanges.listIterator(addColumnChanges.size()); changeIt.hasPrevious();)        {            AddColumnChange addColumnChange = (AddColumnChange)changeIt.previous();            processChange(currentModel, desiredModel, addColumnChange);            addColumnChange.apply(currentModel);            changeIt.remove();        }        for (Iterator changeIt = changes.iterator(); changeIt.hasNext();)        {            TableChange change = (TableChange)changeIt.next();            if (change instanceof RemoveColumnChange)             {                RemoveColumnChange removeColumnChange = (RemoveColumnChange)change;                // HsqlDb can only drop columns that are not part of a primary key                if (!removeColumnChange.getColumn().isPrimaryKey())                {                    processChange(currentModel, desiredModel, removeColumnChange);                    change.apply(currentModel);                    changeIt.remove();                }            }        }    }