code: def save(self, inplace=True, silent=False):
          
          modified_data = self._modified_data()
          if silent or bool(modified_data):
              # If metadata is to be set
              if 'metadata' in modified_data:
                  if hasattr(self, '_method'):
                      self._api.put(
                          url=self._URL['metadata'].format(id=self.id),
                          data=modified_data['metadata']
                      )
                  else:
                      self._api.patch(
                          url=self._URL['metadata'].format(id=self.id),
                          data=modified_data['metadata']
                      )
                  modified_data.pop('metadata')
              if 'tags' in modified_data:
                  self._api.put(
                      url=self._URL['tags'].format(id=self.id),
                      data=modified_data['tags']
                  )
                  modified_data.pop('tags')
              # Change everything else
              if bool(modified_data):
                  self._api.patch(
                      url=self._URL['get'].format(id=self.id), data=modified_data
                  )
          else:
              raise ResourceNotModified()
  
          return self.reload()
docs: Saves all modification to the file on the server. By default this
          method raises an error if you are trying to save an instance that was
          not changed. Set check_if_modified param to False to disable
          this behaviour.
          :param inplace: Apply edits to the current instance or get a new one.
          :param silent: If Raises exception if file wasn't modified.
          :raise ResourceNotModified
          :return: File instance.