code: public Task<DocumentT> findOneAndReplace(final Bson filter, final Bson replacement) {
      return dispatcher.dispatchTask(new Callable<DocumentT>() {
        @Override
        public DocumentT call() {
          return proxy.findOneAndReplace(filter, replacement);
        }
      });
    }
docs: Finds a document in the collection and replaces it with the given document
  
  @param filter the query filter
  @param replacement the document to replace the matched document with
  @return a task containing the resulting document