class LiquibaseTableNamesFactory implements SingletonObject {

    private final SortedSet<LiquibaseTableNames> generators;

    private LiquibaseTableNamesFactory() {
        ServiceLocator serviceLocator = Scope.getCurrentScope().getServiceLocator();
        generators = new TreeSet<>(Comparator.comparingInt(LiquibaseTableNames::getOrder));
        generators.addAll(serviceLocator.findInstances(LiquibaseTableNames.class));
    }

    public List<String> getLiquibaseTableNames(Database database) {
        return generators.stream().flatMap(f -> f.getLiquibaseGeneratedTableNames(database).stream()).collect(Collectors.toList());
    }

    public void destroy(Database abstractJdbcDatabase) throws DatabaseException {<FILL_FUNCTION_BODY>}
}

        for (LiquibaseTableNames generator : generators) {
            generator.destroy(abstractJdbcDatabase);
            abstractJdbcDatabase.commit();
        }
    
<no_super_class>