docs: def save(self):
          """
              If its internal state is loaded than it will only updated the
              set properties but otherwise it will create a new document.
          """
  
          # TODO: Add option force_insert
  
          if not self.is_loaded and self.id is None or self.id == '':
              data = self.resource.post(data=self.data, collection=self.collection)
              self.id = data['_id']
              self.key = data['_key']
              self.revision = data['_rev']
              self.is_loaded = True
          else:
              data = self.resource(self.id).patch(data=self.data)
              self.revision = data['_rev']