@Override
  protected void addTo(DatabaseObject foundObject, DatabaseSnapshot snapshot)
      throws DatabaseException, InvalidExampleException {
    if (!snapshot.getSnapshotControl().shouldInclude(Table.class)) {
      return;
    }

    if (foundObject instanceof Schema) {

      Database database = snapshot.getDatabase();
      Schema schema = (Schema) foundObject;

      List<CachedRow> tableMetaDataRs = null;
      try {
        tableMetaDataRs =
            ((JdbcDatabaseSnapshot) snapshot)
                .getMetaData()
                .getTables(
                    ((AbstractJdbcDatabase) database).getJdbcCatalogName(schema),
                    ((AbstractJdbcDatabase) database).getJdbcSchemaName(schema),
                    null,
                    new String[] {"TABLE"});
        for (CachedRow row : tableMetaDataRs) {
          String tableName = row.getString("TABLE_NAME");
          Table tableExample =
              (Table)
                  new Table().setName(cleanNameFromDatabase(tableName, database)).setSchema(schema);

          schema.addDatabaseObject(tableExample);
        }
      } catch (SQLException e) {
        throw new DatabaseException(e);
      }
    }
  }