code: public DatabaseSnapshot createSnapshot(DatabaseObject[] examples, Database database,
                                             SnapshotControl snapshotControl)
              throws DatabaseException, InvalidExampleException {
          DatabaseConnection conn = database.getConnection();
          if (conn == null) {
              return new EmptyDatabaseSnapshot(database, snapshotControl);
          }
          if (conn instanceof OfflineConnection) {
              DatabaseSnapshot snapshot = ((OfflineConnection) conn).getSnapshot(examples);
              if (snapshot == null) {
                  throw new DatabaseException("No snapshotFile parameter specified for offline database");
              }
              return snapshot;
          }
          return new JdbcDatabaseSnapshot(examples, database, snapshotControl);
      }
docs: Creates a database snapshot for a given array of DatabaseObjects
  
  @param examples        an array of DatabaseObjects objects
  @param database        the database to work on
  @param snapshotControl the options/settings for snapshot generation
  @return a database snapshot that includes all objects matching the specification
  @throws DatabaseException       if a problem occurs during snapshotting
  @throws InvalidExampleException if the given catalog/schema combinations are invalid (e.g. duplicates)