code: @InterfaceAudience.Public
      public void replaceDatabase(String databaseName,
                                  InputStream databaseStream,
                                  Map<String, InputStream> attachmentStreams)
              throws CouchbaseLiteException {
          replaceDatabase(databaseName, databaseStream,
                  attachmentStreams == null ? null : attachmentStreams.entrySet().iterator());
      }
docs: Replaces or installs a database from a file.
  <p/>
  This is primarily used to install a canned database
  on first launch of an app, in which case you should first check .exists to avoid replacing the
  database if it exists already. The canned database would have been copied into your app bundle
  at build time. This property is deprecated for the new .cblite2 database file. If the database
  file is a directory and has the .cblite2 extension,
  use -replaceDatabaseNamed:withDatabaseDir:error: instead.
  
  @param databaseName      The name of the target Database to replace or create.
  @param databaseStream    InputStream on the source Database file.
  @param attachmentStreams Map of the associated source Attachments, or null if there are no attachments.
  The Map key is the name of the attachment, the map value is an InputStream for
  the attachment contents. If you wish to control the order that the attachments
  will be processed, use a LinkedHashMap, SortedMap or similar and the iteration order
  will be honoured.