code: public static List<Schema> getSchemas(@NonNull final MetadataContext context, final String catalog,
                                            final boolean nonempty)
              throws SQLException {
          final List<Schema> schemas = context.getSchemas(catalog, null);
          if (schemas.isEmpty() && nonempty) {
              final Schema schema = new Schema();
              schema.virtual = true;
              schema.setTableCatalog(catalog);
              schema.setTableSchem("");
              if (!context.isSuppressionPath("schema/functions")) {
                  schema.getFunctions().addAll(context.getFunctions(
                          schema.getTableCatalog(), schema.getTableSchem(), null));
              }
              if (!context.isSuppressionPath("schema/procedures")) {
                  schema.getProcedures().addAll(context.getProcedures(
                          schema.getTableCatalog(), schema.getTableSchem(), null));
              }
              if (!context.isSuppressionPath("schema/tables")) {
                  schema.getTables().addAll(context.getTables(
                          schema.getTableCatalog(), schema.getTableSchem(), null, null));
              }
              if (!context.isSuppressionPath("schema/UDTs")) {
                  schema.getUDTs().addAll(context.getUDTs(
                          schema.getTableCatalog(), schema.getTableSchem(), null, null));
              }
              schemas.add(schema);
          }
          return schemas;
      }
docs: Invokes {@link #getSchemas(java.lang.String, java.lang.String)} on given {@code context} with given {@code
  catalog}.
  
  @param context  the context
  @param catalog  the value for the first parameter of {@link #getSchemas(java.lang.String, java.lang.String)}.
  @param nonempty a flag for non empty
  @return a list of schemas
  @throws SQLException if a database error occurs.