@Override
public List<DbCommand> getSchemaChangeCommands(SchemaChange change, SchemaChangeContext context) {
List<DbCommand> commands = new ArrayList<>();
Method method = schemaChangeMethods.get(change.getClass());
if (null == method) {
method = Reflection.findMethod(this.getClass(),
"createSchemaChangeCommands",
SchemaChangeContext.class, change.getClass(), List.class);
if (null == method) {
throw new UnsupportedChangeException("Unsupported change '" + change.getClass().getSimpleName() + "'", change);
}
schemaChangeMethods.put(change.getClass(), method);
}
Reflection.invokeMethod(method, this, context, change, commands);
return commands;
}