docs: def create(self, prov_document, prov_format=None, refresh=False, **props):
          """
          Create a document on ProvStore.
  
          :param prov_document: The document to be stored
          :param prov_format: The format of the document provided
          :param bool refresh: Whether or not to load back the document after saving
          :param dict props: Properties for this document [**name** (required), **public** = False]
          :return: This document itself but with a reference to the newly stored document
          :type prov_document: :py:class:`prov.model.ProvDocument` or :py:class:`str`
          :type prov_format: :py:class:`str` or None
          :rtype: :py:class:`provstore.document.Document`
          :raises ImmutableDocumentException: If this instance already refers to another document
          """
          if not self.abstract:
              raise ImmutableDocumentException()
  
          if isinstance(prov_document, ProvDocument):
              self._prov = prov_document
  
              prov_format = "json"
              prov_document = prov_document.serialize()
  
          self._id = self._api.post_document(prov_document, prov_format, **props)['id']
  
          if refresh:
              self.refresh()
          else:
              self._bundles = BundleManager(self._api, self)
  
          return self