code: public List<Table> getTables(final String catalog, final String schemaPattern, final String tableNamePattern,
                                   final String[] types)
              throws SQLException {
          final List<Table> list = new ArrayList<>();
          try (ResultSet results = databaseMetadata.getTables(catalog, schemaPattern, tableNamePattern, types)) {
              if (results != null) {
                  bind(results, Table.class, list);
              }
          }
          return list;
      }
docs: Invokes {@link DatabaseMetaData#getTables(java.lang.String, java.lang.String, java.lang.String,
  java.lang.String[])} with given arguments and returns bound information.
  
  @param catalog          the value for {@code catalog} parameter
  @param schemaPattern    the value for {@code schemaPattern} parameter
  @param tableNamePattern the value for {@code tableNamePattern} parameter
  @param types            the value for {@code types} parameter
  @return a list of tables
  @throws SQLException if a database error occurs.