code: def set_dirty_and_flush_changes(non_const_func):
      
  
      def flush_changes(self, *args, **kwargs):
          rval = non_const_func(self, *args, **kwargs)
          self._dirty = True
          self.write()
          return rval
      # END wrapper method
      flush_changes.__name__ = non_const_func.__name__
      return flush_changes
docs: Return method that checks whether given non constant function may be called.
      If so, the instance will be set dirty.
      Additionally, we flush the changes right to disk